[pypy-commit] pypy ppc-jit-backend: Use rlwinm for PPC32 zero-extend

edelsohn noreply at buildbot.pypy.org
Wed Nov 2 19:00:14 CET 2011


Author: edelsohn
Branch: ppc-jit-backend
Changeset: r48672:21ca802d37d8
Date: 2011-11-02 14:00 -0400
http://bitbucket.org/pypy/pypy/changeset/21ca802d37d8/

Log:	Use rlwinm for PPC32 zero-extend

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
@@ -669,8 +669,7 @@
         if size == 1:
             if not signed: #unsigned char
                 if IS_PPC32:
-                    self.mc.load_imm(r.r0, 0xFF)
-                    self.mc.and_(resloc.value, resloc.value, r.r0.value)
+                    self.mc.rlwinm(resloc.value, resloc.value, 0, 24, 31)
                 else:
                     self.mc.rldicl(resloc.value, resloc.value, 0, 56)
             else:
@@ -678,9 +677,7 @@
         elif size == 2:
             if not signed:
                 if IS_PPC_32:
-                    self.mc.load_imm(r.r0, 16)
-                    self.mc.slw(resloc.value, resloc.value, r.r0.value)
-                    self.mc.srw(resloc.value, resloc.value, r.r0.value)
+                    self.mc.rlwinm(resloc.value, resloc.value, 0, 16, 31)
                 else:
                     self.mc.rldicl(resloc.value, resloc.value, 0, 48)
             else:


More information about the pypy-commit mailing list