From a5bdae8f23e1175b542b9bf4950d108c7d4d982f Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Mon, 6 Dec 2010 13:16:35 +0100 Subject: [PATCH] Fix 64 bit shifts in backend. Fix shift by 0. --- src/lj_asm.c | 4 ++-- 1 file 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) if (irref_isk(rref)) { /* Constant shifts. */ int shift; dest = ra_dest(as, ir, RSET_GPR); - shift = irr->i & 31; /* Handle shifts of 0..31 bits. */ + shift = irr->i & (irt_is64(ir->t) ? 63 : 31); switch (shift) { - case 0: return; + case 0: break; case 1: emit_rr(as, XO_SHIFT1, REX_64IR(ir, xs), dest); break; default: emit_shifti(as, REX_64IR(ir, xs), dest, shift); break; }