aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2013-04-04 17:05:00 +0200
committerMike Pall <mike>2013-04-04 17:05:00 +0200
commit6ba65cefb0652d340f1729ce8d114cb3681e914a (patch)
treee425ee747d2fdd4c6e9d21148b2f9ae620a709d3
parent172bd953657904e1b133b99ec328271c4e69c52c (diff)
downloadluajit-6ba65cefb0652d340f1729ce8d114cb3681e914a.tar.gz
luajit-6ba65cefb0652d340f1729ce8d114cb3681e914a.tar.bz2
luajit-6ba65cefb0652d340f1729ce8d114cb3681e914a.zip
FFI/x86: Fix register allocation for 64 bit comparisons.
-rw-r--r--src/lj_asm_x86.h8
1 files changed, 2 insertions, 6 deletions
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h
index e9c53a09..28aa2791 100644
--- a/src/lj_asm_x86.h
+++ b/src/lj_asm_x86.h
@@ -2211,6 +2211,7 @@ static void asm_comp_int64(ASMState *as, IRIns *ir)
2211 lefthi = asm_fuseload(as, ir->op1, allow); 2211 lefthi = asm_fuseload(as, ir->op1, allow);
2212 } else { 2212 } else {
2213 lefthi = ra_alloc1(as, ir->op1, allow); 2213 lefthi = ra_alloc1(as, ir->op1, allow);
2214 rset_clear(allow, lefthi);
2214 righthi = asm_fuseload(as, ir->op2, allow); 2215 righthi = asm_fuseload(as, ir->op2, allow);
2215 if (righthi == RID_MRM) { 2216 if (righthi == RID_MRM) {
2216 if (as->mrm.base != RID_NONE) rset_clear(allow, as->mrm.base); 2217 if (as->mrm.base != RID_NONE) rset_clear(allow, as->mrm.base);
@@ -2226,13 +2227,8 @@ static void asm_comp_int64(ASMState *as, IRIns *ir)
2226 leftlo = asm_fuseload(as, (ir-1)->op1, allow); 2227 leftlo = asm_fuseload(as, (ir-1)->op1, allow);
2227 } else { 2228 } else {
2228 leftlo = ra_alloc1(as, (ir-1)->op1, allow); 2229 leftlo = ra_alloc1(as, (ir-1)->op1, allow);
2230 rset_clear(allow, leftlo);
2229 rightlo = asm_fuseload(as, (ir-1)->op2, allow); 2231 rightlo = asm_fuseload(as, (ir-1)->op2, allow);
2230 if (rightlo == RID_MRM) {
2231 if (as->mrm.base != RID_NONE) rset_clear(allow, as->mrm.base);
2232 if (as->mrm.idx != RID_NONE) rset_clear(allow, as->mrm.idx);
2233 } else {
2234 rset_clear(allow, rightlo);
2235 }
2236 } 2232 }
2237 2233
2238 /* All register allocations must be performed _before_ this point. */ 2234 /* All register allocations must be performed _before_ this point. */