[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