Author: hager <sven.ha...@uni-duesseldorf.de>
Branch: ppc-jit-backend
Changeset: r48208:2e644469f894
Date: 2011-10-18 15:49 +0200
http://bitbucket.org/pypy/pypy/changeset/2e644469f894/

Log:    Implemented further binary int operations.

diff --git a/pypy/jit/backend/ppc/ppcgen/opassembler.py 
b/pypy/jit/backend/ppc/ppcgen/opassembler.py
--- a/pypy/jit/backend/ppc/ppcgen/opassembler.py
+++ b/pypy/jit/backend/ppc/ppcgen/opassembler.py
@@ -83,6 +83,34 @@
     def emit_int_xor(self, op, arglocs, regalloc):
         l0, l1, res = arglocs
         self.mc.xor(res.value, l0.value, l1.value)
+        
+    def emit_int_lshift(self, op, arglocs, regalloc):
+        l0, l1, res = arglocs
+        if IS_PPC_32:
+            self.mc.slw(res.value, l0.value, l1.value)
+        else:
+            self.mc.sld(res.value, l0.value, l1.value)
+
+    def emit_int_rshift(self, op, arglocs, regalloc):
+        l0, l1, res = arglocs
+        if IS_PPC_32:
+            self.mc.sraw(res.value, l0.value, l1.value)
+        else:
+            self.mc.srad(res.value, l0.value, l1.value)
+
+    def emit_uint_rshift(self, op, arglocs, regalloc):
+        l0, l1, res = arglocs
+        if IS_PPC_32:
+            self.mc.srw(res.value, l0.value, l1.value)
+        else:
+            self.mc.srd(res.value, l0.value, l1.value)
+    
+    def emit_uint_floordiv(self, op, arglocs, regalloc):
+        l0, l1, res = arglocs
+        if IS_PPC_32:
+            self.mc.divwu(res.value, l0.value, l1.value)
+        else:
+            self.mc.divdu(res.value, l0.value, l1.value)
 
     emit_int_le = gen_emit_cmp_op(c.LE)   
 
diff --git a/pypy/jit/backend/ppc/ppcgen/regalloc.py 
b/pypy/jit/backend/ppc/ppcgen/regalloc.py
--- a/pypy/jit/backend/ppc/ppcgen/regalloc.py
+++ b/pypy/jit/backend/ppc/ppcgen/regalloc.py
@@ -231,6 +231,18 @@
     def prepare_int_xor(self, op):
         return self.prepare_int_mul(op)
 
+    def prepare_int_lshift(self, op):
+        return self.prepare_int_mul(op)
+
+    def prepare_int_rshift(self, op):
+        return self.prepare_int_mul(op)
+
+    def prepare_uint_rshift(self, op):
+        return self.prepare_int_mul(op)
+
+    def prepare_uint_floordiv(self, op):
+        return self.prepare_int_mul(op)
+
     def prepare_finish(self, op):
         args = [locations.imm(self.frame_manager.frame_depth)]
         for i in range(op.numargs()):
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to