diff options
| author | Mike Pall <mike> | 2017-02-20 02:51:31 +0100 |
|---|---|---|
| committer | Mike Pall <mike> | 2017-02-20 02:51:31 +0100 |
| commit | 4416e885d28c0f49d2c7bb3f9630ab23c22fbc9a (patch) | |
| tree | 23a968e51205a9f9ccf254ea96a9e100af87499c /src | |
| parent | 019fb9d1e92b6521a3db2c15c8d0f6922d5250e6 (diff) | |
| download | luajit-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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_opt_fold.c | 15 |
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) | |||
| 173 | LJFOLD(SUB KNUM KNUM) | 173 | LJFOLD(SUB KNUM KNUM) |
| 174 | LJFOLD(MUL KNUM KNUM) | 174 | LJFOLD(MUL KNUM KNUM) |
| 175 | LJFOLD(DIV KNUM KNUM) | 175 | LJFOLD(DIV KNUM KNUM) |
| 176 | LJFOLD(NEG KNUM KNUM) | ||
| 177 | LJFOLD(ABS KNUM KNUM) | ||
| 178 | LJFOLD(ATAN2 KNUM KNUM) | 176 | LJFOLD(ATAN2 KNUM KNUM) |
| 179 | LJFOLD(LDEXP KNUM KNUM) | 177 | LJFOLD(LDEXP KNUM KNUM) |
| 180 | LJFOLD(MIN KNUM KNUM) | 178 | LJFOLD(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 | ||
| 188 | LJFOLD(NEG KNUM FLOAD) | ||
| 189 | LJFOLD(ABS KNUM FLOAD) | ||
| 190 | LJFOLDF(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 | |||
| 190 | LJFOLD(LDEXP KNUM KINT) | 197 | LJFOLD(LDEXP KNUM KINT) |
| 191 | LJFOLDF(kfold_ldexp) | 198 | LJFOLDF(kfold_ldexp) |
| 192 | { | 199 | { |
| @@ -916,13 +923,13 @@ LJFOLDF(shortcut_round) | |||
| 916 | return NEXTFOLD; | 923 | return NEXTFOLD; |
| 917 | } | 924 | } |
| 918 | 925 | ||
| 919 | LJFOLD(ABS ABS KNUM) | 926 | LJFOLD(ABS ABS FLOAD) |
| 920 | LJFOLDF(shortcut_left) | 927 | LJFOLDF(shortcut_left) |
| 921 | { | 928 | { |
| 922 | return LEFTFOLD; /* f(g(x)) ==> g(x) */ | 929 | return LEFTFOLD; /* f(g(x)) ==> g(x) */ |
| 923 | } | 930 | } |
| 924 | 931 | ||
| 925 | LJFOLD(ABS NEG KNUM) | 932 | LJFOLD(ABS NEG FLOAD) |
| 926 | LJFOLDF(shortcut_dropleft) | 933 | LJFOLDF(shortcut_dropleft) |
| 927 | { | 934 | { |
| 928 | PHIBARRIER(fleft); | 935 | PHIBARRIER(fleft); |
