Răsfoiți Sursa

PPC: Fix fusion of floating-point XLOAD/XSTORE.

Mike Pall 13 ani în urmă
părinte
comite
509ca0f0db
1 a modificat fișierele cu 4 adăugiri și 3 ștergeri
  1. 4 3
      src/lj_asm_ppc.h

+ 4 - 3
src/lj_asm_ppc.h

@@ -187,10 +187,11 @@ static void asm_fusexref(ASMState *as, PPCIns pi, Reg rt, IRRef ref,
 	ref = ir->op2;
       } else {
 	/* NYI: Fuse ADD with constant. */
-	Reg right, left = ra_alloc2(as, ir, allow);
+	Reg tmp, right, left = ra_alloc2(as, ir, allow);
 	right = (left >> 8); left &= 255;
-	emit_fai(as, pi, rt, rt, ofs);
-	emit_tab(as, PPCI_ADD, rt, left, right);
+	tmp = ra_scratch(as, rset_exclude(rset_exclude(allow, left), right));
+	emit_fai(as, pi, rt, tmp, ofs);
+	emit_tab(as, PPCI_ADD, tmp, left, right);
 	return;
       }
       if (!checki16(ofs)) {