Author: hager <sven.ha...@uni-duesseldorf.de> Branch: ppc-jit-backend Changeset: r46453:9b0988e7fa7f Date: 2011-08-12 10:14 +0200 http://bitbucket.org/pypy/pypy/changeset/9b0988e7fa7f/
Log: Changed emit_int_add, can now handle different combinations of ConstInt and BoxInt arguments. diff --git a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py --- a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py +++ b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py @@ -926,12 +926,22 @@ def emit_int_add(self, op, cpu): arg0 = op.getarg(0) arg1 = op.getarg(1) - regnum = cpu.reg_map[arg0] - if isinstance(arg1, ConstInt): - self.addi(cpu.next_free_register, regnum, arg1.value) - elif isinstance(arg1, BoxInt): - regnum2 = cpu.reg_map[arg1] - self.add(cpu.next_free_register, regnum, regnum2) + if isinstance(arg0, BoxInt): + regnum = cpu.reg_map[arg0] + if isinstance(arg1, ConstInt): + self.addi(cpu.next_free_register, regnum, arg1.value) + elif isinstance(arg1, BoxInt): + regnum2 = cpu.reg_map[arg1] + self.add(cpu.next_free_register, regnum, regnum2) + else: + regnum = cpu.get_next_register() + self.load_word(regnum, arg0.value) + if isinstance(arg1, ConstInt): + self.addi(cpu.next_free_register, regnum, arg1.value) + elif isinstance(arg1, BoxInt): + regnum2 = cpu.reg_map[arg1] + self.add(cpu.next_free_register, regnum, regnum2) + result = op.result cpu.reg_map[result] = cpu.next_free_register cpu.next_free_register += 1 _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit