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 pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit