[pypy-commit] pypy ppc-jit-backend: emit_int_is_zero convert to optimized count leading zero algorithm
edelsohn
noreply at buildbot.pypy.org
Tue Aug 23 03:58:19 CEST 2011
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)
More information about the pypy-commit
mailing list