diff options
Diffstat (limited to 'src/lj_opt_fold.c')
-rw-r--r-- | src/lj_opt_fold.c | 27 |
1 files changed, 0 insertions, 27 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index 8200b240..34f70e27 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c | |||
@@ -1143,33 +1143,6 @@ LJFOLDF(simplify_numpow_xkint) | |||
1143 | return ref; | 1143 | return ref; |
1144 | } | 1144 | } |
1145 | 1145 | ||
1146 | LJFOLD(POW any KNUM) | ||
1147 | LJFOLDF(simplify_numpow_xknum) | ||
1148 | { | ||
1149 | if (knumright == 0.5) /* x ^ 0.5 ==> sqrt(x) */ | ||
1150 | return emitir(IRTN(IR_FPMATH), fins->op1, IRFPM_SQRT); | ||
1151 | return NEXTFOLD; | ||
1152 | } | ||
1153 | |||
1154 | LJFOLD(POW KNUM any) | ||
1155 | LJFOLDF(simplify_numpow_kx) | ||
1156 | { | ||
1157 | lua_Number n = knumleft; | ||
1158 | if (n == 2.0 && irt_isint(fright->t)) { /* 2.0 ^ i ==> ldexp(1.0, i) */ | ||
1159 | #if LJ_TARGET_X86ORX64 | ||
1160 | /* Different IR_LDEXP calling convention on x86/x64 requires conversion. */ | ||
1161 | fins->o = IR_CONV; | ||
1162 | fins->op1 = fins->op2; | ||
1163 | fins->op2 = IRCONV_NUM_INT; | ||
1164 | fins->op2 = (IRRef1)lj_opt_fold(J); | ||
1165 | #endif | ||
1166 | fins->op1 = (IRRef1)lj_ir_knum_one(J); | ||
1167 | fins->o = IR_LDEXP; | ||
1168 | return RETRYFOLD; | ||
1169 | } | ||
1170 | return NEXTFOLD; | ||
1171 | } | ||
1172 | |||
1173 | /* -- Simplify conversions ------------------------------------------------ */ | 1146 | /* -- Simplify conversions ------------------------------------------------ */ |
1174 | 1147 | ||
1175 | LJFOLD(CONV CONV IRCONV_NUM_INT) /* _NUM */ | 1148 | LJFOLD(CONV CONV IRCONV_NUM_INT) /* _NUM */ |