aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2012-08-15 21:08:00 +0200
committerMike Pall <mike>2012-08-15 21:08:00 +0200
commit0dd175d9e711f039c663d35e96c149b705bcf450 (patch)
tree5ed78a7d0fdccbc734ba19b0501daea1e587cd80 /src
parentff0a1f3f4eedf8e43eeb5cc3d2f8d051b648e0c0 (diff)
downloadluajit-0dd175d9e711f039c663d35e96c149b705bcf450.tar.gz
luajit-0dd175d9e711f039c663d35e96c149b705bcf450.tar.bz2
luajit-0dd175d9e711f039c663d35e96c149b705bcf450.zip
Fix last commit.
Diffstat (limited to 'src')
-rw-r--r--src/lj_opt_fold.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c
index 461fa621..ab8085d7 100644
--- a/src/lj_opt_fold.c
+++ b/src/lj_opt_fold.c
@@ -818,9 +818,9 @@ LJFOLDF(simplify_nummuldiv_k)
818 return RETRYFOLD; 818 return RETRYFOLD;
819 } else if (fins->o == IR_DIV) { /* x / 2^k ==> x * 2^-k */ 819 } else if (fins->o == IR_DIV) { /* x / 2^k ==> x * 2^-k */
820 uint64_t u = ir_knum(fright)->u64; 820 uint64_t u = ir_knum(fright)->u64;
821 if ((u & U64x(000fffff,ffffffff)) == 0 && 821 uint32_t ex = ((uint32_t)(u >> 52) & 0x7ff);
822 (uint32_t)(u = ((u >> 52) & 0x7ff)) - 1 < 0x7fd) { 822 if ((u & U64x(000fffff,ffffffff)) == 0 && ex - 1 < 0x7fd) {
823 u = (u & (uint64_t)1 << 63) | ((uint64_t)(0x7fe - (uint32_t)u) << 52); 823 u = (u & ((uint64_t)1 << 63)) | ((uint64_t)(0x7fe - ex) << 52);
824 fins->o = IR_MUL; /* Multiply by exact reciprocal. */ 824 fins->o = IR_MUL; /* Multiply by exact reciprocal. */
825 fins->op2 = lj_ir_knum_u64(J, u); 825 fins->op2 = lj_ir_knum_u64(J, u);
826 return RETRYFOLD; 826 return RETRYFOLD;