aboutsummaryrefslogtreecommitdiff
path: root/src/lj_opt_split.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lj_opt_split.c21
1 files changed, 0 insertions, 21 deletions
diff --git a/src/lj_opt_split.c b/src/lj_opt_split.c
index e526b49d..7925cfa5 100644
--- a/src/lj_opt_split.c
+++ b/src/lj_opt_split.c
@@ -403,27 +403,6 @@ static void split_ir(jit_State *J)
403 hi = split_call_li(J, hisubst, oir, ir, IRCALL_lj_vm_powi); 403 hi = split_call_li(J, hisubst, oir, ir, IRCALL_lj_vm_powi);
404 break; 404 break;
405 case IR_FPMATH: 405 case IR_FPMATH:
406 /* Try to rejoin pow from EXP2, MUL and LOG2. */
407 if (nir->op2 == IRFPM_EXP2 && nir->op1 > J->loopref) {
408 IRIns *irp = IR(nir->op1);
409 if (irp->o == IR_CALLN && irp->op2 == IRCALL_softfp_mul) {
410 IRIns *irm4 = IR(irp->op1);
411 IRIns *irm3 = IR(irm4->op1);
412 IRIns *irm12 = IR(irm3->op1);
413 IRIns *irl1 = IR(irm12->op1);
414 if (irm12->op1 > J->loopref && irl1->o == IR_CALLN &&
415 irl1->op2 == IRCALL_lj_vm_log2) {
416 IRRef tmp = irl1->op1; /* Recycle first two args from LOG2. */
417 IRRef arg3 = irm3->op2, arg4 = irm4->op2;
418 J->cur.nins--;
419 tmp = split_emit(J, IRT(IR_CARG, IRT_NIL), tmp, arg3);
420 tmp = split_emit(J, IRT(IR_CARG, IRT_NIL), tmp, arg4);
421 ir->prev = tmp = split_emit(J, IRTI(IR_CALLN), tmp, IRCALL_pow);
422 hi = split_emit(J, IRT(IR_HIOP, IRT_SOFTFP), tmp, tmp);
423 break;
424 }
425 }
426 }
427 hi = split_call_l(J, hisubst, oir, ir, IRCALL_lj_vm_floor + ir->op2); 406 hi = split_call_l(J, hisubst, oir, ir, IRCALL_lj_vm_floor + ir->op2);
428 break; 407 break;
429 case IR_LDEXP: 408 case IR_LDEXP: