aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);