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