From 9e0437240f1fb4bfa7248f6ec8be0e3181016119 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Mon, 11 Sep 2023 21:06:25 +0200 Subject: FFI: Fix 64 bit shift fold rules. Thanks to Peter Cawley. #1079 --- src/lj_opt_fold.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index d90477f6..743dfb07 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c @@ -377,10 +377,10 @@ static uint64_t kfold_int64arith(jit_State *J, uint64_t k1, uint64_t k2, case IR_BOR: k1 |= k2; break; case IR_BXOR: k1 ^= k2; break; case IR_BSHL: k1 <<= (k2 & 63); break; - case IR_BSHR: k1 = (int32_t)((uint32_t)k1 >> (k2 & 63)); break; - case IR_BSAR: k1 >>= (k2 & 63); break; - case IR_BROL: k1 = (int32_t)lj_rol((uint32_t)k1, (k2 & 63)); break; - case IR_BROR: k1 = (int32_t)lj_ror((uint32_t)k1, (k2 & 63)); break; + case IR_BSHR: k1 >>= (k2 & 63); break; + case IR_BSAR: k1 = (uint64_t)((int64_t)k1 >> (k2 & 63)); break; + case IR_BROL: k1 = lj_rol(k1, (k2 & 63)); break; + case IR_BROR: k1 = lj_ror(k1, (k2 & 63)); break; default: lj_assertJ(0, "bad IR op %d", op); break; } #else -- cgit v1.2.3-55-g6feb