Author: edelsohn Branch: ppc-jit-backend Changeset: r46712:988a2c4303a0 Date: 2011-08-22 21:58 -0400 http://bitbucket.org/pypy/pypy/changeset/988a2c4303a0/
Log: emit_int_is_zero convert to optimized count leading zero algorithm diff --git a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py --- a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py +++ b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py @@ -1184,10 +1184,12 @@ self.xor(free_reg, free_reg, reg0) def emit_int_is_zero(self, op, cpu, reg0, free_reg): - self.xor(free_reg, free_reg, free_reg) - self.cmp(7, free_reg, reg0) - self.mfcr(free_reg) - self.rlwinm(free_reg, free_reg, 31, 31, 31) + if IS_PPC_32: + self.cntlzw(free_reg, reg0) + self.srwi(free_reg, free_reg, 5) + else: + self.cntlzd(free_reg, reg0) + self.srdi(free_reg, free_reg, 6) def emit_guard_true(self, op, cpu): arg0 = op.getarg(0) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit