aboutsummaryrefslogtreecommitdiff
path: root/src/buildvm_ppc.dasc
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildvm_ppc.dasc')
-rw-r--r--src/buildvm_ppc.dasc31
1 files changed, 10 insertions, 21 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc
index 99f4586f..77854ae1 100644
--- a/src/buildvm_ppc.dasc
+++ b/src/buildvm_ppc.dasc
@@ -1347,7 +1347,6 @@ static void build_subroutines(BuildCtx *ctx)
1347 | cmplwi NARGS8:RC, 16 1347 | cmplwi NARGS8:RC, 16
1348 | lwz CARG4, 8(BASE) 1348 | lwz CARG4, 8(BASE)
1349 | lfd FARG2, 8(BASE) 1349 | lfd FARG2, 8(BASE)
1350 | lwz CARG3, 0(BASE)
1351 | lfd FARG1, 0(BASE) 1350 | lfd FARG1, 0(BASE)
1352 | blt ->fff_fallback 1351 | blt ->fff_fallback
1353 | lbz TMP1, DISPATCH_GL(hookmask)(DISPATCH) 1352 | lbz TMP1, DISPATCH_GL(hookmask)(DISPATCH)
@@ -1356,9 +1355,9 @@ static void build_subroutines(BuildCtx *ctx)
1356 | la BASE, 16(BASE) 1355 | la BASE, 16(BASE)
1357 | // Remember active hook before pcall. 1356 | // Remember active hook before pcall.
1358 | rlwinm TMP1, TMP1, 32-HOOK_ACTIVE_SHIFT, 31, 31 1357 | rlwinm TMP1, TMP1, 32-HOOK_ACTIVE_SHIFT, 31, 31
1359 | stfd FARG2, 0(TMP2) // Swap function and traceback. 1358 | stfd FARG2, 0(TMP2) // Swap function and traceback.
1360 | subi NARGS8:RC, NARGS8:RC, 16 1359 | subi NARGS8:RC, NARGS8:RC, 16
1361 | stfd FARG1, 8(TMP2) 1360 | stfd FARG1, 8(TMP2)
1362 | addi PC, TMP1, 16+FRAME_PCALL 1361 | addi PC, TMP1, 16+FRAME_PCALL
1363 | b ->vm_call_dispatch 1362 | b ->vm_call_dispatch
1364 | 1363 |
@@ -2570,14 +2569,14 @@ static void build_subroutines(BuildCtx *ctx)
2570 | bl extern lj_ccallback_enter // (CTState *cts, void *cf) 2569 | bl extern lj_ccallback_enter // (CTState *cts, void *cf)
2571 | // Returns lua_State *. 2570 | // Returns lua_State *.
2572 | lwz BASE, L:CRET1->base 2571 | lwz BASE, L:CRET1->base
2573 | li TISNUM, LJ_TISNUM // Setup type comparison constants. 2572 | li TISNUM, LJ_TISNUM // Setup type comparison constants.
2574 | lwz RC, L:CRET1->top 2573 | lwz RC, L:CRET1->top
2575 | lus TMP3, 0x59c0 // TOBIT = 2^52 + 2^51 (float). 2574 | lus TMP3, 0x59c0 // TOBIT = 2^52 + 2^51 (float).
2576 | li ZERO, 0 2575 | li ZERO, 0
2577 | mr L, CRET1 2576 | mr L, CRET1
2578 | stw TMP3, TMPD 2577 | stw TMP3, TMPD
2579 | lwz LFUNC:RB, FRAME_FUNC(BASE) 2578 | lwz LFUNC:RB, FRAME_FUNC(BASE)
2580 | ori TMP3, TMP3, 0x0004 // TONUM = 2^52 + 2^51 + 2^31 (float). 2579 | ori TMP3, TMP3, 0x0004 // TONUM = 2^52 + 2^51 + 2^31 (float).
2581 | li TISNIL, LJ_TNIL 2580 | li TISNIL, LJ_TNIL
2582 | li_vmstate INTERP 2581 | li_vmstate INTERP
2583 | lfs TOBIT, TMPD 2582 | lfs TOBIT, TMPD
@@ -2588,7 +2587,7 @@ static void build_subroutines(BuildCtx *ctx)
2588 | ins_callt 2587 | ins_callt
2589#endif 2588#endif
2590 | 2589 |
2591 |->cont_ffi_callback: // Return from FFI callback. 2590 |->cont_ffi_callback: // Return from FFI callback.
2592#if LJ_HASFFI 2591#if LJ_HASFFI
2593 | lwz CTSTATE, DISPATCH_GL(ctype_state)(DISPATCH) 2592 | lwz CTSTATE, DISPATCH_GL(ctype_state)(DISPATCH)
2594 | stw BASE, L->base 2593 | stw BASE, L->base
@@ -2619,7 +2618,6 @@ static void build_subroutines(BuildCtx *ctx)
2619 | stwux sp, sp, TMP1 2618 | stwux sp, sp, TMP1
2620 | crnot 4*cr1+eq, 4*cr1+eq // For vararg calls. 2619 | crnot 4*cr1+eq, 4*cr1+eq // For vararg calls.
2621 | stw r14, -4(TMP2) 2620 | stw r14, -4(TMP2)
2622 | li TMP3, 0
2623 | stw CCSTATE, -8(TMP2) 2621 | stw CCSTATE, -8(TMP2)
2624 | mr r14, TMP2 2622 | mr r14, TMP2
2625 | la TMP1, CCSTATE->stack 2623 | la TMP1, CCSTATE->stack
@@ -3840,14 +3838,6 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3840 | barrierback TAB:RB, TMP3, TMP0 3838 | barrierback TAB:RB, TMP3, TMP0
3841 | b <2 3839 | b <2
3842 break; 3840 break;
3843 |1:
3844 | checkstr CARG1; bne >4
3845 | cmpw TMP0, STR:RC; bne >4
3846 | checknil CARG2; beq >5 // Key found, but nil value?
3847 |3:
3848 | stwux CARG2, RA, BASE
3849 | stw TMP1, 4(RA)
3850 | ins_next
3851 case BC_TSETS: 3841 case BC_TSETS:
3852 | // RA = src*8, RB = table*8, RC = str_const*8 (~) 3842 | // RA = src*8, RB = table*8, RC = str_const*8 (~)
3853 | lwzux CARG1, RB, BASE 3843 | lwzux CARG1, RB, BASE
@@ -3874,7 +3864,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3874 | lwz CARG1, NODE:TMP2->key 3864 | lwz CARG1, NODE:TMP2->key
3875 | lwz TMP0, 4+offsetof(Node, key)(NODE:TMP2) 3865 | lwz TMP0, 4+offsetof(Node, key)(NODE:TMP2)
3876 | lwz CARG2, NODE:TMP2->val 3866 | lwz CARG2, NODE:TMP2->val
3877 | lwz TMP1, 4+offsetof(Node, val)(NODE:TMP2) 3867 | lwz NODE:TMP1, NODE:TMP2->next
3878 | checkstr CARG1; bne >5 3868 | checkstr CARG1; bne >5
3879 | cmpw TMP0, STR:RC; bne >5 3869 | cmpw TMP0, STR:RC; bne >5
3880 | checknil CARG2; beq >4 // Key found, but nil value? 3870 | checknil CARG2; beq >4 // Key found, but nil value?
@@ -3895,8 +3885,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3895 | b ->vmeta_tsets 3885 | b ->vmeta_tsets
3896 | 3886 |
3897 |5: // Follow hash chain. 3887 |5: // Follow hash chain.
3898 | lwz NODE:TMP2, NODE:TMP2->next 3888 | cmplwi NODE:TMP1, 0
3899 | cmplwi NODE:TMP2, 0 3889 | mr NODE:TMP2, NODE:TMP1
3900 | bne <1 3890 | bne <1
3901 | // End of hash chain: key not found, add a new one. 3891 | // End of hash chain: key not found, add a new one.
3902 | 3892 |
@@ -4470,7 +4460,6 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
4470 } 4460 }
4471 | lfd f1, FORL_IDX*8(RA) 4461 | lfd f1, FORL_IDX*8(RA)
4472 | crand 4*cr0+lt, 4*cr0+lt, 4*cr7+lt 4462 | crand 4*cr0+lt, 4*cr0+lt, 4*cr7+lt
4473 | lfd f3, FORL_STEP*8(RA)
4474 | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt 4463 | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
4475 | lfd f2, FORL_STOP*8(RA) 4464 | lfd f2, FORL_STOP*8(RA)
4476 | bge ->vmeta_for 4465 | bge ->vmeta_for
@@ -4625,7 +4614,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
4625 } 4614 }
4626 |2: 4615 |2:
4627 | cmplw NARGS8:RC, TMP1 // Check for missing parameters. 4616 | cmplw NARGS8:RC, TMP1 // Check for missing parameters.
4628 | ble >3 4617 | blt >3
4629 if (op == BC_JFUNCF) { 4618 if (op == BC_JFUNCF) {
4630 | decode_RD8 RD, INS 4619 | decode_RD8 RD, INS
4631 | b =>BC_JLOOP 4620 | b =>BC_JLOOP