aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2017-02-20 02:51:31 +0100
committerMike Pall <mike>2017-02-20 02:51:31 +0100
commit4416e885d28c0f49d2c7bb3f9630ab23c22fbc9a (patch)
tree23a968e51205a9f9ccf254ea96a9e100af87499c
parent019fb9d1e92b6521a3db2c15c8d0f6922d5250e6 (diff)
downloadluajit-4416e885d28c0f49d2c7bb3f9630ab23c22fbc9a.tar.gz
luajit-4416e885d28c0f49d2c7bb3f9630ab23c22fbc9a.tar.bz2
luajit-4416e885d28c0f49d2c7bb3f9630ab23c22fbc9a.zip
Fix FOLD rules for math.abs() and FP negation.
Broken since SIMD constants were switched to IR_FLOAD REF_NIL.
-rw-r--r--src/lj_opt_fold.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c
index 11f670b2..408811f2 100644
--- a/src/lj_opt_fold.c
+++ b/src/lj_opt_fold.c
@@ -173,8 +173,6 @@ LJFOLD(ADD KNUM KNUM)
173LJFOLD(SUB KNUM KNUM) 173LJFOLD(SUB KNUM KNUM)
174LJFOLD(MUL KNUM KNUM) 174LJFOLD(MUL KNUM KNUM)
175LJFOLD(DIV KNUM KNUM) 175LJFOLD(DIV KNUM KNUM)
176LJFOLD(NEG KNUM KNUM)
177LJFOLD(ABS KNUM KNUM)
178LJFOLD(ATAN2 KNUM KNUM) 176LJFOLD(ATAN2 KNUM KNUM)
179LJFOLD(LDEXP KNUM KNUM) 177LJFOLD(LDEXP KNUM KNUM)
180LJFOLD(MIN KNUM KNUM) 178LJFOLD(MIN KNUM KNUM)
@@ -187,6 +185,15 @@ LJFOLDF(kfold_numarith)
187 return lj_ir_knum(J, y); 185 return lj_ir_knum(J, y);
188} 186}
189 187
188LJFOLD(NEG KNUM FLOAD)
189LJFOLD(ABS KNUM FLOAD)
190LJFOLDF(kfold_numabsneg)
191{
192 lua_Number a = knumleft;
193 lua_Number y = lj_vm_foldarith(a, a, fins->o - IR_ADD);
194 return lj_ir_knum(J, y);
195}
196
190LJFOLD(LDEXP KNUM KINT) 197LJFOLD(LDEXP KNUM KINT)
191LJFOLDF(kfold_ldexp) 198LJFOLDF(kfold_ldexp)
192{ 199{
@@ -916,13 +923,13 @@ LJFOLDF(shortcut_round)
916 return NEXTFOLD; 923 return NEXTFOLD;
917} 924}
918 925
919LJFOLD(ABS ABS KNUM) 926LJFOLD(ABS ABS FLOAD)
920LJFOLDF(shortcut_left) 927LJFOLDF(shortcut_left)
921{ 928{
922 return LEFTFOLD; /* f(g(x)) ==> g(x) */ 929 return LEFTFOLD; /* f(g(x)) ==> g(x) */
923} 930}
924 931
925LJFOLD(ABS NEG KNUM) 932LJFOLD(ABS NEG FLOAD)
926LJFOLDF(shortcut_dropleft) 933LJFOLDF(shortcut_dropleft)
927{ 934{
928 PHIBARRIER(fleft); 935 PHIBARRIER(fleft);