Author: Armin Rigo <[email protected]>
Branch: guard-compatible
Changeset: r84663:8fa185119bcf
Date: 2016-05-24 20:04 +0200
http://bitbucket.org/pypy/pypy/changeset/8fa185119bcf/

Log:    fixes, tests pass

diff --git a/rpython/jit/backend/ppc/guard_compat.py 
b/rpython/jit/backend/ppc/guard_compat.py
--- a/rpython/jit/backend/ppc/guard_compat.py
+++ b/rpython/jit/backend/ppc/guard_compat.py
@@ -37,8 +37,8 @@
 
     ofs1 = _real_number(BCLIST + BCLISTLENGTHOFS)
     ofs2 = _real_number(BCLIST + BCLISTITEMSOFS)
-    mc.ld(r10.value, r2.value, ofs1)        # ld  r10, [r2 + bc_list.length]
-    mc.addi(r2.value, r2.value, ofs2 - 8)   # add r2, r2, $bc_list.items - 8
+    assert ofs2 - 8 == ofs1
+    mc.ldu(r10.value, r2.value, ofs1)       # ldu  r10, [r2 + bc_list.length]
     mc.sldi(r10.value, r10.value, 3)        # sldi r10, r10, 3
     b_location = mc.get_relative_pos()
     mc.trap()                               # b loop
@@ -47,7 +47,8 @@
     mc.add(r2.value, r2.value, r10.value)   # add r2, r2, r10
     mc.addi(r2.value, r2.value, WORD)       # addi r2, r2, 8
     left_label = mc.get_relative_pos()
-    mc.srdi(r10.value, r10.value, 1)        # srdi r10, r10, 1
+    mc.rldicr(r10.value, r10.value, 63, 60) # rldicr r10, r10, 63, 60
+    # ^^ note: this does r10 = (r10 >> 1) & ~7
     mc.cmp_op(0, r10.value, 8, imm=True)    # cmp r10, 8
     blt_location = mc.get_relative_pos()
     mc.trap()                               # beq not_found
@@ -115,6 +116,9 @@
 
     assembler.guard_compat_search_tree = mc.materialize(assembler.cpu, [])
 
+    #print hex(assembler.guard_compat_search_tree)
+    #raw_input('press enter...')
+
 
 def generate_guard_compatible(assembler, guard_token, l0, bindex):
     mc = assembler.mc
diff --git a/rpython/jit/backend/ppc/regalloc.py 
b/rpython/jit/backend/ppc/regalloc.py
--- a/rpython/jit/backend/ppc/regalloc.py
+++ b/rpython/jit/backend/ppc/regalloc.py
@@ -616,8 +616,7 @@
         assert args[0].type == REF             # only supported case for now
         assert isinstance(args[1], ConstInt)   # by rewrite.py
         x = self.ensure_reg(args[0])
-        y = self.loc(args[1])
-        arglocs = self._prepare_guard(op, [x, y])
+        arglocs = self._prepare_guard(op, [x])
         return arglocs
 
     def prepare_guard_class(self, op):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to