diff options
author | Mike Pall <mike> | 2010-12-06 13:16:35 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2010-12-06 13:16:35 +0100 |
commit | a5bdae8f23e1175b542b9bf4950d108c7d4d982f (patch) | |
tree | 1724cf78e68d5845aca0072e0eb0be2a18fb775c /src | |
parent | 5270586a80ff3027cee380936506e6948a7c2e32 (diff) | |
download | luajit-a5bdae8f23e1175b542b9bf4950d108c7d4d982f.tar.gz luajit-a5bdae8f23e1175b542b9bf4950d108c7d4d982f.tar.bz2 luajit-a5bdae8f23e1175b542b9bf4950d108c7d4d982f.zip |
Fix 64 bit shifts in backend. Fix shift by 0.
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_asm.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lj_asm.c b/src/lj_asm.c index 53da1f1d..81529a56 100644 --- a/src/lj_asm.c +++ b/src/lj_asm.c | |||
@@ -2613,9 +2613,9 @@ static void asm_bitshift(ASMState *as, IRIns *ir, x86Shift xs) | |||
2613 | if (irref_isk(rref)) { /* Constant shifts. */ | 2613 | if (irref_isk(rref)) { /* Constant shifts. */ |
2614 | int shift; | 2614 | int shift; |
2615 | dest = ra_dest(as, ir, RSET_GPR); | 2615 | dest = ra_dest(as, ir, RSET_GPR); |
2616 | shift = irr->i & 31; /* Handle shifts of 0..31 bits. */ | 2616 | shift = irr->i & (irt_is64(ir->t) ? 63 : 31); |
2617 | switch (shift) { | 2617 | switch (shift) { |
2618 | case 0: return; | 2618 | case 0: break; |
2619 | case 1: emit_rr(as, XO_SHIFT1, REX_64IR(ir, xs), dest); break; | 2619 | case 1: emit_rr(as, XO_SHIFT1, REX_64IR(ir, xs), dest); break; |
2620 | default: emit_shifti(as, REX_64IR(ir, xs), dest, shift); break; | 2620 | default: emit_shifti(as, REX_64IR(ir, xs), dest, shift); break; |
2621 | } | 2621 | } |