Author: edelsohn
Branch: ppc-jit-backend
Changeset: r56858:5c95b56a8744
Date: 2012-08-25 23:12 -0400
http://bitbucket.org/pypy/pypy/changeset/5c95b56a8744/
Log: Optimize load_imm of 64 bit constant.
diff --git a/pypy/jit/backend/ppc/codebuilder.py
b/pypy/jit/backend/ppc/codebuilder.py
--- a/pypy/jit/backend/ppc/codebuilder.py
+++ b/pypy/jit/backend/ppc/codebuilder.py
@@ -966,8 +966,8 @@
expected += 1<<32
assert v == expected
- def load_imm(self, rD, word):
- rD = rD.value
+ def load_imm(self, dest_reg, word):
+ rD = dest_reg.value
if word <= 32767 and word >= -32768:
self.li(rD, word)
elif IS_PPC_32 or (word <= 2147483647 and word >= -2147483648):
@@ -975,11 +975,12 @@
if word & 0xFFFF != 0:
self.ori(rD, rD, lo(word))
else:
- self.lis(rD, highest(word))
- self.ori(rD, rD, higher(word))
+ self.load_imm(dest_reg, word>>32)
self.sldi(rD, rD, 32)
- self.oris(rD, rD, high(word))
- self.ori(rD, rD, lo(word))
+ if word & 0xFFFF0000 != 0:
+ self.oris(rD, rD, high(word))
+ if word & 0xFFFF != 0:
+ self.ori(rD, rD, lo(word))
def load_from_addr(self, rD, addr):
self.load_imm(rD, addr)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit