aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2011-07-25 00:18:20 +0200
committerMike Pall <mike>2011-07-25 00:18:20 +0200
commit551f09cebd4c6e0e9722d52346ffd9b45d459d25 (patch)
tree8e23f6e9a07ea24a3101c22eca79f5a4fc8eaed0 /src
parentee2bb5efed2c1172edd34280c53d9778ec20efb4 (diff)
downloadluajit-551f09cebd4c6e0e9722d52346ffd9b45d459d25.tar.gz
luajit-551f09cebd4c6e0e9722d52346ffd9b45d459d25.tar.bz2
luajit-551f09cebd4c6e0e9722d52346ffd9b45d459d25.zip
PPC: Add dual-number mode interpreter. Enable by default.
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_ppc.dasc1266
-rw-r--r--src/buildvm_ppc.h3884
-rw-r--r--src/lj_arch.h2
3 files changed, 4114 insertions, 1038 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc
index de3346cb..9130ee41 100644
--- a/src/buildvm_ppc.dasc
+++ b/src/buildvm_ppc.dasc
@@ -30,8 +30,8 @@
30|.define TISNUM, r22 30|.define TISNUM, r22
31|.define TISNIL, r23 31|.define TISNIL, r23
32|.define ZERO, r24 32|.define ZERO, r24
33|.define TOBIT, f30 33|.define TOBIT, f30 // 2^52 + 2^51.
34|.define TONUM, f31 34|.define TONUM, f31 // 2^52 + 2^51 + 2^31.
35| 35|
36|// The following temporaries are not saved across C calls, except for RA. 36|// The following temporaries are not saved across C calls, except for RA.
37|.define RA, r20 // Callee-save. 37|.define RA, r20 // Callee-save.
@@ -652,11 +652,18 @@ static void build_subroutines(BuildCtx *ctx)
652 | b >1 652 | b >1
653 | 653 |
654 |->vmeta_tgetb: // TMP0 = index 654 |->vmeta_tgetb: // TMP0 = index
655 | tonum_u f0, TMP0 655 if (!LJ_DUALNUM) {
656 | tonum_u f0, TMP0
657 }
656 | decode_RB8 RB, INS 658 | decode_RB8 RB, INS
657 | la CARG3, DISPATCH_GL(tmptv)(DISPATCH) 659 | la CARG3, DISPATCH_GL(tmptv)(DISPATCH)
658 | add CARG2, BASE, RB 660 | add CARG2, BASE, RB
659 | stfd f0, 0(CARG3) 661 if (LJ_DUALNUM) {
662 | stw TISNUM, 0(CARG3)
663 | stw TMP0, 4(CARG3)
664 } else {
665 | stfd f0, 0(CARG3)
666 }
660 | b >1 667 | b >1
661 | 668 |
662 |->vmeta_tgetv: 669 |->vmeta_tgetv:
@@ -710,11 +717,18 @@ static void build_subroutines(BuildCtx *ctx)
710 | b >1 717 | b >1
711 | 718 |
712 |->vmeta_tsetb: // TMP0 = index 719 |->vmeta_tsetb: // TMP0 = index
713 | tonum_u f0, TMP0 720 if (!LJ_DUALNUM) {
721 | tonum_u f0, TMP0
722 }
714 | decode_RB8 RB, INS 723 | decode_RB8 RB, INS
715 | la CARG3, DISPATCH_GL(tmptv)(DISPATCH) 724 | la CARG3, DISPATCH_GL(tmptv)(DISPATCH)
716 | add CARG2, BASE, RB 725 | add CARG2, BASE, RB
717 | stfd f0, 0(CARG3) 726 if (LJ_DUALNUM) {
727 | stw TISNUM, 0(CARG3)
728 | stw TMP0, 4(CARG3)
729 } else {
730 | stfd f0, 0(CARG3)
731 }
718 | b >1 732 | b >1
719 | 733 |
720 |->vmeta_tsetv: 734 |->vmeta_tsetv:
@@ -752,9 +766,17 @@ static void build_subroutines(BuildCtx *ctx)
752 |->vmeta_comp: 766 |->vmeta_comp:
753 | mr CARG1, L 767 | mr CARG1, L
754 | subi PC, PC, 4 768 | subi PC, PC, 4
755 | add CARG2, BASE, RA 769 if (LJ_DUALNUM) {
770 | mr CARG2, RA
771 } else {
772 | add CARG2, BASE, RA
773 }
756 | stw PC, SAVE_PC 774 | stw PC, SAVE_PC
757 | add CARG3, BASE, RD 775 if (LJ_DUALNUM) {
776 | mr CARG3, RD
777 } else {
778 | add CARG3, BASE, RD
779 }
758 | stw BASE, L->base 780 | stw BASE, L->base
759 | decode_OP1 CARG4, INS 781 | decode_OP1 CARG4, INS
760 | bl extern lj_meta_comp // (lua_State *L, TValue *o1, *o2, int op) 782 | bl extern lj_meta_comp // (lua_State *L, TValue *o1, *o2, int op)
@@ -803,26 +825,53 @@ static void build_subroutines(BuildCtx *ctx)
803 | // Returns 0/1 or TValue * (metamethod). 825 | // Returns 0/1 or TValue * (metamethod).
804 | b <3 826 | b <3
805 | 827 |
806 |//-- Arithmetic metamethods --------------------------------------------- 828 |->vmeta_equal_cd:
829#if LJ_HASFFI
830 | mr CARG2, INS
831 | subi PC, PC, 4
832 | stw BASE, L->base
833 | mr CARG1, L
834 | stw PC, SAVE_PC
835 | bl extern lj_meta_equal_cd // (lua_State *L, BCIns op)
836 | // Returns 0/1 or TValue * (metamethod).
837 | b <3
838#endif
807 | 839 |
808 |->vmeta_arith_vn: 840 |//-- Arithmetic metamethods ---------------------------------------------
809 | add CARG3, BASE, RB
810 | add CARG4, KBASE, RC
811 | b >1
812 | 841 |
813 |->vmeta_arith_nv: 842 |->vmeta_arith_nv:
814 | add CARG3, KBASE, RC 843 | add CARG3, KBASE, RC
815 | add CARG4, BASE, RB 844 | add CARG4, BASE, RB
816 | b >1 845 | b >1
846 |->vmeta_arith_nv2:
847 if (LJ_DUALNUM) {
848 | mr CARG3, RC
849 | mr CARG4, RB
850 | b >1
851 }
817 | 852 |
818 |->vmeta_unm: 853 |->vmeta_unm:
819 | mr CARG3, RD 854 | mr CARG3, RD
820 | mr CARG4, RD 855 | mr CARG4, RD
821 | b >1 856 | b >1
822 | 857 |
858 |->vmeta_arith_vn:
859 | add CARG3, BASE, RB
860 | add CARG4, KBASE, RC
861 | b >1
862 |
823 |->vmeta_arith_vv: 863 |->vmeta_arith_vv:
824 | add CARG3, BASE, RB 864 | add CARG3, BASE, RB
825 | add CARG4, BASE, RC 865 | add CARG4, BASE, RC
866 if (LJ_DUALNUM) {
867 | b >1
868 }
869 |->vmeta_arith_vn2:
870 |->vmeta_arith_vv2:
871 if (LJ_DUALNUM) {
872 | mr CARG3, RB
873 | mr CARG4, RC
874 }
826 |1: 875 |1:
827 | add CARG2, BASE, RA 876 | add CARG2, BASE, RA
828 | stw BASE, L->base 877 | stw BASE, L->base
@@ -1109,7 +1158,11 @@ static void build_subroutines(BuildCtx *ctx)
1109 | ffgccheck 1158 | ffgccheck
1110 | mr CARG1, L 1159 | mr CARG1, L
1111 | mr CARG2, BASE 1160 | mr CARG2, BASE
1112 | bl extern lj_str_fromnum // (lua_State *L, lua_Number *np) 1161 if (LJ_DUALNUM) {
1162 | bl extern lj_str_fromnumber // (lua_State *L, cTValue *o)
1163 } else {
1164 | bl extern lj_str_fromnum // (lua_State *L, lua_Number *np)
1165 }
1113 | // Returns GCstr *. 1166 | // Returns GCstr *.
1114 | li CARG3, LJ_TSTR 1167 | li CARG3, LJ_TSTR
1115 | b ->fff_restv 1168 | b ->fff_restv
@@ -1167,26 +1220,43 @@ static void build_subroutines(BuildCtx *ctx)
1167 | lwz CARG3, 0(BASE) 1220 | lwz CARG3, 0(BASE)
1168 | lwz TAB:CARG1, 4(BASE) 1221 | lwz TAB:CARG1, 4(BASE)
1169 | lwz CARG4, 8(BASE) 1222 | lwz CARG4, 8(BASE)
1170 | lfd FARG2, 8(BASE) 1223 if (LJ_DUALNUM) {
1224 | lwz TMP2, 12(BASE)
1225 } else {
1226 | lfd FARG2, 8(BASE)
1227 }
1171 | blt ->fff_fallback 1228 | blt ->fff_fallback
1172 | checktab CARG3 1229 | checktab CARG3
1173 | checknum cr1, CARG4 1230 | checknum cr1, CARG4
1174 | lwz PC, FRAME_PC(BASE) 1231 | lwz PC, FRAME_PC(BASE)
1175 | lus TMP0, 0x3ff0 1232 if (LJ_DUALNUM) {
1176 | stw ZERO, TMPD_LO 1233 | bne ->fff_fallback
1177 | bne ->fff_fallback 1234 | bne cr1, ->fff_fallback
1178 | stw TMP0, TMPD_HI 1235 } else {
1179 | bge cr1, ->fff_fallback 1236 | lus TMP0, 0x3ff0
1180 | lfd FARG1, TMPD 1237 | stw ZERO, TMPD_LO
1181 | toint TMP2, FARG2, f0 1238 | bne ->fff_fallback
1239 | stw TMP0, TMPD_HI
1240 | bge cr1, ->fff_fallback
1241 | lfd FARG1, TMPD
1242 | toint TMP2, FARG2, f0
1243 }
1182 | lwz TMP0, TAB:CARG1->asize 1244 | lwz TMP0, TAB:CARG1->asize
1183 | lwz TMP1, TAB:CARG1->array 1245 | lwz TMP1, TAB:CARG1->array
1184 | fadd FARG2, FARG2, FARG1 1246 if (!LJ_DUALNUM) {
1247 | fadd FARG2, FARG2, FARG1
1248 }
1185 | addi TMP2, TMP2, 1 1249 | addi TMP2, TMP2, 1
1186 | la RA, -8(BASE) 1250 | la RA, -8(BASE)
1187 | cmplw TMP0, TMP2 1251 | cmplw TMP0, TMP2
1188 | slwi TMP3, TMP2, 3 1252 if (LJ_DUALNUM) {
1189 | stfd FARG2, 0(RA) 1253 | stw TISNUM, 0(RA)
1254 | slwi TMP3, TMP2, 3
1255 | stw TMP2, 4(RA)
1256 } else {
1257 | slwi TMP3, TMP2, 3
1258 | stfd FARG2, 0(RA)
1259 }
1190 | ble >2 // Not in array part? 1260 | ble >2 // Not in array part?
1191 | lwzx TMP2, TMP1, TMP3 1261 | lwzx TMP2, TMP1, TMP3
1192 | lfdx f0, TMP1, TMP3 1262 | lfdx f0, TMP1, TMP3
@@ -1226,7 +1296,11 @@ static void build_subroutines(BuildCtx *ctx)
1226 | lfd f0, CFUNC:RB->upvalue[0] 1296 | lfd f0, CFUNC:RB->upvalue[0]
1227 | la RA, -8(BASE) 1297 | la RA, -8(BASE)
1228#endif 1298#endif
1229 | stw ZERO, 8(BASE) 1299 if (LJ_DUALNUM) {
1300 | stw TISNUM, 8(BASE)
1301 } else {
1302 | stw ZERO, 8(BASE)
1303 }
1230 | stw ZERO, 12(BASE) 1304 | stw ZERO, 12(BASE)
1231 | li RD, (3+1)*8 1305 | li RD, (3+1)*8
1232 | stfd f0, 0(RA) 1306 | stfd f0, 0(RA)
@@ -1401,7 +1475,26 @@ static void build_subroutines(BuildCtx *ctx)
1401 |//-- Math library ------------------------------------------------------- 1475 |//-- Math library -------------------------------------------------------
1402 | 1476 |
1403 |.ffunc_1 math_abs 1477 |.ffunc_1 math_abs
1404 | checknum CARG3; bge ->fff_fallback 1478 | checknum CARG3
1479 if (LJ_DUALNUM) {
1480 | bne >2
1481 | srawi TMP1, CARG1, 31
1482 | xor TMP2, TMP1, CARG1
1483 | sub. CARG1, TMP2, TMP1
1484 | blt >1
1485 |->fff_resi:
1486 | lwz PC, FRAME_PC(BASE)
1487 | la RA, -8(BASE)
1488 | stw TISNUM, -8(BASE)
1489 | stw CRET1, -4(BASE)
1490 | b ->fff_res1
1491 |1:
1492 | lus CARG3, 0x41e0 // 2^31.
1493 | li CARG1, 0
1494 | b ->fff_restv
1495 |2:
1496 }
1497 | bge ->fff_fallback
1405 | rlwinm CARG3, CARG3, 0, 1, 31 1498 | rlwinm CARG3, CARG3, 0, 1, 31
1406 | // Fallthrough. 1499 | // Fallthrough.
1407 | 1500 |
@@ -1448,9 +1541,85 @@ static void build_subroutines(BuildCtx *ctx)
1448 | b ->fff_resn 1541 | b ->fff_resn
1449 |.endmacro 1542 |.endmacro
1450 | 1543 |
1451 | // NYI: Use internal implementation. 1544 |.macro math_round, func
1452 | math_extern floor 1545 | .ffunc_1 math_ .. func
1453 | math_extern ceil 1546 | checknum CARG3; beq ->fff_restv
1547 | rlwinm TMP2, CARG3, 12, 21, 31
1548 | bge ->fff_fallback
1549 | addic. TMP2, TMP2, -1023 // exp = exponent(x) - 1023
1550 | cmplwi cr1, TMP2, 31 // 0 <= exp < 31?
1551 | subfic TMP0, TMP2, 31
1552 | blt >3
1553 | slwi TMP1, CARG3, 11
1554 | srwi TMP3, CARG1, 21
1555 | oris TMP1, TMP1, 0x8000
1556 | addi TMP2, TMP2, 1
1557 | or TMP1, TMP1, TMP3
1558 | slwi CARG2, CARG1, 11
1559 | bge cr1, >4
1560 | slw TMP3, TMP1, TMP2
1561 | srw CARG1, TMP1, TMP0
1562 | or TMP3, TMP3, CARG2
1563 | srawi TMP2, CARG3, 31
1564 |.if "func" == "floor"
1565 | and TMP1, TMP3, TMP2
1566 | addic TMP0, TMP1, -1
1567 | subfe TMP1, TMP0, TMP1
1568 | add CARG1, CARG1, TMP1
1569 | xor CARG1, CARG1, TMP2
1570 | sub CARG1, CARG1, TMP2
1571 | b ->fff_resi
1572 |.else
1573 | andc TMP1, TMP3, TMP2
1574 | addic TMP0, TMP1, -1
1575 | subfe TMP1, TMP0, TMP1
1576 | addo. CARG1, CARG1, TMP1
1577 | xor CARG1, CARG1, TMP2
1578 | sub CARG1, CARG1, TMP2
1579 | bns ->fff_resi
1580 | // Potential overflow.
1581 | mcrxr cr0; ble ->fff_resi // Ignore unrelated overflow.
1582 | lus CARG3, 0x41e0 // 2^31.
1583 | li CARG1, 0
1584 | b ->fff_restv
1585 |.endif
1586 |3: // |x| < 1
1587 | add TMP2, CARG3, CARG3
1588 | srawi TMP1, CARG3, 31
1589 | or TMP2, CARG1, TMP2 // ztest = (hi+hi) | lo
1590 |.if "func" == "floor"
1591 | and TMP1, TMP2, TMP1 // (ztest & sign) == 0 ? 0 : -1
1592 | subfic TMP2, TMP1, 0
1593 | subfe CARG1, CARG1, CARG1
1594 |.else
1595 | andc TMP1, TMP2, TMP1 // (ztest & ~sign) == 0 ? 0 : 1
1596 | addic TMP2, TMP1, -1
1597 | subfe CARG1, TMP2, TMP1
1598 |.endif
1599 | b ->fff_resi
1600 |4: // exp >= 31. Check for -(2^31).
1601 | xoris TMP1, TMP1, 0x8000
1602 | srawi TMP2, CARG3, 31
1603 |.if "func" == "floor"
1604 | or TMP1, TMP1, CARG2
1605 |.endif
1606 | orc. TMP1, TMP1, TMP2
1607 | crand 4*cr0+eq, 4*cr0+eq, 4*cr1+eq
1608 | lus CARG1, 0x8000 // -(2^31).
1609 | beq ->fff_resi
1610 |5:
1611 | bl extern func
1612 | b ->fff_resn
1613 |.endmacro
1614 |
1615 if (LJ_DUALNUM) {
1616 | math_round floor
1617 | math_round ceil
1618 } else {
1619 | // NYI: use internal implementation.
1620 | math_extern floor
1621 | math_extern ceil
1622 }
1454 | 1623 |
1455 | math_extern sqrt 1624 | math_extern sqrt
1456 | math_extern log 1625 | math_extern log
@@ -1475,8 +1644,20 @@ static void build_subroutines(BuildCtx *ctx)
1475 | fmul FARG1, FARG1, FARG2 1644 | fmul FARG1, FARG1, FARG2
1476 | b ->fff_resn 1645 | b ->fff_resn
1477 | 1646 |
1478 |.ffunc_nn math_ldexp 1647 if (LJ_DUALNUM) {
1479 | toint CARG1, FARG2 1648 |.ffunc math_ldexp
1649 | cmplwi NARGS8:RC, 16
1650 | lwz CARG3, 0(BASE)
1651 | lfd FARG1, 0(BASE)
1652 | lwz CARG4, 8(BASE)
1653 | lwz CARG1, 12(BASE)
1654 | blt ->fff_fallback
1655 | checknum CARG3; bge ->fff_fallback
1656 | checknum CARG4; bne ->fff_fallback
1657 } else {
1658 |.ffunc_nn math_ldexp
1659 | toint CARG1, FARG2
1660 }
1480 | bl extern ldexp 1661 | bl extern ldexp
1481 | b ->fff_resn 1662 | b ->fff_resn
1482 | 1663 |
@@ -1486,10 +1667,17 @@ static void build_subroutines(BuildCtx *ctx)
1486 | bl extern frexp 1667 | bl extern frexp
1487 | lwz TMP1, DISPATCH_GL(tmptv)(DISPATCH) 1668 | lwz TMP1, DISPATCH_GL(tmptv)(DISPATCH)
1488 | la RA, -8(BASE) 1669 | la RA, -8(BASE)
1489 | tonum_i FARG2, TMP1 1670 if (!LJ_DUALNUM) {
1671 | tonum_i FARG2, TMP1
1672 }
1490 | stfd FARG1, 0(RA) 1673 | stfd FARG1, 0(RA)
1491 | li RD, (2+1)*8 1674 | li RD, (2+1)*8
1492 | stfd FARG2, 8(RA) 1675 if (LJ_DUALNUM) {
1676 | stw TISNUM, 8(RA)
1677 | stw TMP1, 12(RA)
1678 } else {
1679 | stfd FARG2, 8(RA)
1680 }
1493 | b ->fff_res 1681 | b ->fff_res
1494 | 1682 |
1495 |.ffunc_n math_modf 1683 |.ffunc_n math_modf
@@ -1502,6 +1690,61 @@ static void build_subroutines(BuildCtx *ctx)
1502 | b ->fff_res 1690 | b ->fff_res
1503 | 1691 |
1504 |.macro math_minmax, name, ismax 1692 |.macro math_minmax, name, ismax
1693 ||if (LJ_DUALNUM) {
1694 | .ffunc_1 name
1695 | checknum CARG3
1696 | addi TMP1, BASE, 8
1697 | add TMP2, BASE, NARGS8:RC
1698 | bne >4
1699 |1: // Handle integers.
1700 | lwz CARG4, 0(TMP1)
1701 | cmplw cr1, TMP1, TMP2
1702 | lwz CARG2, 4(TMP1)
1703 | bge cr1, ->fff_resi
1704 | checknum CARG4
1705 | xoris TMP0, CARG1, 0x8000
1706 | xoris TMP3, CARG2, 0x8000
1707 | bne >3
1708 | subfc TMP3, TMP3, TMP0
1709 | subfe TMP0, TMP0, TMP0
1710 |.if ismax
1711 | andc TMP3, TMP3, TMP0
1712 |.else
1713 | and TMP3, TMP3, TMP0
1714 |.endif
1715 | add CARG1, TMP3, CARG2
1716 | addi TMP1, TMP1, 8
1717 | b <1
1718 |3:
1719 | bge ->fff_fallback
1720 | // Convert intermediate result to number and continue below.
1721 | tonum_i FARG1, CARG1
1722 | lfd FARG2, 0(TMP1)
1723 | b >6
1724 |4:
1725 | lfd FARG1, 0(BASE)
1726 | bge ->fff_fallback
1727 |5: // Handle numbers.
1728 | lwz CARG4, 0(TMP1)
1729 | cmplw cr1, TMP1, TMP2
1730 | lfd FARG2, 0(TMP1)
1731 | bge cr1, ->fff_resn
1732 | checknum CARG4; bge >7
1733 |6:
1734 | fsub f0, FARG1, FARG2
1735 | addi TMP1, TMP1, 8
1736 |.if ismax
1737 | fsel FARG1, f0, FARG1, FARG2
1738 |.else
1739 | fsel FARG1, f0, FARG2, FARG1
1740 |.endif
1741 | b <5
1742 |7: // Convert integer to number and continue above.
1743 | lwz CARG2, 4(TMP1)
1744 | bne ->fff_fallback
1745 | tonum_i FARG2, CARG2
1746 | b <6
1747 ||} else {
1505 | .ffunc_n name 1748 | .ffunc_n name
1506 | li TMP1, 8 1749 | li TMP1, 8
1507 |1: 1750 |1:
@@ -1519,6 +1762,7 @@ static void build_subroutines(BuildCtx *ctx)
1519 | fsel FARG1, f0, FARG2, FARG1 1762 | fsel FARG1, f0, FARG2, FARG1
1520 |.endif 1763 |.endif
1521 | b <1 1764 | b <1
1765 ||}
1522 |.endmacro 1766 |.endmacro
1523 | 1767 |
1524 | math_minmax math_min, 0 1768 | math_minmax math_min, 0
@@ -1539,28 +1783,45 @@ static void build_subroutines(BuildCtx *ctx)
1539 | checkstr CARG3 1783 | checkstr CARG3
1540 | bne ->fff_fallback 1784 | bne ->fff_fallback
1541 | lwz TMP0, STR:CARG1->len 1785 | lwz TMP0, STR:CARG1->len
1542 | lbz TMP1, STR:CARG1[1] // Access is always ok (NUL at end). 1786 if (LJ_DUALNUM) {
1543 | addic TMP3, TMP0, -1 // RD = ((str->len != 0)+1)*8 1787 | lbz CARG1, STR:CARG1[1] // Access is always ok (NUL at end).
1544 | subfe RD, TMP3, TMP0 1788 | li RD, (0+1)*8
1545 | stw TMP1, TONUM_LO // Inlined tonum_u f0, TMP1. 1789 | lwz PC, FRAME_PC(BASE)
1546 | addi RD, RD, 1 1790 | cmplwi TMP0, 0
1547 | lfd f0, TONUM_D 1791 | la RA, -8(BASE)
1548 | la RA, -8(BASE) 1792 | beq ->fff_res
1549 | lwz PC, FRAME_PC(BASE) 1793 | b ->fff_resi
1550 | fsub f0, f0, TOBIT 1794 } else {
1551 | slwi RD, RD, 3 1795 | lbz TMP1, STR:CARG1[1] // Access is always ok (NUL at end).
1552 | stfd f0, 0(RA) 1796 | addic TMP3, TMP0, -1 // RD = ((str->len != 0)+1)*8
1553 | b ->fff_res 1797 | subfe RD, TMP3, TMP0
1798 | stw TMP1, TONUM_LO // Inlined tonum_u f0, TMP1.
1799 | addi RD, RD, 1
1800 | lfd f0, TONUM_D
1801 | la RA, -8(BASE)
1802 | lwz PC, FRAME_PC(BASE)
1803 | fsub f0, f0, TOBIT
1804 | slwi RD, RD, 3
1805 | stfd f0, 0(RA)
1806 | b ->fff_res
1807 }
1554 | 1808 |
1555 |.ffunc string_char // Only handle the 1-arg case here. 1809 |.ffunc string_char // Only handle the 1-arg case here.
1556 | ffgccheck 1810 | ffgccheck
1557 | cmplwi NARGS8:RC, 8 1811 | cmplwi NARGS8:RC, 8
1558 | lwz CARG3, 0(BASE) 1812 | lwz CARG3, 0(BASE)
1559 | lfd FARG1, 0(BASE) 1813 if (LJ_DUALNUM) {
1560 | bne ->fff_fallback // Exactly 1 argument. 1814 | lwz TMP0, 4(BASE)
1561 | checknum CARG3; bge ->fff_fallback 1815 | bne ->fff_fallback // Exactly 1 argument.
1562 | toint TMP0, FARG1 1816 | checknum CARG3; bne ->fff_fallback
1563 | la CARG2, TMPD_BLO 1817 | la CARG2, 7(BASE)
1818 } else {
1819 | lfd FARG1, 0(BASE)
1820 | bne ->fff_fallback // Exactly 1 argument.
1821 | checknum CARG3; bge ->fff_fallback
1822 | toint TMP0, FARG1
1823 | la CARG2, TMPD_BLO
1824 }
1564 | li CARG3, 1 1825 | li CARG3, 1
1565 | cmplwi TMP0, 255; bgt ->fff_fallback 1826 | cmplwi TMP0, 255; bgt ->fff_fallback
1566 |->fff_newstr: 1827 |->fff_newstr:
@@ -1577,20 +1838,36 @@ static void build_subroutines(BuildCtx *ctx)
1577 | ffgccheck 1838 | ffgccheck
1578 | cmplwi NARGS8:RC, 16 1839 | cmplwi NARGS8:RC, 16
1579 | lwz CARG3, 16(BASE) 1840 | lwz CARG3, 16(BASE)
1580 | lfd f0, 16(BASE) 1841 if (!LJ_DUALNUM) {
1842 | lfd f0, 16(BASE)
1843 }
1581 | lwz TMP0, 0(BASE) 1844 | lwz TMP0, 0(BASE)
1582 | lwz STR:CARG1, 4(BASE) 1845 | lwz STR:CARG1, 4(BASE)
1583 | blt ->fff_fallback 1846 | blt ->fff_fallback
1584 | lwz CARG2, 8(BASE) 1847 | lwz CARG2, 8(BASE)
1585 | lfd f1, 8(BASE) 1848 if (LJ_DUALNUM) {
1849 | lwz TMP1, 12(BASE)
1850 } else {
1851 | lfd f1, 8(BASE)
1852 }
1586 | li TMP2, -1 1853 | li TMP2, -1
1587 | beq >1 1854 | beq >1
1588 | checknum CARG3; bge ->fff_fallback 1855 if (LJ_DUALNUM) {
1589 | toint TMP2, f0 1856 | checknum CARG3
1590 |1: 1857 | lwz TMP2, 20(BASE)
1591 | checknum CARG2; bge ->fff_fallback 1858 | bne ->fff_fallback
1859 |1:
1860 | checknum CARG2; bne ->fff_fallback
1861 } else {
1862 | checknum CARG3; bge ->fff_fallback
1863 | toint TMP2, f0
1864 |1:
1865 | checknum CARG2; bge ->fff_fallback
1866 }
1592 | checkstr TMP0; bne ->fff_fallback 1867 | checkstr TMP0; bne ->fff_fallback
1593 | toint TMP1, f1 1868 if (!LJ_DUALNUM) {
1869 | toint TMP1, f1
1870 }
1594 | lwz TMP0, STR:CARG1->len 1871 | lwz TMP0, STR:CARG1->len
1595 | cmplw TMP0, TMP2 // len < end? (unsigned compare) 1872 | cmplw TMP0, TMP2 // len < end? (unsigned compare)
1596 | addi TMP3, TMP2, 1 1873 | addi TMP3, TMP2, 1
@@ -1627,14 +1904,22 @@ static void build_subroutines(BuildCtx *ctx)
1627 |.ffunc string_rep // Only handle the 1-char case inline. 1904 |.ffunc string_rep // Only handle the 1-char case inline.
1628 | ffgccheck 1905 | ffgccheck
1629 | cmplwi NARGS8:RC, 16 1906 | cmplwi NARGS8:RC, 16
1630 | lwz CARG3, 0(BASE) 1907 | lwz TMP0, 0(BASE)
1631 | lwz STR:CARG1, 4(BASE) 1908 | lwz STR:CARG1, 4(BASE)
1632 | lwz CARG4, 8(BASE) 1909 | lwz CARG4, 8(BASE)
1633 | lfd FARG2, 8(BASE) 1910 if (LJ_DUALNUM) {
1911 | lwz CARG3, 12(BASE)
1912 } else {
1913 | lfd FARG2, 8(BASE)
1914 }
1634 | blt ->fff_fallback 1915 | blt ->fff_fallback
1635 | checkstr CARG3; bne ->fff_fallback 1916 | checkstr TMP0; bne ->fff_fallback
1636 | checknum CARG4; bge ->fff_fallback 1917 if (LJ_DUALNUM) {
1637 | toint CARG3, FARG2 1918 | checknum CARG4; bne ->fff_fallback
1919 } else {
1920 | checknum CARG4; bge ->fff_fallback
1921 | toint CARG3, FARG2
1922 }
1638 | lwz TMP0, STR:CARG1->len 1923 | lwz TMP0, STR:CARG1->len
1639 | cmpwi CARG3, 0 1924 | cmpwi CARG3, 0
1640 | lwz TMP1, DISPATCH_GL(tmpbuf.sz)(DISPATCH) 1925 | lwz TMP1, DISPATCH_GL(tmpbuf.sz)(DISPATCH)
@@ -1728,34 +2013,39 @@ static void build_subroutines(BuildCtx *ctx)
1728 |//-- Bit library -------------------------------------------------------- 2013 |//-- Bit library --------------------------------------------------------
1729 | 2014 |
1730 |.macro .ffunc_bit, name 2015 |.macro .ffunc_bit, name
2016 ||if (LJ_DUALNUM) {
2017 | .ffunc_1 bit_..name
2018 | checknum CARG3; bnel ->fff_tobit_fb
2019 ||} else {
1731 | .ffunc_n bit_..name 2020 | .ffunc_n bit_..name
1732 | fadd FARG1, FARG1, TOBIT 2021 | fadd FARG1, FARG1, TOBIT
1733 | stfd FARG1, TMPD 2022 | stfd FARG1, TMPD
1734 | lwz CARG1, TMPD_LO 2023 | lwz CARG1, TMPD_LO
2024 ||}
1735 |.endmacro 2025 |.endmacro
1736 | 2026 |
1737 |.ffunc_bit tobit
1738 |->fff_resi:
1739 | tonum_i FARG1, CRET1
1740 |->fff_resn:
1741 | lwz PC, FRAME_PC(BASE)
1742 | la RA, -8(BASE)
1743 | stfd FARG1, -8(BASE)
1744 | b ->fff_res1
1745 |
1746 |.macro .ffunc_bit_op, name, ins 2027 |.macro .ffunc_bit_op, name, ins
1747 | .ffunc_bit name 2028 | .ffunc_bit name
1748 | li TMP1, 8 2029 | addi TMP1, BASE, 8
2030 | add TMP2, BASE, NARGS8:RC
1749 |1: 2031 |1:
1750 | lwzx CARG4, BASE, TMP1 2032 | lwz CARG4, 0(TMP1)
1751 | cmplw cr1, TMP1, NARGS8:RC 2033 | cmplw cr1, TMP1, TMP2
1752 | lfdx FARG1, BASE, TMP1 2034 ||if (LJ_DUALNUM) {
1753 | checknum CARG4 2035 | lwz CARG2, 4(TMP1)
2036 ||} else {
2037 | lfd FARG1, 0(TMP1)
2038 ||}
1754 | bge cr1, ->fff_resi 2039 | bge cr1, ->fff_resi
2040 | checknum CARG4
2041 ||if (LJ_DUALNUM) {
2042 | bnel ->fff_bitop_fb
2043 ||} else {
1755 | fadd FARG1, FARG1, TOBIT 2044 | fadd FARG1, FARG1, TOBIT
1756 | bge ->fff_fallback 2045 | bge ->fff_fallback
1757 | stfd FARG1, TMPD 2046 | stfd FARG1, TMPD
1758 | lwz CARG2, TMPD_LO 2047 | lwz CARG2, TMPD_LO
2048 ||}
1759 | ins CARG1, CARG1, CARG2 2049 | ins CARG1, CARG1, CARG2
1760 | addi TMP1, TMP1, 8 2050 | addi TMP1, TMP1, 8
1761 | b <1 2051 | b <1
@@ -1777,6 +2067,12 @@ static void build_subroutines(BuildCtx *ctx)
1777 | b ->fff_resi 2067 | b ->fff_resi
1778 | 2068 |
1779 |.macro .ffunc_bit_sh, name, ins, shmod 2069 |.macro .ffunc_bit_sh, name, ins, shmod
2070 ||if (LJ_DUALNUM) {
2071 | .ffunc_2 bit_..name
2072 | checknum CARG3; bnel ->fff_tobit_fb
2073 | // Note: no inline conversion from number for 2nd argument!
2074 | checknum CARG4; bne ->fff_fallback
2075 ||} else {
1780 | .ffunc_nn bit_..name 2076 | .ffunc_nn bit_..name
1781 | fadd FARG1, FARG1, TOBIT 2077 | fadd FARG1, FARG1, TOBIT
1782 | fadd FARG2, FARG2, TOBIT 2078 | fadd FARG2, FARG2, TOBIT
@@ -1784,6 +2080,7 @@ static void build_subroutines(BuildCtx *ctx)
1784 | lwz CARG1, TMPD_LO 2080 | lwz CARG1, TMPD_LO
1785 | stfd FARG2, TMPD 2081 | stfd FARG2, TMPD
1786 | lwz CARG2, TMPD_LO 2082 | lwz CARG2, TMPD_LO
2083 ||}
1787 |.if shmod == 1 2084 |.if shmod == 1
1788 | rlwinm CARG2, CARG2, 0, 27, 31 2085 | rlwinm CARG2, CARG2, 0, 27, 31
1789 |.elif shmod == 2 2086 |.elif shmod == 2
@@ -1799,6 +2096,39 @@ static void build_subroutines(BuildCtx *ctx)
1799 |.ffunc_bit_sh rol, rotlw, 0 2096 |.ffunc_bit_sh rol, rotlw, 0
1800 |.ffunc_bit_sh ror, rotlw, 2 2097 |.ffunc_bit_sh ror, rotlw, 2
1801 | 2098 |
2099 |.ffunc_bit tobit
2100 if (LJ_DUALNUM) {
2101 | b ->fff_resi
2102 } else {
2103 |->fff_resi:
2104 | tonum_i FARG1, CRET1
2105 }
2106 |->fff_resn:
2107 | lwz PC, FRAME_PC(BASE)
2108 | la RA, -8(BASE)
2109 | stfd FARG1, -8(BASE)
2110 | b ->fff_res1
2111 |
2112 |// Fallback FP number to bit conversion.
2113 |->fff_tobit_fb:
2114 if (LJ_DUALNUM) {
2115 | lfd FARG1, 0(BASE)
2116 | bgt ->fff_fallback
2117 | fadd FARG1, FARG1, TOBIT
2118 | stfd FARG1, TMPD
2119 | lwz CARG1, TMPD_LO
2120 | blr
2121 }
2122 |->fff_bitop_fb:
2123 if (LJ_DUALNUM) {
2124 | lfd FARG1, 0(TMP1)
2125 | bgt ->fff_fallback
2126 | fadd FARG1, FARG1, TOBIT
2127 | stfd FARG1, TMPD
2128 | lwz CARG2, TMPD_LO
2129 | blr
2130 }
2131 |
1802 |//----------------------------------------------------------------------- 2132 |//-----------------------------------------------------------------------
1803 | 2133 |
1804 |->fff_fallback: // Call fast function fallback handler. 2134 |->fff_fallback: // Call fast function fallback handler.
@@ -1981,6 +2311,17 @@ static void build_subroutines(BuildCtx *ctx)
1981 | b extern trunc 2311 | b extern trunc
1982#endif 2312#endif
1983 | 2313 |
2314 |->vm_modi:
2315 | divwo. TMP0, CARG1, CARG2
2316 | bsolr
2317 | xor. CARG3, CARG1, CARG2
2318 | mullw TMP0, TMP0, CARG2
2319 | sub CARG1, CARG1, TMP0
2320 | bgelr
2321 | cmpwi CARG1, 0; beqlr
2322 | add CARG1, CARG1, CARG2
2323 | blr
2324 |
1984 |->vm_powi: 2325 |->vm_powi:
1985#if LJ_HASJIT 2326#if LJ_HASJIT
1986 | NYI 2327 | NYI
@@ -2060,64 +2401,142 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2060 2401
2061 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 2402 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
2062 | // RA = src1*8, RD = src2*8, JMP with RD = target 2403 | // RA = src1*8, RD = src2*8, JMP with RD = target
2063 | lwzx TMP0, BASE, RA 2404 if (LJ_DUALNUM) {
2064 | addi PC, PC, 4 2405 | lwzux TMP0, RA, BASE
2065 | lfdx f0, BASE, RA 2406 | addi PC, PC, 4
2066 | lwzx TMP1, BASE, RD 2407 | lwz CARG2, 4(RA)
2067 | checknum cr0, TMP0 2408 | lwzux TMP1, RD, BASE
2068 | lwz TMP2, -4(PC) 2409 | lwz TMP2, -4(PC)
2069 | lfdx f1, BASE, RD 2410 | checknum cr0, TMP0
2070 | checknum cr1, TMP1 2411 | lwz CARG3, 4(RD)
2071 | decode_RD4 TMP2, TMP2 2412 | decode_RD4 TMP2, TMP2
2072 | bge cr0, ->vmeta_comp 2413 | checknum cr1, TMP1
2073 | addis TMP2, TMP2, -(BCBIAS_J*4 >> 16) 2414 | addis TMP2, TMP2, -(BCBIAS_J*4 >> 16)
2074 | bge cr1, ->vmeta_comp 2415 | bne cr0, >7
2075 | fcmpu cr0, f0, f1 2416 | bne cr1, >8
2076 if (op == BC_ISLT) { 2417 | cmpw CARG2, CARG3
2077 | bge >1 2418 if (op == BC_ISLT) {
2078 } else if (op == BC_ISGE) { 2419 | bge >2
2079 | blt >1 2420 } else if (op == BC_ISGE) {
2080 } else if (op == BC_ISLE) { 2421 | blt >2
2081 | cror 4*cr0+lt, 4*cr0+lt, 4*cr0+eq 2422 } else if (op == BC_ISLE) {
2082 | bge >1 2423 | bgt >2
2424 } else {
2425 | ble >2
2426 }
2427 |1:
2428 | add PC, PC, TMP2
2429 |2:
2430 | ins_next
2431 |
2432 |7: // RA is not an integer.
2433 | bgt cr0, ->vmeta_comp
2434 | // RA is a number.
2435 | lfd f0, 0(RA)
2436 | bgt cr1, ->vmeta_comp
2437 | blt cr1, >4
2438 | // RA is a number, RD is an integer.
2439 | tonum_i f1, CARG3
2440 | b >5
2441 |
2442 |8: // RA is an integer, RD is a number.
2443 | tonum_i f0, CARG2
2444 |4:
2445 | lfd f1, 0(RD)
2446 |5:
2447 | fcmpu cr0, f0, f1
2448 if (op == BC_ISLT) {
2449 | bge <2
2450 } else if (op == BC_ISGE) {
2451 | blt <2
2452 } else if (op == BC_ISLE) {
2453 | cror 4*cr0+lt, 4*cr0+lt, 4*cr0+eq
2454 | bge <2
2455 } else {
2456 | cror 4*cr0+lt, 4*cr0+lt, 4*cr0+eq
2457 | blt <2
2458 }
2459 | b <1
2083 } else { 2460 } else {
2084 | cror 4*cr0+lt, 4*cr0+lt, 4*cr0+eq 2461 | lwzx TMP0, BASE, RA
2085 | blt >1 2462 | addi PC, PC, 4
2463 | lfdx f0, BASE, RA
2464 | lwzx TMP1, BASE, RD
2465 | checknum cr0, TMP0
2466 | lwz TMP2, -4(PC)
2467 | lfdx f1, BASE, RD
2468 | checknum cr1, TMP1
2469 | decode_RD4 TMP2, TMP2
2470 | bge cr0, ->vmeta_comp
2471 | addis TMP2, TMP2, -(BCBIAS_J*4 >> 16)
2472 | bge cr1, ->vmeta_comp
2473 | fcmpu cr0, f0, f1
2474 if (op == BC_ISLT) {
2475 | bge >1
2476 } else if (op == BC_ISGE) {
2477 | blt >1
2478 } else if (op == BC_ISLE) {
2479 | cror 4*cr0+lt, 4*cr0+lt, 4*cr0+eq
2480 | bge >1
2481 } else {
2482 | cror 4*cr0+lt, 4*cr0+lt, 4*cr0+eq
2483 | blt >1
2484 }
2485 | add PC, PC, TMP2
2486 |1:
2487 | ins_next
2086 } 2488 }
2087 | add PC, PC, TMP2
2088 |1:
2089 | ins_next
2090 break; 2489 break;
2091 2490
2092 case BC_ISEQV: case BC_ISNEV: 2491 case BC_ISEQV: case BC_ISNEV:
2093 vk = op == BC_ISEQV; 2492 vk = op == BC_ISEQV;
2094 | // RA = src1*8, RD = src2*8, JMP with RD = target 2493 | // RA = src1*8, RD = src2*8, JMP with RD = target
2095 | lwzux TMP0, RA, BASE 2494 if (LJ_DUALNUM) {
2096 | lwz TMP2, 0(PC) 2495 | lwzux TMP0, RA, BASE
2097 | lfd f0, 0(RA) 2496 | addi PC, PC, 4
2098 | addi PC, PC, 4 2497 | lwz CARG2, 4(RA)
2099 | lwzux TMP1, RD, BASE 2498 | lwzux TMP1, RD, BASE
2100 | checknum cr0, TMP0 2499 | checknum cr0, TMP0
2101 | decode_RD4 TMP2, TMP2 2500 | lwz INS, -4(PC)
2102 | lfd f1, 0(RD) 2501 | checknum cr1, TMP1
2103 | checknum cr1, TMP1 2502 | decode_RD4 TMP2, INS
2104 | addis TMP2, TMP2, -(BCBIAS_J*4 >> 16) 2503 | lwz CARG3, 4(RD)
2105 | bge cr0, >5 2504 | cror 4*cr7+gt, 4*cr0+gt, 4*cr1+gt
2106 | bge cr1, >5 2505 | addis TMP2, TMP2, -(BCBIAS_J*4 >> 16)
2107 | fcmpu cr0, f0, f1 2506 if (vk) {
2108 if (vk) { 2507 | ble cr7, ->BC_ISEQN_Z
2109 | bne >1 2508 } else {
2110 | add PC, PC, TMP2 2509 | ble cr7, ->BC_ISNEN_Z
2510 }
2111 } else { 2511 } else {
2112 | beq >1 2512 | lwzux TMP0, RA, BASE
2113 | add PC, PC, TMP2 2513 | lwz TMP2, 0(PC)
2514 | lfd f0, 0(RA)
2515 | addi PC, PC, 4
2516 | lwzux TMP1, RD, BASE
2517 | checknum cr0, TMP0
2518 | decode_RD4 TMP2, TMP2
2519 | lfd f1, 0(RD)
2520 | checknum cr1, TMP1
2521 | addis TMP2, TMP2, -(BCBIAS_J*4 >> 16)
2522 | bge cr0, >5
2523 | bge cr1, >5
2524 | fcmpu cr0, f0, f1
2525 if (vk) {
2526 | bne >1
2527 | add PC, PC, TMP2
2528 } else {
2529 | beq >1
2530 | add PC, PC, TMP2
2531 }
2532 |1:
2533 | ins_next
2114 } 2534 }
2115 |1:
2116 | ins_next
2117 |
2118 |5: // Either or both types are not numbers. 2535 |5: // Either or both types are not numbers.
2119 | lwz CARG2, 4(RA) 2536 if (!LJ_DUALNUM) {
2120 | lwz CARG3, 4(RD) 2537 | lwz CARG2, 4(RA)
2538 | lwz CARG3, 4(RD)
2539 }
2121 | not TMP3, TMP0 2540 | not TMP3, TMP0
2122 | cmplw TMP0, TMP1 2541 | cmplw TMP0, TMP1
2123 | cmplwi cr1, TMP3, ~LJ_TISPRI // Primitive? 2542 | cmplwi cr1, TMP3, ~LJ_TISPRI // Primitive?
@@ -2138,7 +2557,14 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2138 | add PC, PC, TMP2 2557 | add PC, PC, TMP2
2139 |6: 2558 |6:
2140 } 2559 }
2141 | blt cr0, <1 // Done if 1 or 2. 2560 if (LJ_DUALNUM) {
2561 | bge cr0, >2 // Done if 1 or 2.
2562 |1:
2563 | ins_next
2564 |2:
2565 } else {
2566 | blt cr0, <1 // Done if 1 or 2.
2567 }
2142 | blt cr6, <1 // Done if not tab/ud. 2568 | blt cr6, <1 // Done if not tab/ud.
2143 | 2569 |
2144 | // Different tables or userdatas. Need to check __eq metamethod. 2570 | // Different tables or userdatas. Need to check __eq metamethod.
@@ -2183,32 +2609,84 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2183 case BC_ISEQN: case BC_ISNEN: 2609 case BC_ISEQN: case BC_ISNEN:
2184 vk = op == BC_ISEQN; 2610 vk = op == BC_ISEQN;
2185 | // RA = src*8, RD = num_const*8, JMP with RD = target 2611 | // RA = src*8, RD = num_const*8, JMP with RD = target
2186 | lwzx TMP0, BASE, RA 2612 if (LJ_DUALNUM) {
2187 | lfdx f0, BASE, RA 2613 | lwzux TMP0, RA, BASE
2188 | addi PC, PC, 4 2614 | addi PC, PC, 4
2189 | lfdx f1, KBASE, RD 2615 | lwz CARG2, 4(RA)
2190 | lwz INS, -4(PC) 2616 | lwzux TMP1, RD, KBASE
2191 | checknum TMP0; bge >5 2617 | checknum cr0, TMP0
2192 | fcmpu cr0, f0, f1 2618 | lwz INS, -4(PC)
2193 | decode_RD4 TMP2, INS 2619 | checknum cr1, TMP1
2194 | addis TMP2, TMP2, -(BCBIAS_J*4 >> 16) 2620 | decode_RD4 TMP2, INS
2621 | lwz CARG3, 4(RD)
2622 | addis TMP2, TMP2, -(BCBIAS_J*4 >> 16)
2623 if (vk) {
2624 |->BC_ISEQN_Z:
2625 } else {
2626 |->BC_ISNEN_Z:
2627 }
2628 | bne cr0, >7
2629 | bne cr1, >8
2630 | cmpw CARG2, CARG3
2631 |4:
2632 } else {
2633 if (vk) {
2634 |->BC_ISEQN_Z: // Dummy label.
2635 } else {
2636 |->BC_ISNEN_Z: // Dummy label.
2637 }
2638 | lwzx TMP0, BASE, RA
2639 | addi PC, PC, 4
2640 | lfdx f0, BASE, RA
2641 | lwz INS, -4(PC)
2642 | lfdx f1, KBASE, RD
2643 | decode_RD4 TMP2, INS
2644 | checknum TMP0
2645 | addis TMP2, TMP2, -(BCBIAS_J*4 >> 16)
2646 | bge >3
2647 | fcmpu cr0, f0, f1
2648 }
2195 if (vk) { 2649 if (vk) {
2196 | bne >5 2650 | bne >1
2197 | add PC, PC, TMP2 2651 | add PC, PC, TMP2
2198 |5: 2652 |1:
2653 if (!LJ_HASFFI) {
2654 |3:
2655 }
2199 } else { 2656 } else {
2200 | beq >2 2657 | beq >2
2201 |1: 2658 |1:
2659 if (!LJ_HASFFI) {
2660 |3:
2661 }
2202 | add PC, PC, TMP2 2662 | add PC, PC, TMP2
2203 |2: 2663 |2:
2204 } 2664 }
2205 | ins_next 2665 | ins_next
2206 if (!vk) { 2666 if (LJ_HASFFI) {
2207 |5: 2667 |3:
2208 | decode_RD4 TMP2, INS 2668 | cmpwi TMP0, LJ_TCDATA
2209 | addis TMP2, TMP2, -(BCBIAS_J*4 >> 16) 2669 | beq ->vmeta_equal_cd
2210 | b <1 2670 | b <1
2211 } 2671 }
2672 if (LJ_DUALNUM) {
2673 |7: // RA is not an integer.
2674 | bge cr0, <3
2675 | // RA is a number.
2676 | lfd f0, 0(RA)
2677 | blt cr1, >1
2678 | // RA is a number, RD is an integer.
2679 | tonum_i f1, CARG3
2680 | b >2
2681 |
2682 |8: // RA is an integer, RD is a number.
2683 | tonum_i f0, CARG2
2684 |1:
2685 | lfd f1, 0(RD)
2686 |2:
2687 | fcmpu cr0, f0, f1
2688 | b <4
2689 }
2212 break; 2690 break;
2213 2691
2214 case BC_ISEQP: case BC_ISNEP: 2692 case BC_ISEQP: case BC_ISNEP:
@@ -2291,12 +2769,35 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2291 | // RA = dst*8, RD = src*8 2769 | // RA = dst*8, RD = src*8
2292 | lwzux TMP1, RD, BASE 2770 | lwzux TMP1, RD, BASE
2293 | lwz TMP0, 4(RD) 2771 | lwz TMP0, 4(RD)
2294 | checknum TMP1; bge ->vmeta_unm 2772 | checknum TMP1
2773 if (LJ_DUALNUM) {
2774 | bne >5
2775 | nego. TMP0, TMP0
2776 | bso >4
2777 |1:
2778 | ins_next1
2779 | stwux TISNUM, RA, BASE
2780 | stw TMP0, 4(RA)
2781 |3:
2782 | ins_next2
2783 |4: // Potential overflow.
2784 | mcrxr cr0; ble <1 // Ignore unrelated overflow.
2785 | lus TMP1, 0x41e0 // 2^31.
2786 | li TMP0, 0
2787 | b >7
2788 }
2789 |5:
2790 | bge ->vmeta_unm
2295 | xoris TMP1, TMP1, 0x8000 2791 | xoris TMP1, TMP1, 0x8000
2792 |7:
2296 | ins_next1 2793 | ins_next1
2297 | stwux TMP1, RA, BASE 2794 | stwux TMP1, RA, BASE
2298 | stw TMP0, 4(RA) 2795 | stw TMP0, 4(RA)
2299 | ins_next2 2796 if (LJ_DUALNUM) {
2797 | b <3
2798 } else {
2799 | ins_next2
2800 }
2300 break; 2801 break;
2301 case BC_LEN: 2802 case BC_LEN:
2302 | // RA = dst*8, RD = src*8 2803 | // RA = dst*8, RD = src*8
@@ -2305,9 +2806,15 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2305 | checkstr TMP0; bne >2 2806 | checkstr TMP0; bne >2
2306 | lwz CRET1, STR:CARG1->len 2807 | lwz CRET1, STR:CARG1->len
2307 |1: 2808 |1:
2308 | tonum_u f0, CRET1 // Result is a non-negative integer. 2809 if (LJ_DUALNUM) {
2309 | ins_next1 2810 | ins_next1
2310 | stfdx f0, BASE, RA 2811 | stwux TISNUM, RA, BASE
2812 | stw CRET1, 4(RA)
2813 } else {
2814 | tonum_u f0, CRET1 // Result is a non-negative integer.
2815 | ins_next1
2816 | stfdx f0, BASE, RA
2817 }
2311 | ins_next2 2818 | ins_next2
2312 |2: 2819 |2:
2313 | checktab TMP0; bne ->vmeta_len 2820 | checktab TMP0; bne ->vmeta_len
@@ -2332,78 +2839,197 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2332 2839
2333 /* -- Binary ops -------------------------------------------------------- */ 2840 /* -- Binary ops -------------------------------------------------------- */
2334 2841
2335 |.macro ins_arithpre, t0, t1 2842 |.macro ins_arithpre
2336 | // RA = dst*8, RB = src1*8, RC = src2*8 | num_const*8 2843 | // RA = dst*8, RB = src1*8, RC = src2*8 | num_const*8
2337 ||vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 2844 ||vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2338 ||switch (vk) { 2845 ||switch (vk) {
2339 ||case 0: 2846 ||case 0:
2340 | lwzx CARG1, BASE, RB 2847 | lwzx TMP1, BASE, RB
2341 | lfdx t0, BASE, RB 2848 ||if (LJ_DUALNUM) {
2342 | lfdx t1, KBASE, RC 2849 | lwzx TMP2, KBASE, RC
2343 | checknum CARG1; bge ->vmeta_arith_vn 2850 ||}
2851 | lfdx f14, BASE, RB
2852 | lfdx f15, KBASE, RC
2853 ||if (LJ_DUALNUM) {
2854 | checknum cr0, TMP1
2855 | checknum cr1, TMP2
2856 | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
2857 | bge ->vmeta_arith_vn
2858 ||} else {
2859 | checknum TMP1; bge ->vmeta_arith_vn
2860 ||}
2344 || break; 2861 || break;
2345 ||case 1: 2862 ||case 1:
2346 | lwzx CARG1, BASE, RB 2863 | lwzx TMP1, BASE, RB
2347 | lfdx t1, BASE, RB 2864 ||if (LJ_DUALNUM) {
2348 | lfdx t0, KBASE, RC 2865 | lwzx TMP2, KBASE, RC
2349 | checknum CARG1; bge ->vmeta_arith_nv 2866 ||}
2867 | lfdx f15, BASE, RB
2868 | lfdx f14, KBASE, RC
2869 ||if (LJ_DUALNUM) {
2870 | checknum cr0, TMP1
2871 | checknum cr1, TMP2
2872 | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
2873 | bge ->vmeta_arith_nv
2874 ||} else {
2875 | checknum TMP1; bge ->vmeta_arith_nv
2876 ||}
2350 || break; 2877 || break;
2351 ||default: 2878 ||default:
2352 | lwzx CARG1, BASE, RB 2879 | lwzx TMP1, BASE, RB
2353 | lwzx CARG2, BASE, RC 2880 | lwzx TMP2, BASE, RC
2354 | lfdx t0, BASE, RB 2881 | lfdx f14, BASE, RB
2355 | lfdx t1, BASE, RC 2882 | lfdx f15, BASE, RC
2356 | checknum cr0, CARG1 2883 | checknum cr0, TMP1
2357 | checknum cr1, CARG2 2884 | checknum cr1, TMP2
2358 | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt 2885 | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
2359 | bge ->vmeta_arith_vv 2886 | bge ->vmeta_arith_vv
2360 || break; 2887 || break;
2361 ||} 2888 ||}
2362 |.endmacro 2889 |.endmacro
2363 | 2890 |
2364 |.macro ins_arith, ins 2891 |.macro ins_arithfallback, ins
2365 | ins_arithpre f0, f1 2892 ||switch (vk) {
2893 ||case 0:
2894 | ins ->vmeta_arith_vn2
2895 || break;
2896 ||case 1:
2897 | ins ->vmeta_arith_nv2
2898 || break;
2899 ||default:
2900 | ins ->vmeta_arith_vv2
2901 || break;
2902 ||}
2903 |.endmacro
2904 |
2905 |.macro intmod, a, b, c
2906 |->BC_MODVNI_Z:
2907 | bl ->vm_modi
2908 |.endmacro
2909 |
2910 |.macro fpmod, a, b, c
2911 ||if (!LJ_DUALNUM) {
2912 |->BC_MODVNI_Z:
2913 ||}
2914 |->BC_MODVN_Z:
2915 | fdiv FARG1, b, c
2916 | // NYI: Use internal implementation of floor.
2917 | bl extern floor // floor(b/c)
2918 | fmul a, FARG1, c
2919 | fsub a, b, a // b - floor(b/c)*c
2920 |.endmacro
2921 |
2922 |.macro ins_arithfp, fpins
2923 | ins_arithpre
2924 |.if "fpins" == "fpmod_"
2925 | b ->BC_MODVN_Z // Avoid 3 copies. It's slow anyway.
2926 |.else
2927 | fpins f0, f14, f15
2366 | ins_next1 2928 | ins_next1
2367 | ins f0, f0, f1
2368 | stfdx f0, BASE, RA 2929 | stfdx f0, BASE, RA
2369 | ins_next2 2930 | ins_next2
2931 |.endif
2932 |.endmacro
2933 |
2934 |.macro ins_arithdn, intins, fpins
2935 | // RA = dst*8, RB = src1*8, RC = src2*8 | num_const*8
2936 ||vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
2937 ||switch (vk) {
2938 ||case 0:
2939 | lwzux TMP1, RB, BASE
2940 | lwzux TMP2, RC, KBASE
2941 | lwz CARG1, 4(RB)
2942 | checknum cr0, TMP1
2943 | lwz CARG2, 4(RC)
2944 || break;
2945 ||case 1:
2946 | lwzux TMP1, RB, BASE
2947 | lwzux TMP2, RC, KBASE
2948 | lwz CARG2, 4(RB)
2949 | checknum cr0, TMP1
2950 | lwz CARG1, 4(RC)
2951 || break;
2952 ||default:
2953 | lwzux TMP1, RB, BASE
2954 | lwzux TMP2, RC, BASE
2955 | lwz CARG1, 4(RB)
2956 | checknum cr0, TMP1
2957 | lwz CARG2, 4(RC)
2958 || break;
2959 ||}
2960 | checknum cr1, TMP2
2961 | crand 4*cr0+eq, 4*cr0+eq, 4*cr1+eq
2962 | bne >5
2963 |.if "intins" == "intmod_"
2964 | b ->BC_MODVNI_Z // Avoid 3 copies. It's slow anyway.
2965 |.else
2966 | intins CARG1, CARG1, CARG2
2967 | bso >4
2968 |1:
2969 | ins_next1
2970 | stwux TISNUM, RA, BASE
2971 | stw CARG1, 4(RA)
2972 |2:
2973 | ins_next2
2974 |4: // Overflow.
2975 | mcrxr cr0; ble <1 // Ignore unrelated overflow.
2976 | ins_arithfallback b
2977 |.endif
2978 |5: // FP variant.
2979 ||if (vk == 1) {
2980 | lfd f15, 0(RB)
2981 | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
2982 | lfd f14, 0(RC)
2983 ||} else {
2984 | lfd f14, 0(RB)
2985 | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
2986 | lfd f15, 0(RC)
2987 ||}
2988 | ins_arithfallback bge
2989 |.if "fpins" == "fpmod_"
2990 | b ->BC_MODVN_Z // Avoid 3 copies. It's slow anyway.
2991 |.else
2992 | fpins f0, f14, f15
2993 | ins_next1
2994 | stfdx f0, BASE, RA
2995 | b <2
2996 |.endif
2997 |.endmacro
2998 |
2999 |.macro ins_arith, intins, fpins
3000 ||if (LJ_DUALNUM) {
3001 | ins_arithdn intins, fpins
3002 ||} else {
3003 | ins_arithfp fpins
3004 ||}
2370 |.endmacro 3005 |.endmacro
2371 3006
2372 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 3007 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
2373 | ins_arith fadd 3008 | ins_arith addo., fadd
2374 break; 3009 break;
2375 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 3010 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
2376 | ins_arith fsub 3011 | ins_arith subo., fsub
2377 break; 3012 break;
2378 case BC_MULVN: case BC_MULNV: case BC_MULVV: 3013 case BC_MULVN: case BC_MULNV: case BC_MULVV:
2379 | ins_arith fmul 3014 | ins_arith mullwo., fmul
2380 break; 3015 break;
2381 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 3016 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
2382 | ins_arith fdiv 3017 | ins_arithfp fdiv
2383 break; 3018 break;
2384 case BC_MODVN: 3019 case BC_MODVN:
2385 | ins_arithpre f14, f15 3020 | ins_arith intmod, fpmod
2386 |->BC_MODVN_Z:
2387 | fdiv FARG1, f14, f15
2388 | // NYI: Use internal implementation of floor.
2389 | bl extern floor // floor(b/c)
2390 | fmul f0, FARG1, f15
2391 | ins_next1
2392 | fsub f0, f14, f0 // b - floor(b/c)*c
2393 | stfdx f0, BASE, RA
2394 | ins_next2
2395 break; 3021 break;
2396 case BC_MODNV: case BC_MODVV: 3022 case BC_MODNV: case BC_MODVV:
2397 | ins_arithpre f14, f15 3023 | ins_arith intmod_, fpmod_
2398 | b ->BC_MODVN_Z // Avoid 3 copies. It's slow anyway.
2399 break; 3024 break;
2400 case BC_POW: 3025 case BC_POW:
2401 | lwzx CARG1, BASE, RB 3026 | // NYI: (partial) integer arithmetic.
3027 | lwzx TMP1, BASE, RB
2402 | lfdx FARG1, BASE, RB 3028 | lfdx FARG1, BASE, RB
2403 | lwzx CARG2, BASE, RC 3029 | lwzx TMP2, BASE, RC
2404 | lfdx FARG2, BASE, RC 3030 | lfdx FARG2, BASE, RC
2405 | checknum cr0, CARG1 3031 | checknum cr0, TMP1
2406 | checknum cr1, CARG2 3032 | checknum cr1, TMP2
2407 | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt 3033 | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
2408 | bge ->vmeta_arith_vv 3034 | bge ->vmeta_arith_vv
2409 | bl extern pow 3035 | bl extern pow
@@ -2459,33 +3085,42 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2459 break; 3085 break;
2460 case BC_KSHORT: 3086 case BC_KSHORT:
2461 | // RA = dst*8, RD = int16_literal*8 3087 | // RA = dst*8, RD = int16_literal*8
2462 | // NYI: which approach is faster? 3088 if (LJ_DUALNUM) {
2463 |.if 1 3089 | slwi RD, RD, 13
2464 | slwi RD, RD, 13 3090 | srawi RD, RD, 16
2465 | srawi RD, RD, 16 3091 | ins_next1
2466 | tonum_i f0, RD 3092 | stwux TISNUM, RA, BASE
2467 | ins_next1 3093 | stw RD, 4(RA)
2468 | stfdx f0, BASE, RA 3094 | ins_next2
2469 | ins_next2 3095 } else {
2470 |.else 3096 | // NYI: which approach is faster?
2471 | slwi RD, RD, 13 3097 |.if 1
2472 | srawi TMP1, RD, 31 3098 | slwi RD, RD, 13
2473 | xor TMP2, TMP1, RD 3099 | srawi RD, RD, 16
2474 | sub TMP2, TMP2, TMP1 // TMP2 = abs(x) 3100 | tonum_i f0, RD
2475 | cntlzw TMP3, TMP2 3101 | ins_next1
2476 | subfic TMP1, TMP3, 0x40d // TMP1 = exponent-1 3102 | stfdx f0, BASE, RA
2477 | slw TMP2, TMP2, TMP3 // TMP2 = left aligned mantissa 3103 | ins_next2
2478 | subfic TMP3, RD, 0 3104 |.else
2479 | slwi TMP1, TMP1, 20 3105 | slwi RD, RD, 13
2480 | rlwimi RD, TMP2, 21, 1, 31 // hi = sign(x) | (mantissa>>11) 3106 | srawi TMP1, RD, 31
2481 | subfe TMP0, TMP0, TMP0 3107 | xor TMP2, TMP1, RD
2482 | add RD, RD, TMP1 // hi = hi + exponent-1 3108 | sub TMP2, TMP2, TMP1 // TMP2 = abs(x)
2483 | and RD, RD, TMP0 // hi = x == 0 ? 0 : hi 3109 | cntlzw TMP3, TMP2
2484 | ins_next1 3110 | subfic TMP1, TMP3, 0x40d // TMP1 = exponent-1
2485 | stwux RD, RA, BASE 3111 | slw TMP2, TMP2, TMP3 // TMP2 = left aligned mantissa
2486 | stw ZERO, 4(RA) 3112 | subfic TMP3, RD, 0
2487 | ins_next2 3113 | slwi TMP1, TMP1, 20
2488 |.endif 3114 | rlwimi RD, TMP2, 21, 1, 31 // hi = sign(x) | (mantissa>>11)
3115 | subfe TMP0, TMP0, TMP0
3116 | add RD, RD, TMP1 // hi = hi + exponent-1
3117 | and RD, RD, TMP0 // hi = x == 0 ? 0 : hi
3118 | ins_next1
3119 | stwux RD, RA, BASE
3120 | stw ZERO, 4(RA)
3121 | ins_next2
3122 |.endif
3123 }
2489 break; 3124 break;
2490 case BC_KNUM: 3125 case BC_KNUM:
2491 | // RA = dst*8, RD = num_const*8 3126 | // RA = dst*8, RD = num_const*8
@@ -2718,23 +3353,35 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2718 | lwzux CARG1, RB, BASE 3353 | lwzux CARG1, RB, BASE
2719 | lwzux CARG2, RC, BASE 3354 | lwzux CARG2, RC, BASE
2720 | lwz TAB:RB, 4(RB) 3355 | lwz TAB:RB, 4(RB)
2721 | lfd f0, 0(RC) 3356 if (LJ_DUALNUM) {
3357 | lwz RC, 4(RC)
3358 } else {
3359 | lfd f0, 0(RC)
3360 }
2722 | checktab CARG1 3361 | checktab CARG1
2723 | checknum cr1, CARG2 3362 | checknum cr1, CARG2
2724 | bne ->vmeta_tgetv 3363 | bne ->vmeta_tgetv
2725 | bge cr1, >5 3364 if (LJ_DUALNUM) {
2726 | // Convert number key to integer, check for integerness and range. 3365 | lwz TMP0, TAB:RB->asize
2727 | fctiwz f1, f0 3366 | bne cr1, >5
2728 | fadd f2, f0, TOBIT 3367 | lwz TMP1, TAB:RB->array
2729 | stfd f1, TMPD 3368 | cmplw TMP0, RC
2730 | lwz TMP0, TAB:RB->asize 3369 | slwi TMP2, RC, 3
2731 | fsub f2, f2, TOBIT 3370 } else {
2732 | lwz TMP2, TMPD_LO 3371 | bge cr1, >5
2733 | lwz TMP1, TAB:RB->array 3372 | // Convert number key to integer, check for integerness and range.
2734 | fcmpu cr1, f0, f2 3373 | fctiwz f1, f0
2735 | cmplw cr0, TMP0, TMP2 3374 | fadd f2, f0, TOBIT
2736 | crand 4*cr0+gt, 4*cr0+gt, 4*cr1+eq 3375 | stfd f1, TMPD
2737 | slwi TMP2, TMP2, 3 3376 | lwz TMP0, TAB:RB->asize
3377 | fsub f2, f2, TOBIT
3378 | lwz TMP2, TMPD_LO
3379 | lwz TMP1, TAB:RB->array
3380 | fcmpu cr1, f0, f2
3381 | cmplw cr0, TMP0, TMP2
3382 | crand 4*cr0+gt, 4*cr0+gt, 4*cr1+eq
3383 | slwi TMP2, TMP2, 3
3384 }
2738 | ble ->vmeta_tgetv // Integer key and in array part? 3385 | ble ->vmeta_tgetv // Integer key and in array part?
2739 | lwzx TMP0, TMP1, TMP2 3386 | lwzx TMP0, TMP1, TMP2
2740 | lfdx f14, TMP1, TMP2 3387 | lfdx f14, TMP1, TMP2
@@ -2755,7 +3402,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2755 | 3402 |
2756 |5: 3403 |5:
2757 | checkstr CARG2; bne ->vmeta_tgetv 3404 | checkstr CARG2; bne ->vmeta_tgetv
2758 | lwz STR:RC, 4(RC) 3405 if (!LJ_DUALNUM) {
3406 | lwz STR:RC, 4(RC)
3407 }
2759 | b ->BC_TGETS_Z // String key? 3408 | b ->BC_TGETS_Z // String key?
2760 break; 3409 break;
2761 case BC_TGETS: 3410 case BC_TGETS:
@@ -2838,23 +3487,35 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2838 | lwzux CARG1, RB, BASE 3487 | lwzux CARG1, RB, BASE
2839 | lwzux CARG2, RC, BASE 3488 | lwzux CARG2, RC, BASE
2840 | lwz TAB:RB, 4(RB) 3489 | lwz TAB:RB, 4(RB)
2841 | lfd f0, 0(RC) 3490 if (LJ_DUALNUM) {
3491 | lwz RC, 4(RC)
3492 } else {
3493 | lfd f0, 0(RC)
3494 }
2842 | checktab CARG1 3495 | checktab CARG1
2843 | checknum cr1, CARG2 3496 | checknum cr1, CARG2
2844 | bne ->vmeta_tsetv 3497 | bne ->vmeta_tsetv
2845 | bge cr1, >5 3498 if (LJ_DUALNUM) {
2846 | // Convert number key to integer, check for integerness and range. 3499 | lwz TMP0, TAB:RB->asize
2847 | fctiwz f1, f0 3500 | bne cr1, >5
2848 | fadd f2, f0, TOBIT 3501 | lwz TMP1, TAB:RB->array
2849 | stfd f1, TMPD 3502 | cmplw TMP0, RC
2850 | lwz TMP0, TAB:RB->asize 3503 | slwi TMP0, RC, 3
2851 | fsub f2, f2, TOBIT 3504 } else {
2852 | lwz TMP2, TMPD_LO 3505 | bge cr1, >5
2853 | lwz TMP1, TAB:RB->array 3506 | // Convert number key to integer, check for integerness and range.
2854 | fcmpu cr1, f0, f2 3507 | fctiwz f1, f0
2855 | cmplw cr0, TMP0, TMP2 3508 | fadd f2, f0, TOBIT
2856 | crand 4*cr0+gt, 4*cr0+gt, 4*cr1+eq 3509 | stfd f1, TMPD
2857 | slwi TMP0, TMP2, 3 3510 | lwz TMP0, TAB:RB->asize
3511 | fsub f2, f2, TOBIT
3512 | lwz TMP2, TMPD_LO
3513 | lwz TMP1, TAB:RB->array
3514 | fcmpu cr1, f0, f2
3515 | cmplw cr0, TMP0, TMP2
3516 | crand 4*cr0+gt, 4*cr0+gt, 4*cr1+eq
3517 | slwi TMP0, TMP2, 3
3518 }
2858 | ble ->vmeta_tsetv // Integer key and in array part? 3519 | ble ->vmeta_tsetv // Integer key and in array part?
2859 | lwzx TMP2, TMP1, TMP0 3520 | lwzx TMP2, TMP1, TMP0
2860 | lbz TMP3, TAB:RB->marked 3521 | lbz TMP3, TAB:RB->marked
@@ -2878,7 +3539,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2878 | 3539 |
2879 |5: 3540 |5:
2880 | checkstr CARG2; bne ->vmeta_tsetv 3541 | checkstr CARG2; bne ->vmeta_tsetv
2881 | lwz STR:RC, 4(RC) 3542 if (!LJ_DUALNUM) {
3543 | lwz STR:RC, 4(RC)
3544 }
2882 | b ->BC_TSETS_Z // String key? 3545 | b ->BC_TSETS_Z // String key?
2883 | 3546 |
2884 |7: // Possible table write barrier for the value. Skip valiswhite check. 3547 |7: // Possible table write barrier for the value. Skip valiswhite check.
@@ -3164,14 +3827,21 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3164 | checknil TMP2 3827 | checknil TMP2
3165 | lwz INS, -4(PC) 3828 | lwz INS, -4(PC)
3166 | beq >4 3829 | beq >4
3167 | tonum_u f1, RC 3830 if (LJ_DUALNUM) {
3831 | stw RC, 4(RA)
3832 | stw TISNUM, 0(RA)
3833 } else {
3834 | tonum_u f1, RC
3835 }
3168 | addi RC, RC, 1 3836 | addi RC, RC, 1
3169 | addis TMP3, PC, -(BCBIAS_J*4 >> 16) 3837 | addis TMP3, PC, -(BCBIAS_J*4 >> 16)
3170 | stfd f0, 8(RA) 3838 | stfd f0, 8(RA)
3171 | decode_RD4 TMP1, INS 3839 | decode_RD4 TMP1, INS
3172 | stw RC, -4(RA) // Update control var. 3840 | stw RC, -4(RA) // Update control var.
3173 | add PC, TMP1, TMP3 3841 | add PC, TMP1, TMP3
3174 | stfd f1, 0(RA) 3842 if (!LJ_DUALNUM) {
3843 | stfd f1, 0(RA)
3844 }
3175 |3: 3845 |3:
3176 | ins_next 3846 | ins_next
3177 | 3847 |
@@ -3424,28 +4094,96 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3424 case BC_IFORL: 4094 case BC_IFORL:
3425 | // RA = base*8, RD = target (after end of loop or start of loop) 4095 | // RA = base*8, RD = target (after end of loop or start of loop)
3426 vk = (op == BC_IFORL || op == BC_JFORL); 4096 vk = (op == BC_IFORL || op == BC_JFORL);
4097 if (LJ_DUALNUM) {
4098 | // Integer loop.
4099 | lwzux TMP1, RA, BASE
4100 | lwz CARG1, FORL_IDX*8+4(RA)
4101 | cmplw cr0, TMP1, TISNUM
4102 if (vk) {
4103 | lwz CARG3, FORL_STEP*8+4(RA)
4104 | bne >9
4105 | addo. CARG1, CARG1, CARG3
4106 | cmpwi cr6, CARG3, 0
4107 | lwz CARG2, FORL_STOP*8+4(RA)
4108 | bso >6
4109 |4:
4110 | stw CARG1, FORL_IDX*8+4(RA)
4111 } else {
4112 | lwz TMP3, FORL_STEP*8(RA)
4113 | lwz CARG3, FORL_STEP*8+4(RA)
4114 | lwz TMP2, FORL_STOP*8(RA)
4115 | lwz CARG2, FORL_STOP*8+4(RA)
4116 | cmplw cr7, TMP3, TISNUM
4117 | cmplw cr1, TMP2, TISNUM
4118 | crand 4*cr0+eq, 4*cr0+eq, 4*cr7+eq
4119 | crand 4*cr0+eq, 4*cr0+eq, 4*cr1+eq
4120 | cmpwi cr6, CARG3, 0
4121 | bne >9
4122 }
4123 | blt cr6, >5
4124 | cmpw CARG1, CARG2
4125 |1:
4126 | stw TISNUM, FORL_EXT*8(RA)
4127 if (op != BC_JFORL) {
4128 | srwi RD, RD, 1
4129 }
4130 | stw CARG1, FORL_EXT*8+4(RA)
4131 if (op != BC_JFORL) {
4132 | add RD, PC, RD
4133 }
4134 if (op == BC_FORI) {
4135 | bgt >3 // See FP loop below.
4136 } else if (op == BC_JFORI) {
4137 | addis PC, RD, -(BCBIAS_J*4 >> 16)
4138 | ble =>BC_JLOOP
4139 } else if (op == BC_IFORL) {
4140 | bgt >2
4141 | addis PC, RD, -(BCBIAS_J*4 >> 16)
4142 } else {
4143 | ble =>BC_JLOOP
4144 }
4145 |2:
4146 | ins_next
4147 |5: // Invert check for negative step.
4148 | cmpw CARG2, CARG1
4149 | b <1
4150 if (vk) {
4151 |6: // Potential overflow.
4152 | mcrxr cr0; ble <4 // Ignore unrelated overflow.
4153 | b <2
4154 }
4155 }
3427 if (vk) { 4156 if (vk) {
3428 | lfdux f1, RA, BASE 4157 if (LJ_DUALNUM) {
4158 |9: // FP loop.
4159 | lfd f1, FORL_IDX*8(RA)
4160 } else {
4161 | lfdux f1, RA, BASE
4162 }
3429 | lfd f3, FORL_STEP*8(RA) 4163 | lfd f3, FORL_STEP*8(RA)
3430 | lfd f2, FORL_STOP*8(RA) 4164 | lfd f2, FORL_STOP*8(RA)
3431 | lwz TMP3, FORL_STEP*8(RA) 4165 | lwz TMP3, FORL_STEP*8(RA)
3432 | fadd f1, f1, f3 4166 | fadd f1, f1, f3
3433 | stfd f1, FORL_IDX*8(RA) 4167 | stfd f1, FORL_IDX*8(RA)
3434 } else { 4168 } else {
3435 | lwzux TMP1, RA, BASE 4169 if (LJ_DUALNUM) {
4170 |9: // FP loop.
4171 } else {
4172 | lwzux TMP1, RA, BASE
4173 | lwz TMP3, FORL_STEP*8(RA)
4174 | lwz TMP2, FORL_STOP*8(RA)
4175 | cmplw cr0, TMP1, TISNUM
4176 | cmplw cr7, TMP3, TISNUM
4177 | cmplw cr1, TMP2, TISNUM
4178 }
3436 | lfd f1, FORL_IDX*8(RA) 4179 | lfd f1, FORL_IDX*8(RA)
3437 | lwz TMP3, FORL_STEP*8(RA)
3438 | lfd f3, FORL_STEP*8(RA)
3439 | lwz TMP2, FORL_STOP*8(RA)
3440 | lfd f2, FORL_STOP*8(RA)
3441 | cmplw cr0, TMP1, TISNUM
3442 | cmplw cr7, TMP3, TISNUM
3443 | cmplw cr1, TMP2, TISNUM
3444 | crand 4*cr0+lt, 4*cr0+lt, 4*cr7+lt 4180 | crand 4*cr0+lt, 4*cr0+lt, 4*cr7+lt
4181 | lfd f3, FORL_STEP*8(RA)
3445 | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt 4182 | crand 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
4183 | lfd f2, FORL_STOP*8(RA)
3446 | bge ->vmeta_for 4184 | bge ->vmeta_for
3447 } 4185 }
3448 | cmpwi cr3, TMP3, 0 4186 | cmpwi cr6, TMP3, 0
3449 if (op != BC_JFORL) { 4187 if (op != BC_JFORL) {
3450 | srwi RD, RD, 1 4188 | srwi RD, RD, 1
3451 } 4189 }
@@ -3457,22 +4195,30 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3457 if (op == BC_JFORI) { 4195 if (op == BC_JFORI) {
3458 | addis PC, RD, -(BCBIAS_J*4 >> 16) 4196 | addis PC, RD, -(BCBIAS_J*4 >> 16)
3459 } 4197 }
3460 | blt cr3, >5 4198 | blt cr6, >5
3461 if (op == BC_FORI) { 4199 if (op == BC_FORI) {
3462 | bgt >3 4200 | bgt >3
3463 } else if (op == BC_IFORL) { 4201 } else if (op == BC_IFORL) {
3464 | bgt >2 4202 if (LJ_DUALNUM) {
4203 | bgt <2
4204 } else {
4205 | bgt >2
4206 }
3465 |1: 4207 |1:
3466 | addis PC, RD, -(BCBIAS_J*4 >> 16) 4208 | addis PC, RD, -(BCBIAS_J*4 >> 16)
3467 } else { 4209 } else {
3468 | ble =>BC_JLOOP 4210 | ble =>BC_JLOOP
3469 } 4211 }
3470 |2: 4212 if (LJ_DUALNUM) {
3471 | ins_next 4213 | b <2
4214 } else {
4215 |2:
4216 | ins_next
4217 }
3472 |5: // Negative step. 4218 |5: // Negative step.
3473 if (op == BC_FORI) { 4219 if (op == BC_FORI) {
3474 | bge <2 4220 | bge <2
3475 |3: 4221 |3: // Used by integer loop, too.
3476 | addis PC, RD, -(BCBIAS_J*4 >> 16) 4222 | addis PC, RD, -(BCBIAS_J*4 >> 16)
3477 } else if (op == BC_IFORL) { 4223 } else if (op == BC_IFORL) {
3478 | bge <1 4224 | bge <1
diff --git a/src/buildvm_ppc.h b/src/buildvm_ppc.h
index b5d80346..ba8d2862 100644
--- a/src/buildvm_ppc.h
+++ b/src/buildvm_ppc.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned int build_actionlist[5561] = { 15static const unsigned int build_actionlist[7101] = {
160x00010001, 160x00010001,
170x00060014, 170x00060014,
180x72000000, 180x72000000,
@@ -802,14 +802,21 @@ static const unsigned int build_actionlist[5561] = {
8020x48000000, 8020x48000000,
8030x00050001, 8030x00050001,
8040x0006002e, 8040x0006002e,
8050x00000000,
8050x90010024, 8060x90010024,
8060xc8010020, 8070xc8010020,
8070xfc00f028, 8080xfc00f028,
8090x00000000,
8080x54ea5d78, 8100x54ea5d78,
8090x38b10000, 8110x38b10000,
8100x00098200, 8120x00098200,
8110x7c8e5214, 8130x7c8e5214,
8140x00000000,
8150x92c50000,
8160x90050004,
8170x00000000,
8120xd8050000, 8180xd8050000,
8190x00000000,
8130x48000000, 8200x48000000,
8140x00050001, 8210x00050001,
8150x0006002f, 8220x0006002f,
@@ -853,7 +860,6 @@ static const unsigned int build_actionlist[5561] = {
8530x00060030, 8600x00060030,
8540x38b10000, 8610x38b10000,
8550x00098200, 8620x00098200,
8560x00000000,
8570x38000000, 8630x38000000,
8580x00098200, 8640x00098200,
8590x54ea5d78, 8650x54ea5d78,
@@ -878,14 +884,21 @@ static const unsigned int build_actionlist[5561] = {
8780x48000000, 8840x48000000,
8790x00050001, 8850x00050001,
8800x00060032, 8860x00060032,
8870x00000000,
8810x90010024, 8880x90010024,
8820xc8010020, 8890xc8010020,
8830xfc00f028, 8900xfc00f028,
8910x00000000,
8840x54ea5d78, 8920x54ea5d78,
8850x38b10000, 8930x38b10000,
8860x00098200, 8940x00098200,
8870x7c8e5214, 8950x7c8e5214,
8960x00000000,
8970x92c50000,
8980x90050004,
8990x00000000,
8880xd8050000, 9000xd8050000,
9010x00000000,
8890x48000000, 9020x48000000,
8900x00050001, 9030x00050001,
8910x00060033, 9040x00060033,
@@ -930,12 +943,19 @@ static const unsigned int build_actionlist[5561] = {
9300x00060034, 9430x00060034,
9310x7e439378, 9440x7e439378,
9320x3a10fffc, 9450x3a10fffc,
9460x00000000,
9470x7e84a378,
9480x00000000,
9330x7c8ea214, 9490x7c8ea214,
9500x00000000,
9340x92010008, 9510x92010008,
9520x00000000,
9530x7d856378,
9540x00000000,
9350x7cae6214, 9550x7cae6214,
9560x00000000,
9360x91d20000, 9570x91d20000,
9370x00098200, 9580x00098200,
9380x00000000,
9390x54e6063e, 9590x54e6063e,
9400x48000001, 9600x48000001,
9410x00030003, 9610x00030003,
@@ -996,10 +1016,18 @@ static const unsigned int build_actionlist[5561] = {
9960x48000000, 10160x48000000,
9970x0005000d, 10170x0005000d,
9980x0006003a, 10180x0006003a,
9990x7cae5214, 10190x00000000,
10000x7ccf5a14, 10200x7ce43b78,
10210x3a10fffc,
10220x91d20000,
10230x00098200,
10240x7e439378,
10250x92010008,
10260x48000001,
10270x00030005,
10010x48000000, 10280x48000000,
10020x00050001, 10290x0005000d,
10300x00000000,
10030x0006003b, 10310x0006003b,
10040x7caf5a14, 10320x7caf5a14,
10050x7cce5214, 10330x7cce5214,
@@ -1007,13 +1035,34 @@ static const unsigned int build_actionlist[5561] = {
10070x00050001, 10350x00050001,
10080x0006003c, 10360x0006003c,
10090x00000000, 10370x00000000,
10380x7d655b78,
10390x7d465378,
10400x48000000,
10410x00050001,
10420x00000000,
10430x0006003d,
10100x7d856378, 10440x7d856378,
10110x7d866378, 10450x7d866378,
10120x48000000, 10460x48000000,
10130x00050001, 10470x00050001,
10140x0006003d, 10480x0006003e,
10490x7cae5214,
10500x7ccf5a14,
10510x48000000,
10520x00050001,
10530x0006003f,
10150x7cae5214, 10540x7cae5214,
10160x7cce5a14, 10550x7cce5a14,
10560x00000000,
10570x48000000,
10580x00050001,
10590x00000000,
10600x00060040,
10610x00060041,
10620x00000000,
10630x7d455378,
10640x7d665b78,
10650x00000000,
10170x0006000b, 10660x0006000b,
10180x7c8ea214, 10670x7c8ea214,
10190x91d20000, 10680x91d20000,
@@ -1022,7 +1071,7 @@ static const unsigned int build_actionlist[5561] = {
10220x92010008, 10710x92010008,
10230x54e7063e, 10720x54e7063e,
10240x48000001, 10730x48000001,
10250x00030005, 10740x00030006,
10260x28030000, 10750x28030000,
10270x41820000, 10760x41820000,
10280x0005082b, 10770x0005082b,
@@ -1036,7 +1085,7 @@ static const unsigned int build_actionlist[5561] = {
10360x39600010, 10850x39600010,
10370x48000000, 10860x48000000,
10380x00050024, 10870x00050024,
10390x0006003e, 10880x00060042,
10400x00000000, 10890x00000000,
10410x7c751b78, 10900x7c751b78,
10420x00000000, 10910x00000000,
@@ -1046,14 +1095,14 @@ static const unsigned int build_actionlist[5561] = {
10460x7e439378, 10950x7e439378,
10470x92010008, 10960x92010008,
10480x48000001, 10970x48000001,
10490x00030006, 10980x00030007,
10500x00000000, 10990x00000000,
10510x28030000, 11000x28030000,
10520x40820000, 11010x40820000,
10530x00050835, 11020x00050835,
10540x7ea3ab78, 11030x7ea3ab78,
10550x48000000, 11040x48000000,
10560x0005003f, 11050x00050043,
10570x00000000, 11060x00000000,
10580x48000000, 11070x48000000,
10590x00050035, 11080x00050035,
@@ -1067,7 +1116,7 @@ static const unsigned int build_actionlist[5561] = {
10670x7cae5a14, 11160x7cae5a14,
10680x7d755b78, 11170x7d755b78,
10690x48000001, 11180x48000001,
10700x00030007, 11190x00030008,
10710x814efffc, 11200x814efffc,
10720x39750008, 11210x39750008,
10730x920efff8, 11220x920efff8,
@@ -1081,7 +1130,7 @@ static const unsigned int build_actionlist[5561] = {
10810x7e947214, 11300x7e947214,
10820x7c0903a6, 11310x7c0903a6,
10830x4e800420, 11320x4e800420,
10840x00060040, 11330x00060044,
10850x7e439378, 11340x7e439378,
10860x91d20000, 11350x91d20000,
10870x00098200, 11360x00098200,
@@ -1090,13 +1139,13 @@ static const unsigned int build_actionlist[5561] = {
10900x7cb45a14, 11390x7cb45a14,
10910x7d755b78, 11400x7d755b78,
10920x48000001, 11410x48000001,
10930x00030007, 11420x00030008,
10940x810efff8, 11430x810efff8,
10950x39750008, 11440x39750008,
10960x8154fffc, 11450x8154fffc,
10970x48000000, 11460x48000000,
10980x00050041, 11470x00050045,
10990x00060042, 11480x00060046,
11000x7e439378, 11490x7e439378,
11010x91d20000, 11500x91d20000,
11020x00098200, 11510x00098200,
@@ -1104,7 +1153,7 @@ static const unsigned int build_actionlist[5561] = {
11040x92010008, 11530x92010008,
11050x7cf53b78, 11540x7cf53b78,
11060x48000001, 11550x48000001,
11070x00030008, 11560x00030009,
11080x00000000, 11570x00000000,
11090x56a0063e, 11580x56a0063e,
11100x00000000, 11590x00000000,
@@ -1120,24 +1169,24 @@ static const unsigned int build_actionlist[5561] = {
11200x00000000, 11690x00000000,
11210x48000000, 11700x48000000,
11220x00070000, 11710x00070000,
11230x00060043, 11720x00060047,
11240x280b0008, 11730x280b0008,
11250x80ae0000, 11740x80ae0000,
11260x806e0004, 11750x806e0004,
11270x41800000, 11760x41800000,
11280x00050844, 11770x00050848,
11290x39000000, 11780x39000000,
11300x00098200, 11790x00098200,
11310x3a8efff8, 11800x3a8efff8,
11320x7c854040, 11810x7c854040,
11330x820efff8, 11820x820efff8,
11340x40840000, 11830x40840000,
11350x00050844, 11840x00050848,
11360x90b40000, 11850x90b40000,
11370x398b0008, 11860x398b0008,
11380x90740004, 11870x90740004,
11390x41820000, 11880x41820000,
11400x00050845, 11890x00050849,
11410x39000008, 11900x39000008,
11420x396bfff8, 11910x396bfff8,
11430x0006000b, 11920x0006000b,
@@ -1148,12 +1197,12 @@ static const unsigned int build_actionlist[5561] = {
11480x40820000, 11970x40820000,
11490x0005080b, 11980x0005080b,
11500x48000000, 11990x48000000,
11510x00050045, 12000x00050049,
11520x00060046, 12010x0006004a,
11530x280b0008, 12020x280b0008,
11540x806e0000, 12030x806e0000,
11550x41800000, 12040x41800000,
11560x00050844, 12050x00050848,
11570x7c161810, 12060x7c161810,
11580x7d231910, 12070x7d231910,
11590x7d280338, 12080x7d280338,
@@ -1165,13 +1214,13 @@ static const unsigned int build_actionlist[5561] = {
11650x00098200, 12140x00098200,
11660x7c2944ae, 12150x7c2944ae,
11670x48000000, 12160x48000000,
11680x00050047, 12170x0005004b,
11690x00060048, 12180x0006004c,
11700x280b0008, 12190x280b0008,
11710x80ae0000, 12200x80ae0000,
11720x806e0004, 12210x806e0004,
11730x41800000, 12220x41800000,
11740x00050844, 12230x00050848,
11750x2c050000, 12240x2c050000,
11760x00098200, 12250x00098200,
11770x40820000, 12260x40820000,
@@ -1187,7 +1236,7 @@ static const unsigned int build_actionlist[5561] = {
11870x81710000, 12360x81710000,
11880x00098200, 12370x00098200,
11890x41820000, 12380x41820000,
11900x00050849, 12390x0005084d,
11910x80030000, 12400x80030000,
11920x00098200, 12410x00098200,
11930x38a00000, 12420x38a00000,
@@ -1224,7 +1273,7 @@ static const unsigned int build_actionlist[5561] = {
12240x00098200, 12730x00098200,
12250x28090000, 12740x28090000,
12260x41820000, 12750x41820000,
12270x00050849, 12760x0005084d,
12280x48000000, 12770x48000000,
12290x0005000d, 12780x0005000d,
12300x0006000f, 12790x0006000f,
@@ -1232,11 +1281,11 @@ static const unsigned int build_actionlist[5561] = {
12320x2c040000, 12810x2c040000,
12330x00098200, 12820x00098200,
12340x41820000, 12830x41820000,
12350x00050849, 12840x0005084d,
12360x7c852378, 12850x7c852378,
12370x7d034378, 12860x7d034378,
12380x48000000, 12870x48000000,
12390x00050049, 12880x0005004d,
12400x00060010, 12890x00060010,
12410x2c050000, 12900x2c050000,
12420x00098200, 12910x00098200,
@@ -1254,35 +1303,35 @@ static const unsigned int build_actionlist[5561] = {
12540x7c69402e, 13030x7c69402e,
12550x48000000, 13040x48000000,
12560x0005000c, 13050x0005000c,
12570x0006004a, 13060x0006004e,
12580x280b0010, 13070x280b0010,
12590x80ae0000, 13080x80ae0000,
12600x80ce0008, 13090x80ce0008,
12610x806e0004, 13100x806e0004,
12620x808e000c, 13110x808e000c,
12630x41800000, 13120x41800000,
12640x00050844, 13130x00050848,
12650x2c050000, 13140x2c050000,
12660x00098200, 13150x00098200,
12670x40820000, 13160x40820000,
12680x00050844, 13170x00050848,
12690x81030000, 13180x81030000,
12700x00098200, 13190x00098200,
12710x2c060000, 13200x2c060000,
12720x00098200, 13210x00098200,
12730x40820000, 13220x40820000,
12740x00050844, 13230x00050848,
12750x28080000, 13240x28080000,
12760x88c30000, 13250x88c30000,
12770x00098200, 13260x00098200,
12780x40820000, 13270x40820000,
12790x00050844, 13280x00050848,
12800x70c00000, 13290x70c00000,
12810x00090200, 13300x00090200,
12820x90830000, 13310x90830000,
12830x00098200, 13320x00098200,
12840x41820000, 13330x41820000,
12850x00050849, 13340x0005084d,
12860x00000000, 13350x00000000,
12870x80110000, 13360x80110000,
12880x00098200, 13370x00098200,
@@ -1294,45 +1343,45 @@ static const unsigned int build_actionlist[5561] = {
12940x90030000, 13430x90030000,
12950x00098200, 13440x00098200,
12960x48000000, 13450x48000000,
12970x00050049, 13460x0005004d,
12980x0006004b, 13470x0006004f,
12990x280b0008, 13480x280b0008,
13000x80ce0000, 13490x80ce0000,
13010x808e0004, 13500x808e0004,
13020x41800000, 13510x41800000,
13030x00050844, 13520x00050848,
13040x2c060000, 13530x2c060000,
13050x00098200, 13540x00098200,
13060x40820000, 13550x40820000,
13070x00050844, 13560x00050848,
13080x38ae0008, 13570x38ae0008,
13090x7e439378, 13580x7e439378,
13100x48000001, 13590x48000001,
13110x00030009, 13600x0003000a,
13120xc8230000, 13610xc8230000,
13130x48000000, 13620x48000000,
13140x00050047, 13630x0005004b,
13150x0006004c, 13640x00060050,
13160x280b0008, 13650x280b0008,
13170x806e0000, 13660x806e0000,
13180xc82e0000, 13670xc82e0000,
13190x40820000, 13680x40820000,
13200x00050844, 13690x00050848,
13210x7c03b040, 13700x7c03b040,
13220x41810000, 13710x41810000,
13230x00050844, 13720x00050848,
13240x48000000, 13730x48000000,
13250x00050047, 13740x0005004b,
13260x0006004d, 13750x00060051,
13270x280b0008, 13760x280b0008,
13280x80ae0000, 13770x80ae0000,
13290x806e0004, 13780x806e0004,
13300x41800000, 13790x41800000,
13310x00050844, 13800x00050848,
13320x2c050000, 13810x2c050000,
13330x00098200, 13820x00098200,
13340x41820000, 13830x41820000,
13350x00050849, 13840x0005084d,
13360x80110000, 13850x80110000,
13370x00098200, 13860x00098200,
13380x7c05b040, 13870x7c05b040,
@@ -1342,7 +1391,7 @@ static const unsigned int build_actionlist[5561] = {
13420x4c413342, 13910x4c413342,
13430x92010008, 13920x92010008,
13440x41820000, 13930x41820000,
13450x00050844, 13940x00050848,
13460x00000000, 13950x00000000,
13470x80110000, 13960x80110000,
13480x00098200, 13970x00098200,
@@ -1350,27 +1399,32 @@ static const unsigned int build_actionlist[5561] = {
13500x00098200, 13990x00098200,
13510x7c004040, 14000x7c004040,
13520x40800001, 14010x40800001,
13530x0005084e, 14020x00050852,
13540x7e439378, 14030x7e439378,
13550x7dc47378, 14040x7dc47378,
14050x00000000,
13560x48000001, 14060x48000001,
13570x0003000a, 14070x0003000b,
14080x00000000,
14090x48000001,
14100x0003000c,
14110x00000000,
13580x38a00000, 14120x38a00000,
13590x00098200, 14130x00098200,
13600x48000000, 14140x48000000,
13610x00050049, 14150x0005004d,
13620x0006004f, 14160x00060053,
13630x280b0008, 14170x280b0008,
13640x806e0000, 14180x806e0000,
13650x808e0004, 14190x808e0004,
13660x41800000, 14200x41800000,
13670x00050844, 14210x00050848,
13680x7eee592e, 14220x7eee592e,
13690x2c030000, 14230x2c030000,
13700x00098200, 14240x00098200,
13710x820efff8, 14250x820efff8,
13720x40820000, 14260x40820000,
13730x00050844, 14270x00050848,
13740x91d20000, 14280x91d20000,
13750x00098200, 14290x00098200,
13760x7e439378, 14300x7e439378,
@@ -1379,12 +1433,12 @@ static const unsigned int build_actionlist[5561] = {
13790x38ae0008, 14330x38ae0008,
13800x92010008, 14340x92010008,
13810x48000001, 14350x48000001,
13820x0003000b, 14360x0003000d,
13830x28030000, 14370x28030000,
13840x38a00000, 14380x38a00000,
13850x00098200, 14390x00098200,
13860x41820000, 14400x41820000,
13870x00050849, 14410x0005084d,
13880xc80e0008, 14420xc80e0008,
13890x3a8efff8, 14430x3a8efff8,
13900xc82e0010, 14440xc82e0010,
@@ -1393,18 +1447,18 @@ static const unsigned int build_actionlist[5561] = {
13930x00098200, 14470x00098200,
13940xd8340008, 14480xd8340008,
13950x48000000, 14490x48000000,
13960x00050045, 14500x00050049,
13970x00060050, 14510x00060054,
13980x280b0008, 14520x280b0008,
13990x80ae0000, 14530x80ae0000,
14000x806e0004, 14540x806e0004,
14010x41800000, 14550x41800000,
14020x00050844, 14560x00050848,
14030x2c050000, 14570x2c050000,
14040x00098200, 14580x00098200,
14050x820efff8, 14590x820efff8,
14060x40820000, 14600x40820000,
14070x00050844, 14610x00050848,
14080x00000000, 14620x00000000,
14090x81230000, 14630x81230000,
14100x00098200, 14640x00098200,
@@ -1413,7 +1467,7 @@ static const unsigned int build_actionlist[5561] = {
14130x28090000, 14670x28090000,
14140x3a8efff8, 14680x3a8efff8,
14150x40820000, 14690x40820000,
14160x00050844, 14700x00050848,
14170x00000000, 14710x00000000,
14180xc80a0000, 14720xc80a0000,
14190x00098200, 14730x00098200,
@@ -1424,41 +1478,61 @@ static const unsigned int build_actionlist[5561] = {
14240x00098200, 14780x00098200,
14250xd8140000, 14790xd8140000,
14260x48000000, 14800x48000000,
14270x00050045, 14810x00050049,
14280x00060051, 14820x00060055,
14290x280b0010, 14830x280b0010,
14300x80ae0000, 14840x80ae0000,
14310x806e0004, 14850x806e0004,
14320x80ce0008, 14860x80ce0008,
14870x00000000,
14880x812e000c,
14890x00000000,
14330xc84e0008, 14900xc84e0008,
14910x00000000,
14340x41800000, 14920x41800000,
14350x00050844, 14930x00050848,
14360x2c050000, 14940x2c050000,
14370x00098200, 14950x00098200,
14380x7c86b040, 14960x7c86b040,
14390x820efff8, 14970x820efff8,
14980x00000000,
14990x40820000,
15000x00050848,
15010x40860000,
15020x00050848,
15030x00000000,
14400x3c003ff0, 15040x3c003ff0,
14410x9301000c, 15050x9301000c,
14420x40820000, 15060x40820000,
14430x00050844, 15070x00050848,
14440x90010008, 15080x90010008,
14450x40840000, 15090x40840000,
14460x00050844, 15100x00050848,
14470xc8210008, 15110xc8210008,
14480xfc00101e, 15120xfc00101e,
14490xd8010008, 15130xd8010008,
14500x8121000c, 15140x8121000c,
15150x00000000,
14510x80030000, 15160x80030000,
14520x00098200, 15170x00098200,
14530x81030000, 15180x81030000,
14540x00098200, 15190x00098200,
15200x00000000,
14550xfc42082a, 15210xfc42082a,
15220x00000000,
14560x39290001, 15230x39290001,
14570x3a8efff8, 15240x3a8efff8,
14580x7c004840, 15250x7c004840,
15260x00000000,
15270x92d40000,
15280x55261800,
15290x000900a1,
15300x91340004,
15310x00000000,
14590x55261800, 15320x55261800,
14600x000900a1, 15330x000900a1,
14610xd8540000, 15340xd8540000,
15350x00000000,
14620x40810000, 15360x40810000,
14630x00050802, 15370x00050802,
14640x7d28302e, 15380x7d28302e,
@@ -1469,12 +1543,12 @@ static const unsigned int build_actionlist[5561] = {
14690x39800000, 15430x39800000,
14700x00098200, 15440x00098200,
14710x41820000, 15450x41820000,
14720x00050845, 15460x00050849,
14730x39800000, 15470x39800000,
14740x00098200, 15480x00098200,
14750xd8140008, 15490xd8140008,
14760x48000000, 15500x48000000,
14770x00050045, 15510x00050049,
14780x0006000c, 15520x0006000c,
14790x80030000, 15530x80030000,
14800x00098200, 15540x00098200,
@@ -1482,31 +1556,30 @@ static const unsigned int build_actionlist[5561] = {
14820x39800000, 15560x39800000,
14830x00098200, 15570x00098200,
14840x41820000, 15580x41820000,
14850x00050845, 15590x00050849,
14860x7d244b78, 15600x7d244b78,
14870x48000001, 15610x48000001,
14880x0003000c, 15620x0003000e,
14890x00000000,
14900x28030000, 15630x28030000,
14910x39800000, 15640x39800000,
14920x00098200, 15650x00098200,
14930x41820000, 15660x41820000,
14940x00050845, 15670x00050849,
14950x81230000, 15680x81230000,
14960xc8030000, 15690xc8030000,
14970x48000000, 15700x48000000,
14980x0005000b, 15710x0005000b,
14990x00060052, 15720x00060056,
15000x280b0008, 15730x280b0008,
15010x80ae0000, 15740x80ae0000,
15020x806e0004, 15750x806e0004,
15030x41800000, 15760x41800000,
15040x00050844, 15770x00050848,
15050x2c050000, 15780x2c050000,
15060x00098200, 15790x00098200,
15070x820efff8, 15800x820efff8,
15080x40820000, 15810x40820000,
15090x00050844, 15820x00050848,
15100x00000000, 15830x00000000,
15110x81230000, 15840x81230000,
15120x00098200, 15850x00098200,
@@ -1515,25 +1588,28 @@ static const unsigned int build_actionlist[5561] = {
15150x28090000, 15880x28090000,
15160x3a8efff8, 15890x3a8efff8,
15170x40820000, 15900x40820000,
15180x00050844, 15910x00050848,
15190x00000000, 15920x00000000,
15200xc80a0000, 15930xc80a0000,
15210x00098200, 15940x00098200,
15220x3a8efff8, 15950x3a8efff8,
15230x00000000, 15960x00000000,
15970x92ce0008,
15980x00000000,
15240x930e0008, 15990x930e0008,
16000x00000000,
15250x930e000c, 16010x930e000c,
15260x39800000, 16020x39800000,
15270x00098200, 16030x00098200,
15280xd8140000, 16040xd8140000,
15290x48000000, 16050x48000000,
15300x00050045, 16060x00050049,
15310x00060053, 16070x00060057,
15320x280b0008, 16080x280b0008,
15330x88d10000, 16090x88d10000,
15340x00098200, 16100x00098200,
15350x41800000, 16110x41800000,
15360x00050844, 16120x00050848,
15370x7dc97378, 16130x7dc97378,
15380x39ce0008, 16140x39ce0008,
15390x54c607fe, 16150x54c607fe,
@@ -1543,21 +1619,21 @@ static const unsigned int build_actionlist[5561] = {
15430x00098200, 16190x00098200,
15440x48000000, 16200x48000000,
15450x00050024, 16210x00050024,
15460x00060054, 16220x00060058,
15470x280b0010, 16230x280b0010,
15480x80ce0008, 16240x80ce0008,
15490xc84e0008, 16250xc84e0008,
15500x80ae0000, 16260x80ae0000,
15510xc82e0000, 16270xc82e0000,
15520x41800000, 16280x41800000,
15530x00050844, 16290x00050848,
15540x89110000, 16300x89110000,
15550x00098200, 16310x00098200,
15560x7dc97378, 16320x7dc97378,
15570x2c060000, 16330x2c060000,
15580x00098200, 16340x00098200,
15590x40820000, 16350x40820000,
15600x00050844, 16360x00050848,
15610x39ce0010, 16370x39ce0010,
15620x550807fe, 16380x550807fe,
15630x000900ab, 16390x000900ab,
@@ -1568,16 +1644,16 @@ static const unsigned int build_actionlist[5561] = {
15680x00098200, 16440x00098200,
15690x48000000, 16450x48000000,
15700x00050024, 16460x00050024,
15710x00060055, 16470x00060059,
15720x280b0008, 16480x280b0008,
15730x80ae0000, 16490x80ae0000,
15740x806e0004, 16500x806e0004,
15750x41800000, 16510x41800000,
15760x00050844, 16520x00050848,
15770x2c050000, 16530x2c050000,
15780x00098200, 16540x00098200,
15790x40820000, 16550x40820000,
15800x00050844, 16560x00050848,
15810x88030000, 16570x88030000,
15820x00098200, 16580x00098200,
15830x81030000, 16590x81030000,
@@ -1604,7 +1680,7 @@ static const unsigned int build_actionlist[5561] = {
16040x91d20000, 16800x91d20000,
16050x00098200, 16810x00098200,
16060x41980000, 16820x41980000,
16070x00050844, 16830x00050848,
16080x0006000b, 16840x0006000b,
16090x39ce0008, 16850x39ce0008,
16100x396bfff8, 16860x396bfff8,
@@ -1706,7 +1782,7 @@ static const unsigned int build_actionlist[5561] = {
17060x38600000, 17820x38600000,
17070x48000000, 17830x48000000,
17080x0005000e, 17840x0005000e,
17090x00060056, 17850x0006005a,
17100x00000000, 17860x00000000,
17110x806a0000, 17870x806a0000,
17120x00098200, 17880x00098200,
@@ -1735,7 +1811,7 @@ static const unsigned int build_actionlist[5561] = {
17350x91d20000, 18110x91d20000,
17360x00098200, 18120x00098200,
17370x41980000, 18130x41980000,
17380x00050844, 18140x00050848,
17390x0006000b, 18150x0006000b,
17400x91230000, 18160x91230000,
17410x00098200, 18170x00098200,
@@ -1810,7 +1886,7 @@ static const unsigned int build_actionlist[5561] = {
18100x7e439378, 18860x7e439378,
18110x7ea4ab78, 18870x7ea4ab78,
18120x48000001, 18880x48000001,
18130x0003000d, 18890x0003000f,
18140x00060013, 18900x00060013,
18150x7e439378, 18910x7e439378,
18160x558400fe, 18920x558400fe,
@@ -1820,7 +1896,7 @@ static const unsigned int build_actionlist[5561] = {
18200x38600000, 18960x38600000,
18210x48000000, 18970x48000000,
18220x0005000e, 18980x0005000e,
18230x00060057, 18990x0006005b,
18240x80120000, 19000x80120000,
18250x00098200, 19010x00098200,
18260x00000000, 19020x00000000,
@@ -1834,32 +1910,54 @@ static const unsigned int build_actionlist[5561] = {
18340x38600000, 19100x38600000,
18350x00098200, 19110x00098200,
18360x41820000, 19120x41820000,
18370x00050844, 19130x00050848,
18380x93120000, 19140x93120000,
18390x00098200, 19150x00098200,
18400x98720000, 19160x98720000,
18410x00098200, 19170x00098200,
18420x48000000, 19180x48000000,
18430x0005001a, 19190x0005001a,
18440x00060058, 19200x0006005c,
18450x280b0008, 19210x280b0008,
18460x80ae0000, 19220x80ae0000,
18470x806e0004, 19230x806e0004,
18480x41800000, 19240x41800000,
18490x00050844, 19250x00050848,
18500x7c05b040, 19260x7c05b040,
19270x00000000,
19280x40820000,
19290x00050802,
19300x7c68fe70,
19310x7d091a78,
19320x7c684851,
19330x41800000,
19340x00050801,
19350x0006005d,
19360x820efff8,
19370x3a8efff8,
19380x92cefff8,
19390x906efffc,
19400x48000000,
19410x0005005e,
19420x0006000b,
19430x3ca041e0,
19440x38600000,
19450x48000000,
19460x0005004d,
19470x0006000c,
19480x00000000,
18510x40800000, 19490x40800000,
18520x00050844, 19500x00050848,
18530x54a5007e, 19510x54a5007e,
18540x00060049, 19520x0006004d,
18550x820efff8, 19530x820efff8,
18560x90aefff8, 19540x90aefff8,
18570x3a8efff8, 19550x3a8efff8,
18580x906efffc, 19560x906efffc,
18590x00060059, 19570x0006005e,
18600x39800000, 19580x39800000,
18610x00098200, 19590x00098200,
18620x00060045, 19600x00060049,
18630x72000000, 19610x72000000,
18640x00090200, 19620x00090200,
18650x7d936378, 19630x7d936378,
@@ -1889,352 +1987,580 @@ static const unsigned int build_actionlist[5561] = {
18890x7ef4412e, 19870x7ef4412e,
18900x48000000, 19880x48000000,
18910x0005000f, 19890x0005000f,
18920x0006005a,
18930x00000000, 19900x00000000,
19910x0006005f,
18940x280b0008, 19920x280b0008,
18950x80ae0000, 19930x80ae0000,
18960xc82e0000, 19940x806e0004,
18970x41800000, 19950x41800000,
18980x00050844, 19960x00050848,
18990x7c05b040, 19970x7c05b040,
19980x41820000,
19990x0005084d,
20000x54a9657e,
19000x40800000, 20010x40800000,
19010x00050844, 20020x00050848,
20030x3529fc01,
20040x2889001f,
20050x2009001f,
20060x41800000,
20070x00050803,
20080x54a85800,
20090x000900a1,
20100x5466057e,
20110x000900ab,
20120x65088000,
20130x39290001,
20140x7d083378,
20150x54645800,
20160x000900a1,
20170x40840000,
20180x00050804,
20190x7d064830,
20200x7d030430,
20210x7cc62378,
20220x7ca9fe70,
20230x7cc84838,
20240x3008ffff,
20250x7d004110,
20260x7c634214,
20270x7c634a78,
20280x7c691850,
20290x48000000,
20300x0005005d,
20310x0006000d,
20320x7d252a14,
20330x7ca8fe70,
20340x7c694b78,
20350x7d284038,
20360x21280000,
20370x7c631910,
20380x48000000,
20390x0005005d,
20400x0006000e,
20410x6d088000,
20420x7ca9fe70,
20430x7d082378,
20440x7d084b39,
20450x4c423202,
20460x3c608000,
20470x41820000,
20480x0005085d,
20490x0006000f,
19020x48000001, 20500x48000001,
19030x0003000e, 20510x00030010,
19040x48000000, 20520x48000000,
19050x00050047, 20530x0005004b,
19060x0006005b, 20540x00060060,
19070x280b0008, 20550x280b0008,
19080x80ae0000, 20560x80ae0000,
19090xc82e0000, 20570x806e0004,
19100x41800000, 20580x41800000,
19110x00050844, 20590x00050848,
19120x7c05b040, 20600x7c05b040,
20610x41820000,
20620x0005084d,
20630x54a9657e,
19130x40800000, 20640x40800000,
19140x00050844, 20650x00050848,
20660x3529fc01,
20670x2889001f,
20680x2009001f,
20690x41800000,
20700x00050803,
20710x00000000,
20720x54a85800,
20730x000900a1,
20740x5466057e,
20750x000900ab,
20760x65088000,
20770x39290001,
20780x7d083378,
20790x54645800,
20800x000900a1,
20810x40840000,
20820x00050804,
20830x7d064830,
20840x7d030430,
20850x7cc62378,
20860x7ca9fe70,
20870x7cc84878,
20880x3008ffff,
20890x7d004110,
20900x7c634615,
20910x7c634a78,
20920x7c691850,
20930x40830000,
20940x0005085d,
20950x7c000400,
20960x40810000,
20970x0005085d,
20980x3ca041e0,
20990x38600000,
21000x48000000,
21010x0005004d,
21020x0006000d,
21030x7d252a14,
21040x7ca8fe70,
21050x7c694b78,
21060x7d284078,
21070x3128ffff,
21080x7c694110,
21090x48000000,
21100x0005005d,
21110x0006000e,
21120x6d088000,
21130x7ca9fe70,
21140x7d084b39,
21150x4c423202,
21160x3c608000,
21170x41820000,
21180x0005085d,
21190x0006000f,
19150x48000001, 21200x48000001,
19160x0003000f, 21210x00030011,
19170x48000000, 21220x48000000,
19180x00050047, 21230x0005004b,
19190x0006005c, 21240x00000000,
21250x0006005f,
19200x280b0008, 21260x280b0008,
19210x80ae0000, 21270x80ae0000,
19220xc82e0000, 21280xc82e0000,
19230x41800000, 21290x41800000,
19240x00050844, 21300x00050848,
19250x7c05b040, 21310x7c05b040,
19260x40800000, 21320x40800000,
19270x00050844, 21330x00050848,
19280x48000001, 21340x48000001,
19290x00030010, 21350x00030010,
19300x48000000, 21360x48000000,
19310x00050047, 21370x0005004b,
19320x0006005d, 21380x00060060,
19330x280b0008, 21390x280b0008,
19340x80ae0000, 21400x80ae0000,
19350xc82e0000, 21410xc82e0000,
19360x41800000, 21420x41800000,
19370x00050844, 21430x00050848,
19380x7c05b040, 21440x7c05b040,
19390x40800000, 21450x40800000,
19400x00050844, 21460x00050848,
19410x48000001, 21470x48000001,
19420x00030011, 21480x00030011,
19430x48000000, 21490x48000000,
19440x00050047, 21500x0005004b,
19450x0006005e, 21510x00000000,
21520x00060061,
19460x280b0008, 21530x280b0008,
19470x80ae0000, 21540x80ae0000,
19480xc82e0000, 21550xc82e0000,
19490x41800000, 21560x41800000,
19500x00050844, 21570x00050848,
19510x7c05b040, 21580x7c05b040,
19520x40800000, 21590x40800000,
19530x00050844, 21600x00050848,
19540x00000000,
19550x48000001, 21610x48000001,
19560x00030012, 21620x00030012,
19570x48000000, 21630x48000000,
19580x00050047, 21640x0005004b,
19590x0006005f, 21650x00060062,
19600x280b0008, 21660x280b0008,
19610x80ae0000, 21670x80ae0000,
19620xc82e0000, 21680xc82e0000,
19630x41800000, 21690x41800000,
19640x00050844, 21700x00050848,
19650x7c05b040, 21710x7c05b040,
19660x40800000, 21720x40800000,
19670x00050844, 21730x00050848,
19680x48000001, 21740x48000001,
19690x00030013, 21750x00030013,
19700x48000000, 21760x48000000,
19710x00050047, 21770x0005004b,
19720x00060060, 21780x00060063,
19730x280b0008, 21790x280b0008,
19740x80ae0000, 21800x80ae0000,
19750xc82e0000, 21810xc82e0000,
19760x41800000, 21820x41800000,
19770x00050844, 21830x00050848,
19780x7c05b040, 21840x7c05b040,
19790x40800000, 21850x40800000,
19800x00050844, 21860x00050848,
19810x48000001, 21870x48000001,
19820x00030014, 21880x00030014,
19830x48000000, 21890x48000000,
19840x00050047, 21900x0005004b,
19850x00060061, 21910x00060064,
19860x280b0008, 21920x280b0008,
19870x80ae0000, 21930x80ae0000,
19880xc82e0000, 21940xc82e0000,
19890x41800000, 21950x41800000,
19900x00050844, 21960x00050848,
19910x7c05b040, 21970x7c05b040,
19920x40800000, 21980x40800000,
19930x00050844, 21990x00050848,
19940x48000001, 22000x48000001,
19950x00030015, 22010x00030015,
19960x48000000, 22020x48000000,
19970x00050047, 22030x0005004b,
19980x00060062, 22040x00060065,
19990x280b0008, 22050x280b0008,
20000x80ae0000, 22060x80ae0000,
20010xc82e0000, 22070xc82e0000,
20020x41800000, 22080x41800000,
20030x00050844, 22090x00050848,
22100x00000000,
20040x7c05b040, 22110x7c05b040,
20050x40800000, 22120x40800000,
20060x00050844, 22130x00050848,
20070x48000001, 22140x48000001,
20080x00030016, 22150x00030016,
20090x48000000, 22160x48000000,
20100x00050047, 22170x0005004b,
20110x00060063, 22180x00060066,
20120x00000000,
20130x280b0008, 22190x280b0008,
20140x80ae0000, 22200x80ae0000,
20150xc82e0000, 22210xc82e0000,
20160x41800000, 22220x41800000,
20170x00050844, 22230x00050848,
20180x7c05b040, 22240x7c05b040,
20190x40800000, 22250x40800000,
20200x00050844, 22260x00050848,
20210x48000001, 22270x48000001,
20220x00030017, 22280x00030017,
20230x48000000, 22290x48000000,
20240x00050047, 22300x0005004b,
20250x00060064, 22310x00060067,
20260x280b0008, 22320x280b0008,
20270x80ae0000, 22330x80ae0000,
20280xc82e0000, 22340xc82e0000,
20290x41800000, 22350x41800000,
20300x00050844, 22360x00050848,
20310x7c05b040, 22370x7c05b040,
20320x40800000, 22380x40800000,
20330x00050844, 22390x00050848,
20340x48000001, 22400x48000001,
20350x00030018, 22410x00030018,
20360x48000000, 22420x48000000,
20370x00050047, 22430x0005004b,
20380x00060065, 22440x00060068,
20390x280b0008, 22450x280b0008,
20400x80ae0000, 22460x80ae0000,
20410xc82e0000, 22470xc82e0000,
20420x41800000, 22480x41800000,
20430x00050844, 22490x00050848,
20440x7c05b040, 22500x7c05b040,
20450x40800000, 22510x40800000,
20460x00050844, 22520x00050848,
20470x48000001, 22530x48000001,
20480x00030019, 22540x00030019,
20490x48000000, 22550x48000000,
20500x00050047, 22560x0005004b,
20510x00060066, 22570x00060069,
20520x280b0008, 22580x280b0008,
20530x80ae0000, 22590x80ae0000,
20540xc82e0000, 22600xc82e0000,
20550x41800000, 22610x41800000,
20560x00050844, 22620x00050848,
20570x7c05b040, 22630x7c05b040,
20580x40800000, 22640x40800000,
20590x00050844, 22650x00050848,
20600x48000001, 22660x48000001,
20610x0003001a, 22670x0003001a,
22680x00000000,
20620x48000000, 22690x48000000,
20630x00050047, 22700x0005004b,
20640x00060067, 22710x0006006a,
20650x280b0008, 22720x280b0008,
20660x80ae0000, 22730x80ae0000,
20670xc82e0000, 22740xc82e0000,
20680x41800000, 22750x41800000,
20690x00050844, 22760x00050848,
20700x7c05b040, 22770x7c05b040,
20710x40800000, 22780x40800000,
20720x00050844, 22790x00050848,
20730x00000000,
20740x48000001, 22800x48000001,
20750x0003001b, 22810x0003001b,
20760x48000000, 22820x48000000,
20770x00050047, 22830x0005004b,
20780x00060068, 22840x0006006b,
20790x280b0008, 22850x280b0008,
20800x80ae0000, 22860x80ae0000,
20810xc82e0000, 22870xc82e0000,
20820x41800000, 22880x41800000,
20830x00050844, 22890x00050848,
20840x7c05b040, 22900x7c05b040,
20850x40800000, 22910x40800000,
20860x00050844, 22920x00050848,
20870x48000001, 22930x48000001,
20880x0003001c, 22940x0003001c,
20890x48000000, 22950x48000000,
20900x00050047, 22960x0005004b,
20910x00060069, 22970x0006006c,
22980x280b0008,
22990x80ae0000,
23000xc82e0000,
23010x41800000,
23020x00050848,
23030x7c05b040,
23040x40800000,
23050x00050848,
23060x48000001,
23070x0003001d,
23080x48000000,
23090x0005004b,
23100x0006006d,
23110x280b0008,
23120x80ae0000,
23130xc82e0000,
23140x41800000,
23150x00050848,
23160x7c05b040,
23170x40800000,
23180x00050848,
23190x48000001,
23200x0003001e,
23210x48000000,
23220x0005004b,
23230x0006006e,
23240x00000000,
20920x280b0010, 23250x280b0010,
20930x80ae0000, 23260x80ae0000,
20940xc82e0000, 23270xc82e0000,
20950x80ce0008, 23280x80ce0008,
20960xc84e0008, 23290xc84e0008,
20970x41800000, 23300x41800000,
20980x00050844, 23310x00050848,
20990x7c05b040, 23320x7c05b040,
21000x40800000, 23330x40800000,
21010x00050844, 23340x00050848,
21020x7c06b040, 23350x7c06b040,
21030x40800000, 23360x40800000,
21040x00050844, 23370x00050848,
21050x48000001, 23380x48000001,
21060x0003001d, 23390x0003001f,
21070x48000000, 23400x48000000,
21080x00050047, 23410x0005004b,
21090x0006006a, 23420x0006006f,
21100x280b0010, 23430x280b0010,
21110x80ae0000, 23440x80ae0000,
21120xc82e0000, 23450xc82e0000,
21130x80ce0008, 23460x80ce0008,
21140xc84e0008, 23470xc84e0008,
21150x41800000, 23480x41800000,
21160x00050844, 23490x00050848,
21170x7c05b040, 23500x7c05b040,
21180x40800000, 23510x40800000,
21190x00050844, 23520x00050848,
21200x7c06b040, 23530x7c06b040,
21210x40800000, 23540x40800000,
21220x00050844, 23550x00050848,
21230x48000001, 23560x48000001,
21240x0003001e, 23570x00030020,
21250x48000000, 23580x48000000,
21260x00050047, 23590x0005004b,
21270x0006006b, 23600x00060070,
21280x280b0010, 23610x280b0010,
21290x80ae0000, 23620x80ae0000,
21300xc82e0000, 23630xc82e0000,
21310x80ce0008, 23640x80ce0008,
21320xc84e0008, 23650xc84e0008,
21330x41800000, 23660x41800000,
21340x00050844, 23670x00050848,
21350x7c05b040, 23680x7c05b040,
21360x40800000, 23690x40800000,
21370x00050844, 23700x00050848,
21380x00000000,
21390x7c06b040, 23710x7c06b040,
21400x40800000, 23720x40800000,
21410x00050844, 23730x00050848,
21420x48000001, 23740x48000001,
21430x0003001f, 23750x00030021,
21440x48000000, 23760x48000000,
21450x00050047, 23770x0005004b,
21460x0006006c, 23780x00060071,
21470x0006006d, 23790x00060072,
21480x280b0008, 23800x280b0008,
21490x80ae0000, 23810x80ae0000,
21500xc82e0000, 23820xc82e0000,
21510x41800000, 23830x41800000,
21520x00050844, 23840x00050848,
21530x7c05b040, 23850x7c05b040,
21540x40800000, 23860x40800000,
21550x00050844, 23870x00050848,
21560xc84a0000, 23880xc84a0000,
21570x00098200, 23890x00098200,
23900x00000000,
21580xfc2100b2, 23910xfc2100b2,
21590x48000000, 23920x48000000,
21600x00050047, 23930x0005004b,
21610x0006006e, 23940x00000000,
23950x00060073,
23960x280b0010,
23970x80ae0000,
23980xc82e0000,
23990x80ce0008,
24000x806e000c,
24010x41800000,
24020x00050848,
24030x7c05b040,
24040x40800000,
24050x00050848,
24060x7c06b040,
24070x40820000,
24080x00050848,
24090x00000000,
24100x00060073,
21620x280b0010, 24110x280b0010,
21630x80ae0000, 24120x80ae0000,
21640xc82e0000, 24130xc82e0000,
21650x80ce0008, 24140x80ce0008,
21660xc84e0008, 24150xc84e0008,
21670x41800000, 24160x41800000,
21680x00050844, 24170x00050848,
21690x7c05b040, 24180x7c05b040,
21700x40800000, 24190x40800000,
21710x00050844, 24200x00050848,
21720x7c06b040, 24210x7c06b040,
21730x40800000, 24220x40800000,
21740x00050844, 24230x00050848,
21750xfc40101e, 24240xfc40101e,
21760xd8410008, 24250xd8410008,
21770x8061000c, 24260x8061000c,
24270x00000000,
21780x48000001, 24280x48000001,
21790x00030020, 24290x00030022,
21800x48000000, 24300x48000000,
21810x00050047, 24310x0005004b,
21820x0006006f, 24320x00060074,
21830x280b0008, 24330x280b0008,
21840x80ae0000, 24340x80ae0000,
21850xc82e0000, 24350xc82e0000,
21860x41800000, 24360x41800000,
21870x00050844, 24370x00050848,
21880x7c05b040, 24380x7c05b040,
21890x40800000, 24390x40800000,
21900x00050844, 24400x00050848,
21910x38710000, 24410x38710000,
21920x00098200, 24420x00098200,
21930x820efff8, 24430x820efff8,
21940x48000001, 24440x48000001,
21950x00030021, 24450x00030023,
21960x81110000, 24460x81110000,
21970x00098200, 24470x00098200,
21980x3a8efff8, 24480x3a8efff8,
24490x00000000,
21990x6d088000, 24500x6d088000,
22000x91010024, 24510x91010024,
22010xc8410020, 24520xc8410020,
22020xfc42f828, 24530xfc42f828,
24540x00000000,
22030xd8340000, 24550xd8340000,
22040x39800000, 24560x39800000,
22050x00098200, 24570x00098200,
22060x00000000, 24580x00000000,
24590x92d40008,
24600x9114000c,
24610x00000000,
22070xd8540008, 24620xd8540008,
24630x00000000,
22080x48000000, 24640x48000000,
22090x00050045, 24650x00050049,
22100x00060070, 24660x00060075,
22110x280b0008, 24670x280b0008,
22120x80ae0000, 24680x80ae0000,
22130xc82e0000, 24690xc82e0000,
22140x41800000, 24700x41800000,
22150x00050844, 24710x00050848,
22160x7c05b040, 24720x7c05b040,
22170x40800000, 24730x40800000,
22180x00050844, 24740x00050848,
22190x386efff8, 24750x386efff8,
22200x820efff8, 24760x820efff8,
22210x48000001, 24770x48000001,
22220x00030022, 24780x00030024,
22230x3a8efff8, 24790x3a8efff8,
22240xd82e0000, 24800xd82e0000,
22250x39800000, 24810x39800000,
22260x00098200, 24820x00098200,
22270x48000000, 24830x48000000,
22280x00050045, 24840x00050049,
22290x00060071, 24850x00000000,
24860x00060076,
24870x280b0008,
24880x80ae0000,
24890x806e0004,
24900x41800000,
24910x00050848,
24920x7c05b040,
24930x390e0008,
24940x7d2e5a14,
24950x40820000,
24960x00050804,
24970x0006000b,
24980x80c80000,
24990x7c884840,
25000x80880004,
25010x40840000,
25020x0005085d,
25030x7c06b040,
25040x6c608000,
25050x6c868000,
25060x40820000,
25070x00050803,
25080x7cc60010,
25090x7c000110,
25100x7cc60038,
25110x7c662214,
25120x39080008,
25130x48000000,
25140x0005000b,
25150x0006000d,
25160x40800000,
25170x00050848,
25180x6c638000,
25190x90610024,
25200xc8210020,
25210xfc21f828,
25220xc8480000,
25230x48000000,
25240x00050006,
25250x0006000e,
25260xc82e0000,
25270x40800000,
25280x00050848,
25290x0006000f,
25300x80c80000,
25310x7c884840,
25320xc8480000,
25330x40840000,
25340x0005084b,
25350x7c06b040,
25360x40800000,
25370x00050807,
25380x00060010,
25390xfc011028,
25400x39080008,
25410xfc2008ae,
25420x48000000,
25430x0005000f,
25440x00060011,
25450x80880004,
25460x40820000,
25470x00050848,
25480x6c848000,
25490x90810024,
25500xc8410020,
25510xfc42f828,
25520x48000000,
25530x00050010,
25540x00000000,
25550x00060076,
22300x280b0008, 25560x280b0008,
22310x80ae0000, 25570x80ae0000,
22320xc82e0000, 25580xc82e0000,
22330x41800000, 25590x41800000,
22340x00050844, 25600x00050848,
22350x7c05b040, 25610x7c05b040,
22360x40800000, 25620x40800000,
22370x00050844, 25630x00050848,
22380x39000008, 25640x39000008,
22390x0006000b, 25650x0006000b,
22400x7c8e402e, 25660x7c8e402e,
@@ -2242,23 +2568,93 @@ static const unsigned int build_actionlist[5561] = {
22420x7c885840, 25680x7c885840,
22430x7c04b040, 25690x7c04b040,
22440x40840000, 25700x40840000,
22450x00050847, 25710x0005084b,
22460x40800000, 25720x40800000,
22470x00050844, 25730x00050848,
22480xfc011028, 25740xfc011028,
22490x39080008, 25750x39080008,
22500xfc2008ae, 25760xfc2008ae,
22510x48000000, 25770x48000000,
22520x0005000b, 25780x0005000b,
22530x00060072, 25790x00000000,
25800x00060077,
25810x280b0008,
25820x80ae0000,
25830x806e0004,
25840x41800000,
25850x00050848,
25860x7c05b040,
25870x390e0008,
25880x7d2e5a14,
25890x40820000,
25900x00050804,
25910x0006000b,
25920x80c80000,
25930x7c884840,
25940x80880004,
25950x40840000,
25960x0005085d,
25970x7c06b040,
25980x6c608000,
25990x6c868000,
26000x40820000,
26010x00050803,
26020x7cc60010,
26030x7c000110,
26040x7cc60078,
26050x7c662214,
26060x39080008,
26070x48000000,
26080x0005000b,
26090x0006000d,
26100x40800000,
26110x00050848,
26120x6c638000,
26130x90610024,
26140xc8210020,
26150xfc21f828,
26160xc8480000,
26170x48000000,
26180x00050006,
26190x0006000e,
26200xc82e0000,
26210x40800000,
26220x00050848,
26230x0006000f,
26240x80c80000,
26250x7c884840,
26260xc8480000,
26270x40840000,
26280x0005084b,
26290x7c06b040,
26300x40800000,
26310x00050807,
26320x00060010,
26330xfc011028,
26340x39080008,
26350xfc20106e,
26360x48000000,
26370x0005000f,
26380x00060011,
26390x80880004,
26400x40820000,
26410x00050848,
26420x6c848000,
26430x90810024,
26440xc8410020,
26450xfc42f828,
26460x48000000,
26470x00050010,
26480x00000000,
26490x00060077,
22540x280b0008, 26500x280b0008,
22550x80ae0000, 26510x80ae0000,
22560xc82e0000, 26520xc82e0000,
22570x41800000, 26530x41800000,
22580x00050844, 26540x00050848,
22590x7c05b040, 26550x7c05b040,
22600x40800000, 26560x40800000,
22610x00050844, 26570x00050848,
22620x39000008, 26580x39000008,
22630x0006000b, 26590x0006000b,
22640x7c8e402e, 26600x7c8e402e,
@@ -2266,41 +2662,54 @@ static const unsigned int build_actionlist[5561] = {
22660x7c885840, 26620x7c885840,
22670x7c04b040, 26630x7c04b040,
22680x40840000, 26640x40840000,
22690x00050847, 26650x0005084b,
22700x40800000, 26660x40800000,
22710x00050844, 26670x00050848,
22720xfc011028, 26680xfc011028,
22730x39080008, 26690x39080008,
22740xfc20106e, 26700xfc20106e,
22750x48000000, 26710x48000000,
22760x0005000b, 26720x0005000b,
22770x00060073,
22780x00000000, 26730x00000000,
26740x00060078,
22790x280b0008, 26750x280b0008,
22800x80ae0000, 26760x80ae0000,
22810x806e0004, 26770x806e0004,
22820x41800000, 26780x41800000,
22830x00050844, 26790x00050848,
22840x2c050000, 26800x2c050000,
22850x00098200, 26810x00098200,
22860x40820000, 26820x40820000,
22870x00050844, 26830x00050848,
22880x80630000, 26840x80630000,
22890x00098200, 26850x00098200,
22900x48000000, 26860x48000000,
22910x00050074, 26870x0005005d,
22920x00060075, 26880x00060079,
22930x280b0008, 26890x280b0008,
22940x80ae0000, 26900x80ae0000,
22950x806e0004, 26910x806e0004,
22960x40820000, 26920x40820000,
22970x00050844, 26930x00050848,
22980x2c050000, 26940x2c050000,
22990x00098200, 26950x00098200,
23000x40820000, 26960x40820000,
23010x00050844, 26970x00050848,
23020x80030000, 26980x80030000,
23030x00098200, 26990x00098200,
27000x00000000,
27010x88630000,
27020x00098200,
27030x39800000,
27040x00098200,
27050x820efff8,
27060x28000000,
27070x3a8efff8,
27080x41820000,
27090x00050849,
27100x48000000,
27110x0005005d,
27120x00000000,
23040x89030000, 27130x89030000,
23050x00098200, 27140x00098200,
23060x30c0ffff, 27150x30c0ffff,
@@ -2315,82 +2724,111 @@ static const unsigned int build_actionlist[5561] = {
23150x000900a1, 27240x000900a1,
23160xd8140000, 27250xd8140000,
23170x48000000, 27260x48000000,
23180x00050045, 27270x00050049,
23190x00060076, 27280x00000000,
27290x0006007a,
23200x80110000, 27300x80110000,
23210x00098200, 27310x00098200,
23220x81110000, 27320x81110000,
23230x00098200, 27330x00098200,
23240x7c004040, 27340x7c004040,
23250x40800001, 27350x40800001,
23260x0005084e, 27360x00050852,
23270x280b0008, 27370x280b0008,
23280x80ae0000, 27380x80ae0000,
27390x00000000,
27400x800e0004,
27410x40820000,
27420x00050848,
27430x7c05b040,
27440x40820000,
27450x00050848,
27460x388e0007,
27470x00000000,
23290xc82e0000, 27480xc82e0000,
23300x40820000, 27490x40820000,
23310x00050844, 27500x00050848,
23320x7c05b040, 27510x7c05b040,
23330x40800000, 27520x40800000,
23340x00050844, 27530x00050848,
23350xfc20081e, 27540xfc20081e,
23360xd8210008, 27550xd8210008,
23370x8001000c, 27560x8001000c,
23380x3881000f, 27570x3881000f,
27580x00000000,
23390x38a00001, 27590x38a00001,
23400x280000ff, 27600x280000ff,
23410x41810000, 27610x41810000,
23420x00050844, 27620x00050848,
23430x00060077, 27630x0006007b,
23440x7e439378, 27640x7e439378,
23450x91d20000, 27650x91d20000,
23460x00098200, 27660x00098200,
23470x00000000,
23480x92010008, 27670x92010008,
23490x48000001, 27680x48000001,
23500x00030023, 27690x00030025,
23510x81d20000, 27700x81d20000,
23520x00098200, 27710x00098200,
23530x38a00000, 27720x38a00000,
23540x00098200, 27730x00098200,
23550x48000000, 27740x48000000,
23560x00050049, 27750x0005004d,
23570x00060078, 27760x0006007c,
23580x80110000, 27770x80110000,
23590x00098200, 27780x00098200,
23600x81110000, 27790x81110000,
23610x00098200, 27800x00098200,
23620x7c004040, 27810x7c004040,
23630x40800001, 27820x40800001,
23640x0005084e, 27830x00050852,
23650x280b0010, 27840x280b0010,
23660x80ae0010, 27850x80ae0010,
27860x00000000,
23670xc80e0010, 27870xc80e0010,
27880x00000000,
23680x800e0000, 27890x800e0000,
23690x806e0004, 27900x806e0004,
23700x41800000, 27910x41800000,
23710x00050844, 27920x00050848,
23720x808e0008, 27930x808e0008,
27940x00000000,
27950x810e000c,
27960x00000000,
23730xc82e0008, 27970xc82e0008,
27980x00000000,
23740x3920ffff, 27990x3920ffff,
23750x41820000, 28000x41820000,
23760x00050801, 28010x00050801,
28020x00000000,
28030x7c05b040,
28040x812e0014,
28050x40820000,
28060x00050848,
28070x0006000b,
28080x7c04b040,
28090x40820000,
28100x00050848,
28110x00000000,
23770x7c05b040, 28120x7c05b040,
23780x40800000, 28130x40800000,
23790x00050844, 28140x00050848,
23800xfc00001e, 28150xfc00001e,
23810xd8010008, 28160xd8010008,
23820x8121000c, 28170x8121000c,
23830x0006000b, 28180x0006000b,
23840x7c04b040, 28190x7c04b040,
23850x40800000, 28200x40800000,
23860x00050844, 28210x00050848,
28220x00000000,
23870x2c000000, 28230x2c000000,
23880x00098200, 28240x00098200,
23890x40820000, 28250x40820000,
23900x00050844, 28260x00050848,
28270x00000000,
23910xfc20081e, 28280xfc20081e,
23920xd8210008, 28290xd8210008,
23930x8101000c, 28300x8101000c,
28310x00000000,
23940x80030000, 28320x80030000,
23950x00098200, 28330x00098200,
23960x7c004840, 28340x7c004840,
@@ -2411,9 +2849,8 @@ static const unsigned int build_actionlist[5561] = {
24110x7c844214, 28490x7c844214,
24120x7ca50078, 28500x7ca50078,
24130x48000000, 28510x48000000,
24140x00050077, 28520x0005007b,
24150x0006000f, 28530x0006000f,
24160x00000000,
24170x7c890050, 28540x7c890050,
24180x7c84fe70, 28550x7c84fe70,
24190x7cc62078, 28560x7cc62078,
@@ -2429,31 +2866,41 @@ static const unsigned int build_actionlist[5561] = {
24290x39080001, 28660x39080001,
24300x48000000, 28670x48000000,
24310x0005000d, 28680x0005000d,
24320x00060079, 28690x0006007d,
24330x80110000, 28700x80110000,
24340x00098200, 28710x00098200,
24350x81110000, 28720x81110000,
24360x00098200, 28730x00098200,
24370x7c004040, 28740x7c004040,
24380x40800001, 28750x40800001,
24390x0005084e, 28760x00050852,
24400x280b0010, 28770x280b0010,
24410x80ae0000, 28780x800e0000,
24420x806e0004, 28790x806e0004,
24430x80ce0008, 28800x80ce0008,
28810x00000000,
28820x80ae000c,
28830x00000000,
24440xc84e0008, 28840xc84e0008,
28850x00000000,
24450x41800000, 28860x41800000,
24460x00050844, 28870x00050848,
24470x2c050000, 28880x2c000000,
24480x00098200, 28890x00098200,
24490x40820000, 28900x40820000,
24500x00050844, 28910x00050848,
28920x00000000,
28930x7c06b040,
28940x40820000,
28950x00050848,
28960x00000000,
24510x7c06b040, 28970x7c06b040,
24520x40800000, 28980x40800000,
24530x00050844, 28990x00050848,
24540xfc40101e, 29000xfc40101e,
24550xd8410008, 29010xd8410008,
24560x80a1000c, 29020x80a1000c,
29030x00000000,
24570x80030000, 29040x80030000,
24580x00098200, 29050x00098200,
24590x2c050000, 29060x2c050000,
@@ -2467,13 +2914,13 @@ static const unsigned int build_actionlist[5561] = {
24670x00050802, 29140x00050802,
24680x7c882840, 29150x7c882840,
24690x40820000, 29160x40820000,
24700x00050844, 29170x00050848,
24710x88030000, 29180x88030000,
24720x00098200, 29190x00098200,
24730x80910000, 29200x80910000,
24740x00098200, 29210x00098200,
24750x41840000, 29220x41840000,
24760x00050844, 29230x00050848,
24770x0006000b, 29240x0006000b,
24780x28090000, 29250x28090000,
24790x7c0449ae, 29260x7c0449ae,
@@ -2481,34 +2928,34 @@ static const unsigned int build_actionlist[5561] = {
24810x40820000, 29280x40820000,
24820x0005080b, 29290x0005080b,
24830x48000000, 29300x48000000,
24840x00050077, 29310x0005007b,
24850x0006000c, 29320x0006000c,
24860x00000000,
24870x38710000, 29330x38710000,
24880x00098200, 29340x00098200,
24890x38a00000, 29350x38a00000,
24900x00098200, 29360x00098200,
24910x48000000, 29370x48000000,
24920x00050049, 29380x0005004d,
24930x0006007a, 29390x0006007e,
24940x80110000, 29400x80110000,
24950x00098200, 29410x00098200,
24960x81110000, 29420x81110000,
24970x00098200, 29430x00098200,
24980x7c004040, 29440x7c004040,
24990x40800001, 29450x40800001,
25000x0005084e, 29460x00050852,
25010x280b0008, 29470x280b0008,
25020x80ae0000, 29480x80ae0000,
25030x806e0004, 29490x806e0004,
25040x41800000, 29500x41800000,
25050x00050844, 29510x00050848,
25060x2c050000, 29520x2c050000,
25070x00098200, 29530x00098200,
25080x81110000, 29540x81110000,
25090x00098200, 29550x00098200,
29560x00000000,
25100x40820000, 29570x40820000,
25110x00050844, 29580x00050848,
25120x80a30000, 29590x80a30000,
25130x00098200, 29600x00098200,
25140x38630000, 29610x38630000,
@@ -2519,37 +2966,36 @@ static const unsigned int build_actionlist[5561] = {
25190x7c082840, 29660x7c082840,
25200x38c5ffff, 29670x38c5ffff,
25210x41800000, 29680x41800000,
25220x00050844, 29690x00050848,
25230x0006000b, 29700x0006000b,
25240x2c060000, 29710x2c060000,
25250x7d0348ae, 29720x7d0348ae,
25260x41800000, 29730x41800000,
25270x00050877, 29740x0005087b,
25280x7d0431ae, 29750x7d0431ae,
25290x38c6ffff, 29760x38c6ffff,
25300x39290001, 29770x39290001,
25310x48000000, 29780x48000000,
25320x0005000b, 29790x0005000b,
25330x0006007b, 29800x0006007f,
25340x80110000, 29810x80110000,
25350x00098200, 29820x00098200,
25360x81110000, 29830x81110000,
25370x00098200, 29840x00098200,
25380x7c004040, 29850x7c004040,
25390x40800001, 29860x40800001,
25400x0005084e, 29870x00050852,
25410x00000000,
25420x280b0008, 29880x280b0008,
25430x80ae0000, 29890x80ae0000,
25440x806e0004, 29900x806e0004,
25450x41800000, 29910x41800000,
25460x00050844, 29920x00050848,
25470x2c050000, 29930x2c050000,
25480x00098200, 29940x00098200,
25490x81110000, 29950x81110000,
25500x00098200, 29960x00098200,
25510x40820000, 29970x40820000,
25520x00050844, 29980x00050848,
25530x80a30000, 29990x80a30000,
25540x00098200, 30000x00098200,
25550x38630000, 30010x38630000,
@@ -2559,12 +3005,13 @@ static const unsigned int build_actionlist[5561] = {
25590x7c082840, 30050x7c082840,
25600x39200000, 30060x39200000,
25610x41800000, 30070x41800000,
25620x00050844, 30080x00050848,
25630x0006000b, 30090x0006000b,
25640x7c092840, 30100x7c092840,
25650x7d0348ae, 30110x7d0348ae,
25660x40800000, 30120x40800000,
25670x00050877, 30130x0005087b,
30140x00000000,
25680x3808ffbf, 30150x3808ffbf,
25690x69060020, 30160x69060020,
25700x3000ffe6, 30170x3000ffe6,
@@ -2575,41 +3022,40 @@ static const unsigned int build_actionlist[5561] = {
25750x39290001, 30220x39290001,
25760x48000000, 30230x48000000,
25770x0005000b, 30240x0005000b,
25780x0006007c, 30250x00060080,
25790x80110000, 30260x80110000,
25800x00098200, 30270x00098200,
25810x81110000, 30280x81110000,
25820x00098200, 30290x00098200,
25830x7c004040, 30300x7c004040,
25840x40800001, 30310x40800001,
25850x0005084e, 30320x00050852,
25860x280b0008, 30330x280b0008,
25870x80ae0000, 30340x80ae0000,
25880x806e0004, 30350x806e0004,
25890x41800000, 30360x41800000,
25900x00050844, 30370x00050848,
25910x2c050000, 30380x2c050000,
25920x00098200, 30390x00098200,
25930x81110000, 30400x81110000,
25940x00098200, 30410x00098200,
25950x40820000, 30420x40820000,
25960x00050844, 30430x00050848,
25970x80a30000, 30440x80a30000,
25980x00098200, 30450x00098200,
25990x38630000, 30460x38630000,
26000x00098200, 30470x00098200,
26010x80910000, 30480x80910000,
26020x00098200, 30490x00098200,
26030x00000000,
26040x7c082840, 30500x7c082840,
26050x39200000, 30510x39200000,
26060x41800000, 30520x41800000,
26070x00050844, 30530x00050848,
26080x0006000b, 30540x0006000b,
26090x7c092840, 30550x7c092840,
26100x7d0348ae, 30560x7d0348ae,
26110x40800000, 30570x40800000,
26120x00050877, 30580x0005087b,
26130x3808ff9f, 30590x3808ff9f,
26140x69060020, 30600x69060020,
26150x3000ffe6, 30610x3000ffe6,
@@ -2620,286 +3066,494 @@ static const unsigned int build_actionlist[5561] = {
26200x39290001, 30660x39290001,
26210x48000000, 30670x48000000,
26220x0005000b, 30680x0005000b,
26230x0006007d, 30690x00060081,
26240x280b0008, 30700x280b0008,
26250x80ae0000, 30710x80ae0000,
26260x806e0004, 30720x806e0004,
26270x41800000, 30730x41800000,
26280x00050844, 30740x00050848,
26290x2c050000, 30750x2c050000,
26300x00098200, 30760x00098200,
26310x40820000, 30770x40820000,
26320x00050844, 30780x00050848,
26330x48000001, 30790x48000001,
26340x00030024, 30800x00030026,
26350x48000000, 30810x48000000,
26360x00050074, 30820x0005005d,
26370x0006007e, 30830x00000000,
30840x00060082,
26380x280b0008, 30850x280b0008,
26390x80ae0000, 30860x80ae0000,
26400xc82e0000, 30870x806e0004,
26410x41800000, 30880x41800000,
26420x00050844, 30890x00050848,
26430x7c05b040, 30900x7c05b040,
26440x40800000, 30910x40820001,
26450x00050844, 30920x00050883,
26460xfc21f02a, 30930x00000000,
26470xd8210008, 30940x00060082,
26480x8061000c,
26490x00060074,
26500x6c638000,
26510x90610024,
26520xc8210020,
26530xfc21f828,
26540x00060047,
26550x820efff8,
26560x3a8efff8,
26570xd82efff8,
26580x48000000,
26590x00050059,
26600x0006007f,
26610x280b0008, 30950x280b0008,
26620x80ae0000, 30960x80ae0000,
26630xc82e0000, 30970xc82e0000,
26640x41800000, 30980x41800000,
26650x00050844, 30990x00050848,
26660x7c05b040, 31000x7c05b040,
26670x40800000, 31010x40800000,
26680x00050844, 31020x00050848,
26690xfc21f02a, 31030xfc21f02a,
26700xd8210008, 31040xd8210008,
26710x8061000c, 31050x8061000c,
26720x39000008, 31060x00000000,
31070x390e0008,
31080x7d2e5a14,
26730x0006000b, 31090x0006000b,
26740x7cce402e, 31100x80c80000,
26750x7c885840, 31110x7c884840,
26760x7c2e44ae, 31120x00000000,
26770x7c06b040, 31130x80880004,
31140x00000000,
31150xc8280000,
31160x00000000,
26780x40840000, 31170x40840000,
26790x00050874, 31180x0005085d,
31190x7c06b040,
31200x00000000,
31210x40820001,
31220x00050884,
31230x00000000,
26800xfc21f02a, 31240xfc21f02a,
26810x40800000, 31250x40800000,
26820x00050844, 31260x00050848,
26830x00000000,
26840xd8210008, 31270xd8210008,
26850x8081000c, 31280x8081000c,
31290x00000000,
26860x7c632038, 31300x7c632038,
26870x39080008, 31310x39080008,
26880x48000000, 31320x48000000,
26890x0005000b, 31330x0005000b,
26900x00060080, 31340x00000000,
31350x00060085,
31360x280b0008,
31370x80ae0000,
31380x806e0004,
31390x41800000,
31400x00050848,
31410x7c05b040,
31420x40820001,
31430x00050883,
31440x00000000,
31450x00060085,
26910x280b0008, 31460x280b0008,
26920x80ae0000, 31470x80ae0000,
26930xc82e0000, 31480xc82e0000,
26940x41800000, 31490x41800000,
26950x00050844, 31500x00050848,
26960x7c05b040, 31510x7c05b040,
26970x40800000, 31520x40800000,
26980x00050844, 31530x00050848,
26990xfc21f02a, 31540xfc21f02a,
27000xd8210008, 31550xd8210008,
27010x8061000c, 31560x8061000c,
27020x39000008, 31570x00000000,
31580x390e0008,
31590x7d2e5a14,
27030x0006000b, 31600x0006000b,
27040x7cce402e, 31610x80c80000,
27050x7c885840, 31620x7c884840,
27060x7c2e44ae, 31630x00000000,
27070x7c06b040, 31640x80880004,
31650x00000000,
31660xc8280000,
31670x00000000,
27080x40840000, 31680x40840000,
27090x00050874, 31690x0005085d,
31700x7c06b040,
31710x00000000,
31720x40820001,
31730x00050884,
31740x00000000,
27100xfc21f02a, 31750xfc21f02a,
27110x40800000, 31760x40800000,
27120x00050844, 31770x00050848,
27130xd8210008, 31780xd8210008,
27140x8081000c, 31790x8081000c,
31800x00000000,
27150x7c632378, 31810x7c632378,
27160x39080008, 31820x39080008,
27170x48000000, 31830x48000000,
27180x0005000b, 31840x0005000b,
27190x00060081, 31850x00000000,
31860x00060086,
31870x280b0008,
31880x80ae0000,
31890x806e0004,
31900x41800000,
31910x00050848,
31920x7c05b040,
31930x40820001,
31940x00050883,
31950x00000000,
31960x00060086,
27200x280b0008, 31970x280b0008,
27210x80ae0000, 31980x80ae0000,
27220xc82e0000, 31990xc82e0000,
27230x41800000, 32000x41800000,
27240x00050844, 32010x00050848,
27250x7c05b040, 32020x7c05b040,
27260x40800000, 32030x40800000,
27270x00050844, 32040x00050848,
27280xfc21f02a, 32050xfc21f02a,
27290xd8210008, 32060xd8210008,
27300x8061000c, 32070x8061000c,
27310x39000008, 32080x00000000,
32090x390e0008,
32100x7d2e5a14,
27320x0006000b, 32110x0006000b,
27330x7cce402e, 32120x80c80000,
27340x7c885840, 32130x7c884840,
27350x7c2e44ae, 32140x00000000,
27360x7c06b040, 32150x80880004,
32160x00000000,
32170xc8280000,
32180x00000000,
27370x40840000, 32190x40840000,
27380x00050874, 32200x0005085d,
32210x7c06b040,
32220x00000000,
32230x40820001,
32240x00050884,
32250x00000000,
27390xfc21f02a, 32260xfc21f02a,
27400x40800000, 32270x40800000,
27410x00050844, 32280x00050848,
27420xd8210008, 32290xd8210008,
27430x8081000c, 32300x8081000c,
32310x00000000,
27440x7c632278, 32320x7c632278,
27450x39080008, 32330x39080008,
27460x48000000, 32340x48000000,
27470x0005000b, 32350x0005000b,
27480x00060082, 32360x00000000,
32370x00060087,
32380x280b0008,
32390x80ae0000,
32400x806e0004,
32410x41800000,
32420x00050848,
32430x7c05b040,
32440x40820001,
32450x00050883,
32460x00000000,
32470x00060087,
27490x280b0008, 32480x280b0008,
27500x80ae0000, 32490x80ae0000,
27510xc82e0000, 32500xc82e0000,
27520x41800000, 32510x41800000,
27530x00050844, 32520x00050848,
27540x7c05b040, 32530x7c05b040,
27550x40800000, 32540x40800000,
27560x00050844, 32550x00050848,
27570xfc21f02a, 32560xfc21f02a,
27580xd8210008, 32570xd8210008,
27590x8061000c, 32580x8061000c,
32590x00000000,
27600x5460403e, 32600x5460403e,
27610x5060c00e, 32610x5060c00e,
27620x5060c42e, 32620x5060c42e,
27630x7c030378, 32630x7c030378,
27640x48000000, 32640x48000000,
27650x00050074, 32650x0005005d,
27660x00060083, 32660x00000000,
32670x00060088,
32680x280b0008,
32690x80ae0000,
32700x806e0004,
32710x41800000,
32720x00050848,
32730x7c05b040,
32740x40820001,
32750x00050883,
32760x00000000,
32770x00060088,
27670x280b0008, 32780x280b0008,
27680x80ae0000, 32790x80ae0000,
27690xc82e0000, 32800xc82e0000,
27700x41800000, 32810x41800000,
27710x00050844, 32820x00050848,
27720x7c05b040, 32830x7c05b040,
27730x40800000, 32840x40800000,
27740x00050844, 32850x00050848,
27750x00000000,
27760xfc21f02a, 32860xfc21f02a,
27770xd8210008, 32870xd8210008,
27780x8061000c, 32880x8061000c,
32890x00000000,
27790x7c6318f8, 32900x7c6318f8,
27800x48000000, 32910x48000000,
27810x00050074, 32920x0005005d,
27820x00060084, 32930x00000000,
32940x00060089,
32950x280b0010,
32960x80ae0000,
32970x80ce0008,
32980x806e0004,
32990x808e000c,
33000x41800000,
33010x00050848,
33020x7c05b040,
33030x40820001,
33040x00050883,
33050x7c06b040,
33060x40820000,
33070x00050848,
33080x00000000,
33090x00060089,
27830x280b0010, 33100x280b0010,
27840x80ae0000, 33110x80ae0000,
27850xc82e0000, 33120xc82e0000,
27860x80ce0008, 33130x80ce0008,
27870xc84e0008, 33140xc84e0008,
27880x41800000, 33150x41800000,
27890x00050844, 33160x00050848,
27900x7c05b040, 33170x7c05b040,
27910x40800000, 33180x40800000,
27920x00050844, 33190x00050848,
27930x7c06b040, 33200x7c06b040,
27940x40800000, 33210x40800000,
27950x00050844, 33220x00050848,
27960xfc21f02a, 33230xfc21f02a,
27970xfc42f02a, 33240xfc42f02a,
27980xd8210008, 33250xd8210008,
27990x8061000c, 33260x8061000c,
28000xd8410008, 33270xd8410008,
28010x8081000c, 33280x8081000c,
33290x00000000,
28020x548406fe, 33300x548406fe,
28030x7c632030, 33310x7c632030,
28040x48000000, 33320x48000000,
28050x00050074, 33330x0005005d,
28060x00060085, 33340x00000000,
33350x0006008a,
33360x280b0010,
33370x80ae0000,
33380x80ce0008,
33390x806e0004,
33400x808e000c,
33410x41800000,
33420x00050848,
33430x7c05b040,
33440x40820001,
33450x00050883,
33460x7c06b040,
33470x40820000,
33480x00050848,
33490x00000000,
33500x0006008a,
28070x280b0010, 33510x280b0010,
28080x80ae0000, 33520x80ae0000,
28090xc82e0000, 33530xc82e0000,
28100x80ce0008, 33540x80ce0008,
28110xc84e0008, 33550xc84e0008,
28120x41800000, 33560x41800000,
28130x00050844, 33570x00050848,
28140x7c05b040, 33580x7c05b040,
28150x40800000, 33590x40800000,
28160x00050844, 33600x00050848,
28170x7c06b040, 33610x7c06b040,
28180x40800000, 33620x40800000,
28190x00050844, 33630x00050848,
28200xfc21f02a, 33640xfc21f02a,
28210xfc42f02a, 33650xfc42f02a,
28220xd8210008, 33660xd8210008,
28230x8061000c, 33670x8061000c,
28240xd8410008, 33680xd8410008,
28250x8081000c, 33690x8081000c,
33700x00000000,
28260x548406fe, 33710x548406fe,
28270x7c632430, 33720x7c632430,
28280x48000000, 33730x48000000,
28290x00050074, 33740x0005005d,
28300x00060086, 33750x00000000,
33760x0006008b,
33770x280b0010,
33780x80ae0000,
33790x80ce0008,
33800x806e0004,
33810x808e000c,
33820x41800000,
33830x00050848,
33840x7c05b040,
33850x40820001,
33860x00050883,
33870x7c06b040,
33880x40820000,
33890x00050848,
33900x00000000,
33910x0006008b,
28310x280b0010, 33920x280b0010,
28320x80ae0000, 33930x80ae0000,
28330xc82e0000, 33940xc82e0000,
28340x80ce0008, 33950x80ce0008,
28350xc84e0008, 33960xc84e0008,
28360x41800000, 33970x41800000,
28370x00050844, 33980x00050848,
28380x7c05b040, 33990x7c05b040,
28390x40800000, 34000x40800000,
28400x00050844, 34010x00050848,
28410x7c06b040, 34020x7c06b040,
28420x40800000, 34030x40800000,
28430x00050844, 34040x00050848,
28440xfc21f02a, 34050xfc21f02a,
28450xfc42f02a, 34060xfc42f02a,
28460xd8210008, 34070xd8210008,
28470x8061000c, 34080x8061000c,
28480xd8410008, 34090xd8410008,
28490x8081000c, 34100x8081000c,
34110x00000000,
28500x548406fe, 34120x548406fe,
28510x7c632630, 34130x7c632630,
28520x48000000, 34140x48000000,
28530x00050074, 34150x0005005d,
28540x00060087, 34160x00000000,
34170x0006008c,
34180x280b0010,
34190x80ae0000,
34200x80ce0008,
34210x806e0004,
34220x808e000c,
34230x41800000,
34240x00050848,
34250x7c05b040,
34260x40820001,
34270x00050883,
34280x7c06b040,
34290x40820000,
34300x00050848,
34310x00000000,
34320x0006008c,
28550x280b0010, 34330x280b0010,
28560x80ae0000, 34340x80ae0000,
28570xc82e0000, 34350xc82e0000,
28580x80ce0008, 34360x80ce0008,
28590xc84e0008, 34370xc84e0008,
28600x41800000, 34380x41800000,
28610x00050844, 34390x00050848,
28620x7c05b040, 34400x7c05b040,
28630x40800000, 34410x40800000,
28640x00050844, 34420x00050848,
28650x7c06b040, 34430x7c06b040,
28660x40800000, 34440x40800000,
28670x00050844, 34450x00050848,
28680xfc21f02a, 34460xfc21f02a,
28690xfc42f02a, 34470xfc42f02a,
28700xd8210008, 34480xd8210008,
28710x8061000c, 34490x8061000c,
28720xd8410008, 34500xd8410008,
28730x8081000c, 34510x8081000c,
34520x00000000,
28740x5c63203e, 34530x5c63203e,
28750x48000000, 34540x48000000,
28760x00050074, 34550x0005005d,
28770x00060088, 34560x00000000,
34570x0006008d,
34580x280b0010,
34590x80ae0000,
34600x80ce0008,
34610x806e0004,
34620x808e000c,
34630x41800000,
34640x00050848,
34650x7c05b040,
34660x40820001,
34670x00050883,
34680x7c06b040,
34690x40820000,
34700x00050848,
28780x00000000, 34710x00000000,
34720x0006008d,
28790x280b0010, 34730x280b0010,
28800x80ae0000, 34740x80ae0000,
28810xc82e0000, 34750xc82e0000,
28820x80ce0008, 34760x80ce0008,
28830xc84e0008, 34770xc84e0008,
28840x41800000, 34780x41800000,
28850x00050844, 34790x00050848,
28860x7c05b040, 34800x7c05b040,
28870x40800000, 34810x40800000,
28880x00050844, 34820x00050848,
28890x7c06b040, 34830x7c06b040,
28900x40800000, 34840x40800000,
28910x00050844, 34850x00050848,
28920xfc21f02a, 34860xfc21f02a,
28930xfc42f02a, 34870xfc42f02a,
28940xd8210008, 34880xd8210008,
28950x8061000c, 34890x8061000c,
28960xd8410008, 34900xd8410008,
28970x8081000c, 34910x8081000c,
34920x00000000,
28980x7c8400d0, 34930x7c8400d0,
28990x5c63203e, 34940x5c63203e,
29000x48000000, 34950x48000000,
29010x00050074, 34960x0005005d,
29020x00060044, 34970x00000000,
34980x0006008e,
34990x280b0008,
35000x80ae0000,
35010x806e0004,
35020x41800000,
35030x00050848,
35040x7c05b040,
35050x40820001,
35060x00050883,
35070x00000000,
35080x0006008e,
35090x280b0008,
35100x80ae0000,
35110xc82e0000,
35120x41800000,
35130x00050848,
35140x7c05b040,
35150x40800000,
35160x00050848,
35170xfc21f02a,
35180xd8210008,
35190x8061000c,
35200x00000000,
35210x48000000,
35220x0005005d,
35230x00000000,
35240x0006005d,
35250x6c638000,
35260x90610024,
35270xc8210020,
35280xfc21f828,
35290x00000000,
35300x0006004b,
35310x820efff8,
35320x3a8efff8,
35330xd82efff8,
35340x48000000,
35350x0005005e,
35360x00060083,
35370x00000000,
35380xc82e0000,
35390x41810000,
35400x00050848,
35410xfc21f02a,
35420xd8210008,
35430x8061000c,
35440x4e800020,
35450x00000000,
35460x00060084,
35470x00000000,
35480xc8280000,
35490x41810000,
35500x00050848,
35510xfc21f02a,
35520xd8210008,
35530x8081000c,
35540x4e800020,
35550x00000000,
35560x00060048,
29030x80ca0000, 35570x80ca0000,
29040x00098200, 35580x00098200,
29050x7d0e5a14, 35590x7d0e5a14,
@@ -2926,7 +3580,7 @@ static const unsigned int build_actionlist[5561] = {
29260x000900a1, 35800x000900a1,
29270x3a8efff8, 35810x3a8efff8,
29280x41810000, 35820x41810000,
29290x00050845, 35830x00050849,
29300x0006000b, 35840x0006000b,
29310x80120000, 35850x80120000,
29320x00098200, 35860x00098200,
@@ -2953,7 +3607,6 @@ static const unsigned int build_actionlist[5561] = {
29530x80f0fffc, 36070x80f0fffc,
29540x54e8dd78, 36080x54e8dd78,
29550x0006000d, 36090x0006000d,
29560x00000000,
29570x7d287050, 36100x7d287050,
29580x48000000, 36110x48000000,
29590x00050024, 36120x00050024,
@@ -2962,12 +3615,13 @@ static const unsigned int build_actionlist[5561] = {
29620x00098200, 36150x00098200,
29630x48000001, 36160x48000001,
29640x00030000, 36170x00030000,
36180x00000000,
29650x81d20000, 36190x81d20000,
29660x00098200, 36200x00098200,
29670x7c000000, 36210x7c000000,
29680x48000000, 36220x48000000,
29690x0005000b, 36230x0005000b,
29700x0006004e, 36240x00060052,
29710x7ea802a6, 36250x7ea802a6,
29720x91d20000, 36260x91d20000,
29730x00098200, 36270x00098200,
@@ -2977,7 +3631,7 @@ static const unsigned int build_actionlist[5561] = {
29770x00098200, 36310x00098200,
29780x7e439378, 36320x7e439378,
29790x48000001, 36330x48000001,
29800x00030025, 36340x00030027,
29810x81d20000, 36350x81d20000,
29820x00098200, 36360x00098200,
29830x7ea803a6, 36370x7ea803a6,
@@ -2986,11 +3640,11 @@ static const unsigned int build_actionlist[5561] = {
29860x7d6e0050, 36400x7d6e0050,
29870x814efffc, 36410x814efffc,
29880x4e800020, 36420x4e800020,
29890x00060089, 36430x0006008f,
29900x00000000, 36440x00000000,
29910x7c810808, 36450x7c810808,
29920x00000000, 36460x00000000,
29930x0006008a, 36470x00060090,
29940x88d10000, 36480x88d10000,
29950x00098200, 36490x00098200,
29960x70c00000, 36500x70c00000,
@@ -3003,7 +3657,7 @@ static const unsigned int build_actionlist[5561] = {
30030x7c11402e, 36570x7c11402e,
30040x7c0903a6, 36580x7c0903a6,
30050x4e800420, 36590x4e800420,
30060x0006008b, 36600x00060091,
30070x88d10000, 36610x88d10000,
30080x00098200, 36620x00098200,
30090x81310000, 36630x81310000,
@@ -3031,7 +3685,7 @@ static const unsigned int build_actionlist[5561] = {
30310x91d20000, 36850x91d20000,
30320x00098200, 36860x00098200,
30330x48000001, 36870x48000001,
30340x00030026, 36880x00030028,
30350x0006000d, 36890x0006000d,
30360x81d20000, 36900x81d20000,
30370x00098200, 36910x00098200,
@@ -3048,22 +3702,22 @@ static const unsigned int build_actionlist[5561] = {
30480x54eb9d78, 37020x54eb9d78,
30490x7c0903a6, 37030x7c0903a6,
30500x4e800420, 37040x4e800420,
30510x0006008c, 37050x00060092,
30520x3a100004, 37060x3a100004,
30530x826affec, 37070x826affec,
30540x48000000, 37080x48000000,
30550x0005000e, 37090x0005000e,
30560x0006008d, 37100x00060093,
30570x00000000, 37110x00000000,
30580x7c810808, 37120x7c810808,
30590x00000000, 37130x00000000,
30600x0006008e, 37140x00060094,
30610x7e048378, 37150x7e048378,
30620x00000000, 37160x00000000,
30630x48000000, 37170x48000000,
30640x00050001, 37180x00050001,
30650x00000000, 37190x00000000,
30660x0006008f, 37200x00060095,
30670x00000000, 37210x00000000,
30680x62040001, 37220x62040001,
30690x0006000b, 37230x0006000b,
@@ -3077,7 +3731,7 @@ static const unsigned int build_actionlist[5561] = {
30770x90120000, 37310x90120000,
30780x00098200, 37320x00098200,
30790x48000001, 37330x48000001,
30800x00030027, 37340x00030029,
30810x81d20000, 37350x81d20000,
30820x00098200, 37360x00098200,
30830x80120000, 37370x80120000,
@@ -3088,34 +3742,45 @@ static const unsigned int build_actionlist[5561] = {
30880x814efffc, 37420x814efffc,
30890x7c6903a6, 37430x7c6903a6,
30900x4e800420, 37440x4e800420,
30910x00060090, 37450x00060096,
30920x00000000, 37460x00000000,
30930x7c810808, 37470x7c810808,
30940x00000000, 37480x00000000,
30950x00060091, 37490x00060097,
30960x00000000, 37500x00000000,
30970x7c810808, 37510x7c810808,
30980x00000000, 37520x00000000,
30990x00060092, 37530x00060098,
31000x48000000, 37540x48000000,
31010x0003000e, 37550x00030010,
31020x00060093, 37560x00060099,
31030x48000000, 37570x48000000,
31040x0003000f, 37580x00030011,
31050x00060094, 37590x0006009a,
31060x00000000, 37600x00000000,
31070x48000000, 37610x48000000,
31080x00030028, 37620x0003002a,
31090x00000000, 37630x00000000,
31100x00060095, 37640x0006009b,
37650x7c0327d7,
37660x4d830020,
37670x7c652279,
37680x7c0021d6,
37690x7c601850,
37700x4c800020,
37710x2c030000,
37720x4d820020,
37730x7c632214,
37740x4e800020,
37750x0006009c,
31110x00000000, 37760x00000000,
31120x7c810808, 37770x7c810808,
31130x00000000, 37780x00000000,
31140x00060096, 37790x0006009d,
31150x00000000, 37800x00000000,
31160x7c810808, 37810x7c810808,
31170x00000000, 37820x00000000,
31180x00060097, 37830x0006009e,
31190x28030001, 37840x28030001,
31200x41820000, 37850x41820000,
31210x00050801, 37860x00050801,
@@ -3152,7 +3817,7 @@ static const unsigned int build_actionlist[5561] = {
31520x90010024, 38170x90010024,
31530xfde01090, 38180xfde01090,
31540x48000001, 38190x48000001,
31550x0003000e, 38200x00030010,
31560x80010024, 38210x80010024,
31570xfc2103f2, 38220xfc2103f2,
31580x7c0803a6, 38230x7c0803a6,
@@ -3163,7 +3828,7 @@ static const unsigned int build_actionlist[5561] = {
31630x4e800020, 38280x4e800020,
31640x0006000b, 38290x0006000b,
31650x48000000, 38300x48000000,
31660x0003001d, 38310x0003001f,
31670x0006000c, 38320x0006000c,
31680x28030007, 38330x28030007,
31690x41820000, 38340x41820000,
@@ -3177,12 +3842,95 @@ static const unsigned int build_actionlist[5561] = {
31770x4e800020, 38420x4e800020,
31780x0006000c, 38430x0006000c,
31790x7c810808, 38440x7c810808,
31800x00060098, 38450x0006009f,
31810x00000000, 38460x00000000,
31820x7c810808, 38470x7c810808,
31830x00000000, 38480x00000000,
31840x00080000, 38490x00080000,
31850x00000000, 38500x00000000,
38510x7c14706e,
38520x3a100004,
38530x80940004,
38540x7d0c706e,
38550x8130fffc,
38560x7c00b040,
38570x80ac0004,
38580x552993ba,
38590x7c88b040,
38600x3d290000,
38610x00098200,
38620x40820000,
38630x00050807,
38640x40860000,
38650x00050808,
38660x7c042800,
38670x00000000,
38680x40800000,
38690x00050802,
38700x00000000,
38710x41800000,
38720x00050802,
38730x00000000,
38740x41810000,
38750x00050802,
38760x00000000,
38770x40810000,
38780x00050802,
38790x00000000,
38800x0006000b,
38810x7e104a14,
38820x0006000c,
38830x80f00000,
38840x3a100004,
38850x54e815ba,
38860x54ea5d78,
38870x54ec9b78,
38880x7c11402e,
38890x54f4dd78,
38900x54eb9d78,
38910x7c0903a6,
38920x4e800420,
38930x00060011,
38940x41810000,
38950x00050834,
38960xc8140000,
38970x41850000,
38980x00050834,
38990x41840000,
39000x00050804,
39010x6ca58000,
39020x90a10024,
39030xc8210020,
39040xfc21f828,
39050x48000000,
39060x00050005,
39070x00060012,
39080x6c848000,
39090x90810024,
39100xc8010020,
39110xfc00f828,
39120x0006000e,
39130xc82c0000,
39140x0006000f,
39150xfc000800,
39160x00000000,
39170x40800000,
39180x0005080c,
39190x00000000,
39200x41800000,
39210x0005080c,
39220x00000000,
39230x4c001382,
39240x40800000,
39250x0005080c,
39260x00000000,
39270x4c001382,
39280x41800000,
39290x0005080c,
39300x00000000,
39310x48000000,
39320x0005000b,
39330x00000000,
31860x7c0ea02e, 39340x7c0ea02e,
31870x3a100004, 39350x3a100004,
31880x7c0ea4ae, 39360x7c0ea4ae,
@@ -3228,6 +3976,25 @@ static const unsigned int build_actionlist[5561] = {
32280x4e800420, 39760x4e800420,
32290x00000000, 39770x00000000,
32300x7c14706e, 39780x7c14706e,
39790x3a100004,
39800x80940004,
39810x7d0c706e,
39820x7c00b040,
39830x80f0fffc,
39840x7c88b040,
39850x54e993ba,
39860x80ac0004,
39870x4fa12b82,
39880x3d290000,
39890x00098200,
39900x00000000,
39910x409d0000,
39920x000508a0,
39930x00000000,
39940x409d0000,
39950x000508a1,
39960x00000000,
39970x7c14706e,
32310x81300000, 39980x81300000,
32320xc8140000, 39990xc8140000,
32330x3a100004, 40000x3a100004,
@@ -3263,9 +4030,12 @@ static const unsigned int build_actionlist[5561] = {
32630x54eb9d78, 40300x54eb9d78,
32640x7c0903a6, 40310x7c0903a6,
32650x4e800420, 40320x4e800420,
40330x00000000,
32660x0006000f, 40340x0006000f,
40350x00000000,
32670x80940004, 40360x80940004,
32680x80ac0004, 40370x80ac0004,
40380x00000000,
32690x7c0600f8, 40390x7c0600f8,
32700x7c004040, 40400x7c004040,
32710x28860000, 40410x28860000,
@@ -3290,8 +4060,24 @@ static const unsigned int build_actionlist[5561] = {
32900x7e104a14, 40600x7e104a14,
32910x00060010, 40610x00060010,
32920x00000000, 40620x00000000,
40630x40800000,
40640x00050802,
40650x0006000b,
40660x80f00000,
40670x3a100004,
40680x54e815ba,
40690x54ea5d78,
40700x54ec9b78,
40710x7c11402e,
40720x54f4dd78,
40730x54eb9d78,
40740x7c0903a6,
40750x4e800420,
40760x0006000c,
40770x00000000,
32930x41800000, 40780x41800000,
32940x0005080b, 40790x0005080b,
40800x00000000,
32950x41980000, 40810x41980000,
32960x0005080b, 40820x0005080b,
32970x81240000, 40830x81240000,
@@ -3345,27 +4131,59 @@ static const unsigned int build_actionlist[5561] = {
33450x7c0903a6, 41310x7c0903a6,
33460x4e800420, 41320x4e800420,
33470x00000000, 41330x00000000,
41340x7c14706e,
41350x3a100004,
41360x80940004,
41370x7d0c786e,
41380x7c00b040,
41390x80f0fffc,
41400x7c88b040,
41410x54e993ba,
41420x80ac0004,
41430x3d290000,
41440x00098200,
41450x00000000,
41460x000600a0,
41470x00000000,
41480x000600a1,
41490x00000000,
41500x40820000,
41510x00050807,
41520x40860000,
41530x00050808,
41540x7c042800,
41550x0006000e,
41560x00000000,
41570x000600a0,
41580x00000000,
41590x000600a1,
41600x00000000,
33480x7c0ea02e, 41610x7c0ea02e,
33490x7c0ea4ae,
33500x3a100004, 41620x3a100004,
33510x7c2f64ae, 41630x7c0ea4ae,
33520x80f0fffc, 41640x80f0fffc,
33530x7c00b040, 41650x7c2f64ae,
33540x40800000,
33550x00050805,
33560xfc000800,
33570x54e993ba, 41660x54e993ba,
41670x7c00b040,
33580x3d290000, 41680x3d290000,
33590x00098200, 41690x00098200,
41700x40800000,
41710x00050803,
41720xfc000800,
33600x00000000, 41730x00000000,
33610x40820000, 41740x40820000,
33620x00050805, 41750x00050801,
33630x7e104a14, 41760x7e104a14,
33640x0006000f, 41770x0006000b,
41780x00000000,
41790x0006000d,
33650x00000000, 41800x00000000,
33660x41820000, 41810x41820000,
33670x00050802, 41820x00050802,
33680x0006000b, 41830x0006000b,
41840x00000000,
41850x0006000d,
41860x00000000,
33690x7e104a14, 41870x7e104a14,
33700x0006000c, 41880x0006000c,
33710x00000000, 41890x00000000,
@@ -3380,13 +4198,38 @@ static const unsigned int build_actionlist[5561] = {
33800x7c0903a6, 41980x7c0903a6,
33810x4e800420, 41990x4e800420,
33820x00000000, 42000x00000000,
33830x0006000f, 42010x0006000d,
33840x54e993ba, 42020x2c000000,
33850x3d290000,
33860x00098200, 42030x00098200,
42040x41820000,
42050x0005083a,
33870x48000000, 42060x48000000,
33880x0005000b, 42070x0005000b,
33890x00000000, 42080x00000000,
42090x00060011,
42100x40800000,
42110x0005080d,
42120xc8140000,
42130x41840000,
42140x00050801,
42150x6ca58000,
42160x90a10024,
42170xc8210020,
42180xfc21f828,
42190x48000000,
42200x00050002,
42210x00060012,
42220x6c848000,
42230x90810024,
42240xc8010020,
42250xfc00f828,
42260x0006000b,
42270xc82c0000,
42280x0006000c,
42290xfc000800,
42300x48000000,
42310x0005000e,
42320x00000000,
33900x7c0ea02e, 42330x7c0ea02e,
33910x558800fe, 42340x558800fe,
33920x000900ab, 42350x000900ab,
@@ -3494,13 +4337,48 @@ static const unsigned int build_actionlist[5561] = {
34940x7d0c706e, 43370x7d0c706e,
34950x800c0004, 43380x800c0004,
34960x7c08b040, 43390x7c08b040,
43400x00000000,
43410x40820000,
43420x00050805,
43430x7c0004d1,
43440x41830000,
43450x00050804,
43460x0006000b,
43470x80f00000,
43480x3a100004,
43490x7ed4716e,
43500x90140004,
43510x0006000d,
43520x54e815ba,
43530x54ea5d78,
43540x54ec9b78,
43550x7c11402e,
43560x54f4dd78,
43570x54eb9d78,
43580x7c0903a6,
43590x4e800420,
43600x0006000e,
43610x7c000400,
43620x40810000,
43630x0005080b,
43640x3d0041e0,
43650x38000000,
43660x48000000,
43670x00050007,
43680x00000000,
43690x0006000f,
34970x40800000, 43700x40800000,
34980x0005083c, 43710x0005083d,
34990x6d088000, 43720x6d088000,
43730x00060011,
35000x80f00000, 43740x80f00000,
35010x3a100004, 43750x3a100004,
35020x7d14716e, 43760x7d14716e,
35030x90140004, 43770x90140004,
43780x00000000,
43790x48000000,
43800x0005000d,
43810x00000000,
35040x54e815ba, 43820x54e815ba,
35050x54ea5d78, 43830x54ea5d78,
35060x54ec9b78, 43840x54ec9b78,
@@ -3519,12 +4397,19 @@ static const unsigned int build_actionlist[5561] = {
35190x80630000, 43970x80630000,
35200x00098200, 43980x00098200,
35210x0006000b, 43990x0006000b,
44000x00000000,
44010x80f00000,
44020x3a100004,
44030x7ed4716e,
44040x90740004,
44050x00000000,
35220x90610024, 44060x90610024,
35230xc8010020, 44070xc8010020,
35240xfc00f028, 44080xfc00f028,
35250x80f00000, 44090x80f00000,
35260x3a100004, 44100x3a100004,
35270x7c0ea5ae, 44110x7c0ea5ae,
44120x00000000,
35280x54e815ba, 44130x54e815ba,
35290x54ea5d78, 44140x54ea5d78,
35300x54ec9b78, 44150x54ec9b78,
@@ -3537,7 +4422,7 @@ static const unsigned int build_actionlist[5561] = {
35370x2c000000, 44220x2c000000,
35380x00098200, 44230x00098200,
35390x40820000, 44240x40820000,
35400x0005083e, 44250x00050842,
35410x00000000, 44260x00000000,
35420x81230000, 44270x81230000,
35430x00098200, 44280x00098200,
@@ -3546,9 +4431,9 @@ static const unsigned int build_actionlist[5561] = {
35460x00050809, 44310x00050809,
35470x0006000d, 44320x0006000d,
35480x00000000, 44330x00000000,
35490x0006003f, 44340x00060043,
35500x48000001, 44350x48000001,
35510x00030024, 44360x00030026,
35520x48000000, 44370x48000000,
35530x0005000b, 44380x0005000b,
35540x00000000, 44390x00000000,
@@ -3560,35 +4445,134 @@ static const unsigned int build_actionlist[5561] = {
35600x40820000, 44450x40820000,
35610x0005080d, 44460x0005080d,
35620x48000000, 44470x48000000,
35630x0005003e, 44480x00050042,
44490x00000000,
44500x7d0a706e,
44510x7d2b786e,
44520x806a0004,
44530x7c08b040,
44540x808b0004,
44550x00000000,
44560x7d0a706e,
44570x7d2b786e,
44580x808a0004,
44590x7c08b040,
44600x806b0004,
44610x00000000,
44620x7d0a706e,
44630x7d2b706e,
44640x806a0004,
44650x7c08b040,
44660x808b0004,
44670x00000000,
44680x7c89b040,
44690x4c423202,
44700x40820000,
44710x00050805,
44720x7c632615,
44730x41830000,
44740x00050804,
44750x0006000b,
44760x80f00000,
44770x3a100004,
44780x7ed4716e,
44790x90740004,
44800x0006000c,
44810x54e815ba,
44820x54ea5d78,
44830x54ec9b78,
44840x7c11402e,
44850x54f4dd78,
44860x54eb9d78,
44870x7c0903a6,
44880x4e800420,
44890x0006000e,
44900x7c000400,
44910x40810000,
44920x0005080b,
44930x00000000,
44940x48000000,
44950x00050040,
44960x00000000,
44970x48000000,
44980x0005003c,
44990x00000000,
45000x48000000,
45010x00050041,
45020x00000000,
45030x0006000f,
45040x00000000,
45050xc9ea0000,
45060x4c002202,
45070xc9cb0000,
45080x00000000,
45090xc9ca0000,
45100x4c002202,
45110xc9eb0000,
35640x00000000, 45120x00000000,
35650x7c6e502e,
35660x7c0e54ae,
35670x7c2f5cae,
35680x7c03b040,
35690x40800000, 45130x40800000,
35700x0005083a, 45140x00050840,
35710x00000000, 45150x00000000,
35720x7c6e502e, 45160x40800000,
35730x7c2e54ae, 45170x0005083c,
35740x7c0f5cae, 45180x00000000,
35750x7c03b040, 45190x40800000,
45200x00050841,
45210x00000000,
45220xfc0e782a,
45230x80f00000,
45240x3a100004,
45250x7c0ea5ae,
45260x48000000,
45270x0005000c,
45280x00000000,
45290x7d0e502e,
45300x00000000,
45310x7d2f582e,
45320x00000000,
45330x7dce54ae,
45340x7def5cae,
45350x00000000,
45360x7c08b040,
45370x7c89b040,
45380x4c002202,
45390x40800000,
45400x0005083e,
45410x00000000,
45420x7c08b040,
45430x40800000,
45440x0005083e,
45450x00000000,
45460x7d0e502e,
45470x00000000,
45480x7d2f582e,
45490x00000000,
45500x7dee54ae,
45510x7dcf5cae,
45520x00000000,
45530x7c08b040,
45540x7c89b040,
45550x4c002202,
35760x40800000, 45560x40800000,
35770x0005083b, 45570x0005083b,
35780x00000000, 45580x00000000,
35790x7c6e502e, 45590x7c08b040,
35800x7c8e582e, 45600x40800000,
35810x7c0e54ae, 45610x0005083b,
35820x7c2e5cae, 45620x00000000,
35830x7c03b040, 45630x7d0e502e,
35840x7c84b040, 45640x7d2e582e,
45650x7dce54ae,
45660x7dee5cae,
45670x7c08b040,
45680x7c89b040,
35850x4c002202, 45690x4c002202,
35860x40800000, 45700x40800000,
35870x0005083d, 45710x0005083f,
35880x00000000, 45720x00000000,
45730xfc0e782a,
35890x80f00000, 45740x80f00000,
35900x3a100004, 45750x3a100004,
35910xfc00082a,
35920x7c0ea5ae, 45760x7c0ea5ae,
35930x54e815ba, 45770x54e815ba,
35940x54ea5d78, 45780x54ea5d78,
@@ -3599,33 +4583,132 @@ static const unsigned int build_actionlist[5561] = {
35990x7c0903a6, 45830x7c0903a6,
36000x4e800420, 45840x4e800420,
36010x00000000, 45850x00000000,
36020x7c6e502e, 45860x7d0a706e,
36030x7c0e54ae, 45870x7d2b786e,
36040x7c2f5cae, 45880x806a0004,
36050x7c03b040, 45890x7c08b040,
45900x808b0004,
45910x00000000,
45920x7d0a706e,
45930x7d2b786e,
45940x808a0004,
45950x7c08b040,
45960x806b0004,
45970x00000000,
45980x7d0a706e,
45990x7d2b706e,
46000x806a0004,
46010x7c08b040,
46020x808b0004,
46030x00000000,
46040x7c89b040,
46050x4c423202,
46060x40820000,
46070x00050805,
46080x7c641c51,
46090x41830000,
46100x00050804,
46110x0006000b,
46120x80f00000,
46130x3a100004,
46140x7ed4716e,
46150x90740004,
46160x0006000c,
46170x54e815ba,
46180x54ea5d78,
46190x54ec9b78,
46200x7c11402e,
46210x54f4dd78,
46220x54eb9d78,
46230x7c0903a6,
46240x4e800420,
46250x0006000e,
46260x7c000400,
46270x40810000,
46280x0005080b,
46290x00000000,
46300x48000000,
46310x00050040,
46320x00000000,
46330x48000000,
46340x0005003c,
46350x00000000,
46360x48000000,
46370x00050041,
46380x00000000,
46390x0006000f,
46400x00000000,
46410xc9ea0000,
46420x4c002202,
46430xc9cb0000,
46440x00000000,
46450xc9ca0000,
46460x4c002202,
46470xc9eb0000,
46480x00000000,
36060x40800000, 46490x40800000,
36070x0005083a, 46500x00050840,
36080x00000000, 46510x00000000,
36090x7c6e502e, 46520x40800000,
36100x7c2e54ae, 46530x0005083c,
36110x7c0f5cae, 46540x00000000,
36120x7c03b040, 46550x40800000,
46560x00050841,
46570x00000000,
46580xfc0e7828,
46590x80f00000,
46600x3a100004,
46610x7c0ea5ae,
46620x48000000,
46630x0005000c,
46640x00000000,
46650x7d0e502e,
46660x00000000,
46670x7d2f582e,
46680x00000000,
46690x7dce54ae,
46700x7def5cae,
46710x00000000,
46720x7c08b040,
46730x7c89b040,
46740x4c002202,
46750x40800000,
46760x0005083e,
46770x00000000,
46780x7c08b040,
46790x40800000,
46800x0005083e,
46810x00000000,
46820x7d0e502e,
46830x00000000,
46840x7d2f582e,
46850x00000000,
46860x7dee54ae,
46870x7dcf5cae,
46880x00000000,
46890x7c08b040,
46900x7c89b040,
46910x4c002202,
36130x40800000, 46920x40800000,
36140x0005083b, 46930x0005083b,
36150x00000000, 46940x00000000,
36160x7c6e502e, 46950x7c08b040,
36170x7c8e582e, 46960x40800000,
36180x7c0e54ae, 46970x0005083b,
36190x7c2e5cae, 46980x00000000,
36200x7c03b040, 46990x7d0e502e,
36210x7c84b040, 47000x7d2e582e,
47010x7dce54ae,
47020x7dee5cae,
47030x7c08b040,
47040x7c89b040,
36220x4c002202, 47050x4c002202,
36230x40800000, 47060x40800000,
36240x0005083d, 47070x0005083f,
36250x00000000, 47080x00000000,
47090xfc0e7828,
36260x80f00000, 47100x80f00000,
36270x3a100004, 47110x3a100004,
36280xfc000828,
36290x7c0ea5ae, 47120x7c0ea5ae,
36300x54e815ba, 47130x54e815ba,
36310x54ea5d78, 47140x54ea5d78,
@@ -3636,33 +4719,132 @@ static const unsigned int build_actionlist[5561] = {
36360x7c0903a6, 47190x7c0903a6,
36370x4e800420, 47200x4e800420,
36380x00000000, 47210x00000000,
36390x7c6e502e, 47220x7d0a706e,
36400x7c0e54ae, 47230x7d2b786e,
36410x7c2f5cae, 47240x806a0004,
36420x7c03b040, 47250x7c08b040,
47260x808b0004,
47270x00000000,
47280x7d0a706e,
47290x7d2b786e,
47300x808a0004,
47310x7c08b040,
47320x806b0004,
47330x00000000,
47340x7d0a706e,
47350x7d2b706e,
47360x806a0004,
47370x7c08b040,
47380x808b0004,
47390x00000000,
47400x7c89b040,
47410x4c423202,
47420x40820000,
47430x00050805,
47440x7c6325d7,
47450x41830000,
47460x00050804,
47470x0006000b,
47480x80f00000,
47490x3a100004,
47500x7ed4716e,
47510x90740004,
47520x0006000c,
47530x54e815ba,
47540x54ea5d78,
47550x54ec9b78,
47560x7c11402e,
47570x54f4dd78,
47580x54eb9d78,
47590x7c0903a6,
47600x4e800420,
47610x0006000e,
47620x7c000400,
47630x40810000,
47640x0005080b,
47650x00000000,
47660x48000000,
47670x00050040,
47680x00000000,
47690x48000000,
47700x0005003c,
47710x00000000,
47720x48000000,
47730x00050041,
47740x00000000,
47750x0006000f,
47760x00000000,
47770xc9ea0000,
47780x4c002202,
47790xc9cb0000,
47800x00000000,
47810xc9ca0000,
47820x4c002202,
47830xc9eb0000,
47840x00000000,
36430x40800000, 47850x40800000,
36440x0005083a, 47860x00050840,
36450x00000000, 47870x00000000,
36460x7c6e502e, 47880x40800000,
36470x7c2e54ae, 47890x0005083c,
36480x7c0f5cae, 47900x00000000,
36490x7c03b040, 47910x40800000,
47920x00050841,
47930x00000000,
47940xfc0e03f2,
47950x80f00000,
47960x3a100004,
47970x7c0ea5ae,
47980x48000000,
47990x0005000c,
48000x00000000,
48010x7d0e502e,
48020x00000000,
48030x7d2f582e,
48040x00000000,
48050x7dce54ae,
48060x7def5cae,
48070x00000000,
48080x7c08b040,
48090x7c89b040,
48100x4c002202,
48110x40800000,
48120x0005083e,
48130x00000000,
48140x7c08b040,
48150x40800000,
48160x0005083e,
48170x00000000,
48180x7d0e502e,
48190x00000000,
48200x7d2f582e,
48210x00000000,
48220x7dee54ae,
48230x7dcf5cae,
48240x00000000,
48250x7c08b040,
48260x7c89b040,
48270x4c002202,
36500x40800000, 48280x40800000,
36510x0005083b, 48290x0005083b,
36520x00000000, 48300x00000000,
36530x7c6e502e, 48310x7c08b040,
36540x7c8e582e, 48320x40800000,
36550x7c0e54ae, 48330x0005083b,
36560x7c2e5cae, 48340x00000000,
36570x7c03b040, 48350x7d0e502e,
36580x7c84b040, 48360x7d2e582e,
48370x7dce54ae,
48380x7dee5cae,
48390x7c08b040,
48400x7c89b040,
36590x4c002202, 48410x4c002202,
36600x40800000, 48420x40800000,
36610x0005083d, 48430x0005083f,
36620x00000000, 48440x00000000,
48450xfc0e03f2,
36630x80f00000, 48460x80f00000,
36640x3a100004, 48470x3a100004,
36650xfc000072,
36660x7c0ea5ae, 48480x7c0ea5ae,
36670x54e815ba, 48490x54e815ba,
36680x54ea5d78, 48500x54ea5d78,
@@ -3673,33 +4855,53 @@ static const unsigned int build_actionlist[5561] = {
36730x7c0903a6, 48550x7c0903a6,
36740x4e800420, 48560x4e800420,
36750x00000000, 48570x00000000,
36760x7c6e502e, 48580x7d0e502e,
36770x7c0e54ae, 48590x00000000,
36780x7c2f5cae, 48600x7d2f582e,
36790x7c03b040, 48610x00000000,
48620x7dce54ae,
48630x7def5cae,
48640x00000000,
48650x7c08b040,
48660x7c89b040,
48670x4c002202,
36800x40800000, 48680x40800000,
36810x0005083a, 48690x0005083e,
36820x00000000, 48700x00000000,
36830x7c6e502e, 48710x7c08b040,
36840x7c2e54ae, 48720x40800000,
36850x7c0f5cae, 48730x0005083e,
36860x7c03b040, 48740x00000000,
48750x7d0e502e,
48760x00000000,
48770x7d2f582e,
48780x00000000,
48790x7dee54ae,
48800x7dcf5cae,
48810x00000000,
48820x7c08b040,
48830x7c89b040,
48840x4c002202,
36870x40800000, 48850x40800000,
36880x0005083b, 48860x0005083b,
36890x00000000, 48870x00000000,
36900x7c6e502e, 48880x7c08b040,
36910x7c8e582e, 48890x40800000,
36920x7c0e54ae, 48900x0005083b,
36930x7c2e5cae, 48910x00000000,
36940x7c03b040, 48920x7d0e502e,
36950x7c84b040, 48930x7d2e582e,
48940x7dce54ae,
48950x7dee5cae,
48960x7c08b040,
48970x7c89b040,
36960x4c002202, 48980x4c002202,
36970x40800000, 48990x40800000,
36980x0005083d, 49000x0005083f,
36990x00000000, 49010x00000000,
49020xfc0e7824,
37000x80f00000, 49030x80f00000,
37010x3a100004, 49040x3a100004,
37020xfc000824,
37030x7c0ea5ae, 49050x7c0ea5ae,
37040x54e815ba, 49060x54e815ba,
37050x54ea5d78, 49070x54ea5d78,
@@ -3710,38 +4912,148 @@ static const unsigned int build_actionlist[5561] = {
37100x7c0903a6, 49120x7c0903a6,
37110x4e800420, 49130x4e800420,
37120x00000000, 49140x00000000,
37130x7c6e502e, 49150x7d0a706e,
49160x7d2b786e,
49170x806a0004,
49180x7c08b040,
49190x808b0004,
49200x00000000,
49210x7d0a706e,
49220x7d2b786e,
49230x808a0004,
49240x7c08b040,
49250x806b0004,
49260x00000000,
49270x7d0a706e,
49280x7d2b706e,
49290x806a0004,
49300x7c08b040,
49310x808b0004,
49320x00000000,
49330x7c89b040,
49340x4c423202,
49350x40820000,
49360x00050805,
49370x000600a2,
49380x48000001,
49390x0005009b,
49400x41830000,
49410x00050804,
49420x0006000b,
49430x80f00000,
49440x3a100004,
49450x7ed4716e,
49460x90740004,
49470x0006000c,
49480x54e815ba,
49490x54ea5d78,
49500x54ec9b78,
49510x7c11402e,
49520x54f4dd78,
49530x54eb9d78,
49540x7c0903a6,
49550x4e800420,
49560x0006000e,
49570x7c000400,
49580x40810000,
49590x0005080b,
49600x00000000,
49610x48000000,
49620x00050040,
49630x00000000,
49640x48000000,
49650x0005003c,
49660x00000000,
49670x48000000,
49680x00050041,
49690x00000000,
49700x0006000f,
49710x00000000,
49720xc9ea0000,
49730x4c002202,
49740xc9cb0000,
49750x00000000,
49760xc9ca0000,
49770x4c002202,
49780xc9eb0000,
49790x00000000,
49800x40800000,
49810x00050840,
49820x00000000,
49830x40800000,
49840x0005083c,
49850x00000000,
49860x40800000,
49870x00050841,
49880x00000000,
49890x000600a2,
49900x00000000,
49910x000600a3,
49920xfc2e7824,
49930x48000001,
49940x00030010,
49950xfc0103f2,
49960xfc0e0028,
49970x80f00000,
49980x3a100004,
49990x7c0ea5ae,
50000x48000000,
50010x0005000c,
50020x00000000,
50030x7d0e502e,
50040x00000000,
50050x7d2f582e,
50060x00000000,
37140x7dce54ae, 50070x7dce54ae,
37150x7def5cae, 50080x7def5cae,
37160x7c03b040, 50090x00000000,
50100x7c08b040,
50110x7c89b040,
50120x4c002202,
37170x40800000, 50130x40800000,
37180x0005083a, 50140x0005083e,
50150x00000000,
50160x7c08b040,
50170x40800000,
50180x0005083e,
50190x00000000,
50200x7d0e502e,
50210x00000000,
50220x7d2f582e,
37190x00000000, 50230x00000000,
37200x7c6e502e,
37210x7dee54ae, 50240x7dee54ae,
37220x7dcf5cae, 50250x7dcf5cae,
37230x7c03b040, 50260x00000000,
50270x7c08b040,
50280x7c89b040,
50290x4c002202,
50300x40800000,
50310x0005083b,
50320x00000000,
50330x7c08b040,
37240x40800000, 50340x40800000,
37250x0005083b, 50350x0005083b,
37260x00000000, 50360x00000000,
37270x7c6e502e, 50370x7d0e502e,
37280x7c8e582e, 50380x7d2e582e,
37290x7dce54ae, 50390x7dce54ae,
37300x7dee5cae, 50400x7dee5cae,
37310x7c03b040, 50410x7c08b040,
37320x7c84b040, 50420x7c89b040,
37330x4c002202, 50430x4c002202,
37340x40800000, 50440x40800000,
37350x0005083d, 50450x0005083f,
37360x00000000, 50460x00000000,
37370x00060099, 50470x000600a2,
50480x00000000,
50490x000600a3,
37380xfc2e7824, 50500xfc2e7824,
37390x48000001, 50510x48000001,
37400x0003000e, 50520x00030010,
37410xfc0103f2, 50530xfc0103f2,
50540xfc0e0028,
37420x80f00000, 50550x80f00000,
37430x3a100004, 50560x3a100004,
37440xfc0e0028,
37450x7c0ea5ae, 50570x7c0ea5ae,
37460x54e815ba, 50580x54e815ba,
37470x54ea5d78, 50590x54ea5d78,
@@ -3752,44 +5064,110 @@ static const unsigned int build_actionlist[5561] = {
37520x7c0903a6, 50640x7c0903a6,
37530x4e800420, 50650x4e800420,
37540x00000000, 50660x00000000,
37550x7c6e502e, 50670x7d0a706e,
50680x7d2b786e,
50690x806a0004,
50700x7c08b040,
50710x808b0004,
50720x00000000,
50730x7d0a706e,
50740x7d2b786e,
50750x808a0004,
50760x7c08b040,
50770x806b0004,
50780x00000000,
50790x7d0a706e,
50800x7d2b706e,
50810x806a0004,
50820x7c08b040,
50830x808b0004,
50840x00000000,
50850x7c89b040,
50860x4c423202,
50870x40820000,
50880x00050805,
50890x48000000,
50900x000500a2,
50910x0006000f,
50920x00000000,
50930xc9ea0000,
50940x4c002202,
50950xc9cb0000,
50960x00000000,
50970xc9ca0000,
50980x4c002202,
50990xc9eb0000,
51000x00000000,
51010x40800000,
51020x00050840,
51030x00000000,
51040x40800000,
51050x0005083c,
51060x00000000,
51070x40800000,
51080x00050841,
51090x00000000,
51100x48000000,
51110x000500a3,
51120x00000000,
51130x7d0e502e,
51140x00000000,
51150x7d2f582e,
51160x00000000,
37560x7dce54ae, 51170x7dce54ae,
37570x7def5cae, 51180x7def5cae,
37580x7c03b040, 51190x00000000,
51200x7c08b040,
51210x7c89b040,
51220x4c002202,
37590x40800000, 51230x40800000,
37600x0005083a, 51240x0005083e,
51250x00000000,
51260x7c08b040,
51270x40800000,
51280x0005083e,
51290x00000000,
51300x7d0e502e,
51310x00000000,
51320x7d2f582e,
37610x00000000, 51330x00000000,
37620x7c6e502e,
37630x7dee54ae, 51340x7dee54ae,
37640x7dcf5cae, 51350x7dcf5cae,
37650x7c03b040, 51360x00000000,
51370x7c08b040,
51380x7c89b040,
51390x4c002202,
51400x40800000,
51410x0005083b,
51420x00000000,
51430x7c08b040,
37660x40800000, 51440x40800000,
37670x0005083b, 51450x0005083b,
37680x00000000, 51460x00000000,
37690x7c6e502e, 51470x7d0e502e,
37700x7c8e582e, 51480x7d2e582e,
37710x7dce54ae, 51490x7dce54ae,
37720x7dee5cae, 51500x7dee5cae,
37730x7c03b040, 51510x7c08b040,
37740x7c84b040, 51520x7c89b040,
37750x4c002202, 51530x4c002202,
37760x40800000, 51540x40800000,
37770x0005083d, 51550x0005083f,
37780x00000000, 51560x00000000,
37790x48000000, 51570x48000000,
37800x00050099, 51580x000500a3,
37810x00000000, 51590x00000000,
37820x7c6e502e, 51600x7d0e502e,
37830x7c2e54ae, 51610x7c2e54ae,
37840x7c8e582e, 51620x7d2e582e,
37850x7c4e5cae, 51630x7c4e5cae,
37860x7c03b040, 51640x7c08b040,
37870x7c84b040, 51650x7c89b040,
37880x4c002202, 51660x4c002202,
37890x40800000, 51670x40800000,
37900x0005083d, 51680x0005083f,
37910x48000001, 51690x48000001,
37920x0003001d, 51700x0003001f,
37930x7c2ea5ae, 51710x7c2ea5ae,
37940x80f00000, 51720x80f00000,
37950x3a100004, 51730x3a100004,
@@ -3813,7 +5191,7 @@ static const unsigned int build_actionlist[5561] = {
38130x54a500fe, 51910x54a500fe,
38140x000900ab, 51920x000900ab,
38150x48000001, 51930x48000001,
38160x00030029, 51940x0003002b,
38170x28030000, 51950x28030000,
38180x81d20000, 51960x81d20000,
38190x00098200, 51970x00098200,
@@ -3873,6 +5251,22 @@ static const unsigned int build_actionlist[5561] = {
38730x558c6800, 52510x558c6800,
38740x000900a1, 52520x000900a1,
38750x7d8c8670, 52530x7d8c8670,
52540x80f00000,
52550x3a100004,
52560x7ed4716e,
52570x91940004,
52580x54e815ba,
52590x54ea5d78,
52600x54ec9b78,
52610x7c11402e,
52620x54f4dd78,
52630x54eb9d78,
52640x7c0903a6,
52650x4e800420,
52660x00000000,
52670x558c6800,
52680x000900a1,
52690x7d8c8670,
38760x6d8c8000, 52700x6d8c8000,
38770x91810024, 52710x91810024,
38780xc8010020, 52720xc8010020,
@@ -4006,7 +5400,7 @@ static const unsigned int build_actionlist[5561] = {
40060x41820000, 54000x41820000,
40070x0005080b, 54010x0005080b,
40080x48000001, 54020x48000001,
40090x0003002a, 54030x0003002c,
40100x48000000, 54040x48000000,
40110x0005000b, 54050x0005000b,
40120x00000000, 54060x00000000,
@@ -4057,7 +5451,7 @@ static const unsigned int build_actionlist[5561] = {
40570x41820000, 54510x41820000,
40580x0005080b, 54520x0005080b,
40590x48000001, 54530x48000001,
40600x0003002a, 54540x0003002c,
40610x48000000, 54550x48000000,
40620x0005000b, 54560x0005000b,
40630x00000000, 54570x00000000,
@@ -4120,7 +5514,7 @@ static const unsigned int build_actionlist[5561] = {
41200x00050801, 55140x00050801,
41210x7c8ea214, 55150x7c8ea214,
41220x48000001, 55160x48000001,
41230x0003002b, 55170x0003002d,
41240x81d20000, 55180x81d20000,
41250x00098200, 55190x00098200,
41260x0006000b, 55200x0006000b,
@@ -4145,7 +5539,7 @@ static const unsigned int build_actionlist[5561] = {
41450x7e439378, 55390x7e439378,
41460x80aefffc, 55400x80aefffc,
41470x48000001, 55410x48000001,
41480x0003002c, 55420x0003002e,
41490x81d20000, 55430x81d20000,
41500x00098200, 55440x00098200,
41510x38000000, 55450x38000000,
@@ -4183,14 +5577,14 @@ static const unsigned int build_actionlist[5561] = {
41830x00050803, 55770x00050803,
41840x0006000c, 55780x0006000c,
41850x48000001, 55790x48000001,
41860x0003002d, 55800x0003002f,
41870x00000000, 55810x00000000,
41880x5588007e, 55820x5588007e,
41890x000900ab, 55830x000900ab,
41900x2108fffc, 55840x2108fffc,
41910x7c8f402e, 55850x7c8f402e,
41920x48000001, 55860x48000001,
41930x0003002e, 55870x00030030,
41940x00000000, 55880x00000000,
41950x81d20000, 55890x81d20000,
41960x00098200, 55900x00098200,
@@ -4217,7 +5611,7 @@ static const unsigned int build_actionlist[5561] = {
42170x0006000f, 56110x0006000f,
42180x7d956378, 56120x7d956378,
42190x48000001, 56130x48000001,
42200x0003002f, 56140x00030031,
42210x7eacab78, 56150x7eacab78,
42220x7e439378, 56160x7e439378,
42230x48000000, 56170x48000000,
@@ -4232,20 +5626,35 @@ static const unsigned int build_actionlist[5561] = {
42320x7d6f402e, 56260x7d6f402e,
42330x00000000, 56270x00000000,
42340x48000000, 56280x48000000,
42350x0005009a, 56290x000500a4,
42360x00000000, 56300x00000000,
42370x48000000, 56310x48000000,
42380x0005009b, 56320x000500a5,
42390x00000000, 56330x00000000,
42400x7c6a706e, 56340x7c6a706e,
42410x7c8b706e, 56350x7c8b706e,
42420x814a0004, 56360x814a0004,
56370x00000000,
56380x816b0004,
56390x00000000,
42430xc80b0000, 56400xc80b0000,
56410x00000000,
42440x2c030000, 56420x2c030000,
42450x00098200, 56430x00098200,
42460x7c84b040, 56440x7c84b040,
42470x40820000, 56450x40820000,
42480x0005082f, 56460x0005082f,
56470x00000000,
56480x800a0000,
56490x00098200,
56500x40860000,
56510x00050805,
56520x810a0000,
56530x00098200,
56540x7c005840,
56550x55691800,
56560x000900a1,
56570x00000000,
42490x40840000, 56580x40840000,
42500x00050805, 56590x00050805,
42510xfc20001e, 56600xfc20001e,
@@ -4262,6 +5671,7 @@ static const unsigned int build_actionlist[5561] = {
42620x4c213202, 56710x4c213202,
42630x55291800, 56720x55291800,
42640x000900a1, 56730x000900a1,
56740x00000000,
42650x40810000, 56750x40810000,
42660x0005082f, 56760x0005082f,
42670x7c08482e, 56770x7c08482e,
@@ -4301,9 +5711,11 @@ static const unsigned int build_actionlist[5561] = {
43010x00098200, 57110x00098200,
43020x40820000, 57120x40820000,
43030x0005082f, 57130x0005082f,
57140x00000000,
43040x816b0004, 57150x816b0004,
57160x00000000,
43050x48000000, 57170x48000000,
43060x0005009a, 57180x000500a4,
43070x00000000, 57190x00000000,
43080x7c6a706e, 57200x7c6a706e,
43090x5568007e, 57210x5568007e,
@@ -4315,7 +5727,7 @@ static const unsigned int build_actionlist[5561] = {
43150x7d6f402e, 57270x7d6f402e,
43160x40820000, 57280x40820000,
43170x0005082c, 57290x0005082c,
43180x0006009a, 57300x000600a4,
43190x800a0000, 57310x800a0000,
43200x00098200, 57320x00098200,
43210x810b0000, 57330x810b0000,
@@ -4437,12 +5849,27 @@ static const unsigned int build_actionlist[5561] = {
44370x7c6a706e, 58490x7c6a706e,
44380x7c8b706e, 58500x7c8b706e,
44390x814a0004, 58510x814a0004,
58520x00000000,
58530x816b0004,
58540x00000000,
44400xc80b0000, 58550xc80b0000,
58560x00000000,
44410x2c030000, 58570x2c030000,
44420x00098200, 58580x00098200,
44430x7c84b040, 58590x7c84b040,
44440x40820000, 58600x40820000,
44450x00050833, 58610x00050833,
58620x00000000,
58630x800a0000,
58640x00098200,
58650x40860000,
58660x00050805,
58670x810a0000,
58680x00098200,
58690x7c005840,
58700x55601800,
58710x000900a1,
58720x00000000,
44460x40840000, 58730x40840000,
44470x00050805, 58740x00050805,
44480xfc20001e, 58750xfc20001e,
@@ -4459,6 +5886,7 @@ static const unsigned int build_actionlist[5561] = {
44590x4c213202, 58860x4c213202,
44600x55201800, 58870x55201800,
44610x000900a1, 58880x000900a1,
58890x00000000,
44620x40810000, 58900x40810000,
44630x00050833, 58910x00050833,
44640x7d28002e, 58920x7d28002e,
@@ -4501,14 +5929,15 @@ static const unsigned int build_actionlist[5561] = {
45010x48000000, 59290x48000000,
45020x00050033, 59300x00050033,
45030x0006000f, 59310x0006000f,
45040x00000000,
45050x2c040000, 59320x2c040000,
45060x00098200, 59330x00098200,
45070x40820000, 59340x40820000,
45080x00050833, 59350x00050833,
59360x00000000,
45090x816b0004, 59370x816b0004,
59380x00000000,
45100x48000000, 59390x48000000,
45110x0005009b, 59400x000500a5,
45120x00060011, 59410x00060011,
45130x80110000, 59420x80110000,
45140x00098200, 59430x00098200,
@@ -4558,7 +5987,7 @@ static const unsigned int build_actionlist[5561] = {
45580x7d6f402e, 59870x7d6f402e,
45590x40820000, 59880x40820000,
45600x00050830, 59890x00050830,
45610x0006009b, 59900x000600a5,
45620x800a0000, 59910x800a0000,
45630x00098200, 59920x00098200,
45640x810b0000, 59930x810b0000,
@@ -4661,7 +6090,7 @@ static const unsigned int build_actionlist[5561] = {
46610x7d445378, 60900x7d445378,
46620x90050000, 60910x90050000,
46630x48000001, 60920x48000001,
46640x00030030, 60930x00030032,
46650x81d20000, 60940x81d20000,
46660x00098200, 60950x00098200,
46670xd9c30000, 60960xd9c30000,
@@ -4802,7 +6231,7 @@ static const unsigned int build_actionlist[5561] = {
48020x92010008, 62310x92010008,
48030x7d956378, 62320x7d956378,
48040x48000001, 62330x48000001,
48050x00030031, 62340x00030033,
48060x7eacab78, 62350x7eacab78,
48070x48000000, 62360x48000000,
48080x0005000b, 62370x0005000b,
@@ -4853,8 +6282,8 @@ static const unsigned int build_actionlist[5561] = {
48530x00098200, 62820x00098200,
48540x3a940008, 62830x3a940008,
48550x40820000, 62840x40820000,
48560x00050840, 62850x00050844,
48570x00060041, 62860x00060045,
48580x71000000, 62870x71000000,
48590x00090200, 62880x00090200,
48600x88ca0000, 62890x88ca0000,
@@ -4966,9 +6395,14 @@ static const unsigned int build_actionlist[5561] = {
49660x80f0fffc, 63950x80f0fffc,
49670x41820000, 63960x41820000,
49680x00050804, 63970x00050804,
63980x00000000,
63990x91740004,
64000x92d40000,
64010x00000000,
49690x91610024, 64020x91610024,
49700xc8210020, 64030xc8210020,
49710xfc21f028, 64040xfc21f028,
64050x00000000,
49720x396b0001, 64060x396b0001,
49730x3cd00000, 64070x3cd00000,
49740x00098200, 64080x00098200,
@@ -4976,7 +6410,9 @@ static const unsigned int build_actionlist[5561] = {
49760x54e893ba, 64100x54e893ba,
49770x9174fffc, 64110x9174fffc,
49780x7e083214, 64120x7e083214,
64130x00000000,
49790xd8340000, 64140xd8340000,
64150x00000000,
49800x0006000d, 64160x0006000d,
49810x80f00000, 64170x80f00000,
49820x3a100004, 64180x3a100004,
@@ -5019,7 +6455,6 @@ static const unsigned int build_actionlist[5561] = {
50190x00098200, 64550x00098200,
50200x3d300000, 64560x3d300000,
50210x00098200, 64570x00098200,
50220x00000000,
50230xd8140008, 64580xd8140008,
50240x7d6b0214, 64590x7d6b0214,
50250x54e893ba, 64600x54e893ba,
@@ -5181,7 +6616,7 @@ static const unsigned int build_actionlist[5561] = {
51810x6a080000, 66160x6a080000,
51820x00090200, 66170x00090200,
51830x40820000, 66180x40820000,
51840x0005089c, 66190x000508a6,
51850x00060017, 66200x00060017,
51860x80f0fffc, 66210x80f0fffc,
51870x2c0c0008, 66220x2c0c0008,
@@ -5232,7 +6667,7 @@ static const unsigned int build_actionlist[5561] = {
52320x7ee9412e, 66670x7ee9412e,
52330x48000000, 66680x48000000,
52340x0005000f, 66690x0005000f,
52350x0006009c, 66700x000600a6,
52360x71090000, 66710x71090000,
52370x00090200, 66720x00090200,
52380x40820000, 66730x40820000,
@@ -5250,7 +6685,7 @@ static const unsigned int build_actionlist[5561] = {
52500x6a080000, 66850x6a080000,
52510x00090200, 66860x00090200,
52520x40820000, 66870x40820000,
52530x0005089c, 66880x000508a6,
52540x80f0fffc, 66890x80f0fffc,
52550x392efff8, 66900x392efff8,
52560x54ea5d78, 66910x54ea5d78,
@@ -5288,7 +6723,101 @@ static const unsigned int build_actionlist[5561] = {
52880x00000000, 67230x00000000,
52890x7c810808, 67240x7c810808,
52900x00000000, 67250x00000000,
67260x7d14706e,
67270x80740000,
67280x00098200,
67290x7c08b040,
67300x00000000,
67310x80b40000,
67320x00098200,
67330x40820000,
67340x00050809,
67350x7c632e15,
67360x2f050000,
67370x80940000,
67380x00098200,
67390x41830000,
67400x00050806,
67410x0006000e,
67420x90740000,
67430x00098200,
67440x00000000,
67450x80d40000,
67460x00098200,
67470x80b40000,
67480x00098200,
67490x81340000,
67500x00098200,
67510x80940000,
67520x00098200,
67530x7f86b040,
67540x7c89b040,
67550x4c42f202,
67560x4c423202,
67570x2f050000,
67580x40820000,
67590x00050809,
67600x00000000,
67610x41980000,
67620x00050805,
67630x7c032000,
67640x0006000b,
67650x92d40000,
67660x00098200,
67670x00000000,
67680x558c007e,
67690x000900ab,
67700x00000000,
67710x90740000,
67720x00098200,
67730x00000000,
67740x7d906214,
67750x00000000,
67760x41810000,
67770x00050803,
67780x00000000,
67790x3e0c0000,
67800x00098200,
67810x40810000,
67820x00070800,
67830x00000000,
67840x41810000,
67850x00050802,
67860x3e0c0000,
67870x00098200,
67880x00000000,
67890x40810000,
67900x00070800,
67910x00000000,
67920x0006000c,
67930x80f00000,
67940x3a100004,
67950x54e815ba,
67960x54ea5d78,
67970x54ec9b78,
67980x7c11402e,
67990x54f4dd78,
68000x54eb9d78,
68010x7c0903a6,
68020x4e800420,
68030x0006000f,
68040x7c041800,
68050x48000000,
68060x0005000b,
68070x00000000,
68080x00060010,
68090x7c000400,
68100x40810000,
68110x0005080e,
68120x48000000,
68130x0005000c,
68140x00000000,
68150x00060013,
68160xc8340000,
68170x00098200,
68180x00000000,
52910x7c3474ee, 68190x7c3474ee,
68200x00000000,
52920xc8740000, 68210xc8740000,
52930x00098200, 68220x00098200,
52940xc8540000, 68230xc8540000,
@@ -5299,26 +6828,29 @@ static const unsigned int build_actionlist[5561] = {
52990xd8340000, 68280xd8340000,
53000x00098200, 68290x00098200,
53010x00000000, 68300x00000000,
68310x00060013,
68320x00000000,
53020x7d14706e, 68330x7d14706e,
53030xc8340000,
53040x00098200,
53050x80d40000, 68340x80d40000,
53060x00098200, 68350x00098200,
53070xc8740000,
53080x00098200,
53090x81340000, 68360x81340000,
53100x00098200, 68370x00098200,
53110xc8540000,
53120x00098200,
53130x7c08b040, 68380x7c08b040,
53140x7f86b040, 68390x7f86b040,
53150x7c89b040, 68400x7c89b040,
68410x00000000,
68420xc8340000,
68430x00098200,
53160x4c00e202, 68440x4c00e202,
68450xc8740000,
68460x00098200,
53170x4c002202, 68470x4c002202,
68480xc8540000,
68490x00098200,
53180x40800000, 68500x40800000,
53190x00050842, 68510x00050846,
53200x00000000, 68520x00000000,
53210x2d860000, 68530x2f060000,
53220x00000000, 68540x00000000,
53230x558c007e, 68550x558c007e,
53240x000900ab, 68560x000900ab,
@@ -5333,14 +6865,18 @@ static const unsigned int build_actionlist[5561] = {
53330x3e0c0000, 68650x3e0c0000,
53340x00098200, 68660x00098200,
53350x00000000, 68670x00000000,
53360x418c0000, 68680x41980000,
53370x00050805, 68690x00050805,
53380x00000000, 68700x00000000,
53390x41810000, 68710x41810000,
53400x00050803, 68720x00050803,
53410x00000000, 68730x00000000,
53420x41810000, 68740x41810000,
68750x0005080c,
68760x00000000,
68770x41810000,
53430x00050802, 68780x00050802,
68790x00000000,
53440x0006000b, 68800x0006000b,
53450x3e0c0000, 68810x3e0c0000,
53460x00098200, 68820x00098200,
@@ -5348,6 +6884,9 @@ static const unsigned int build_actionlist[5561] = {
53480x40810000, 68840x40810000,
53490x00070800, 68850x00070800,
53500x00000000, 68860x00000000,
68870x48000000,
68880x0005000c,
68890x00000000,
53510x0006000c, 68900x0006000c,
53520x80f00000, 68910x80f00000,
53530x3a100004, 68920x3a100004,
@@ -5359,6 +6898,7 @@ static const unsigned int build_actionlist[5561] = {
53590x54eb9d78, 68980x54eb9d78,
53600x7c0903a6, 68990x7c0903a6,
53610x4e800420, 69000x4e800420,
69010x00000000,
53620x0006000f, 69020x0006000f,
53630x00000000, 69030x00000000,
53640x40800000, 69040x40800000,
@@ -5615,10 +7155,14 @@ enum {
5615 GLOB_cont_condt, 7155 GLOB_cont_condt,
5616 GLOB_cont_condf, 7156 GLOB_cont_condf,
5617 GLOB_vmeta_equal, 7157 GLOB_vmeta_equal,
5618 GLOB_vmeta_arith_vn, 7158 GLOB_vmeta_equal_cd,
5619 GLOB_vmeta_arith_nv, 7159 GLOB_vmeta_arith_nv,
7160 GLOB_vmeta_arith_nv2,
5620 GLOB_vmeta_unm, 7161 GLOB_vmeta_unm,
7162 GLOB_vmeta_arith_vn,
5621 GLOB_vmeta_arith_vv, 7163 GLOB_vmeta_arith_vv,
7164 GLOB_vmeta_arith_vn2,
7165 GLOB_vmeta_arith_vv2,
5622 GLOB_vmeta_len, 7166 GLOB_vmeta_len,
5623 GLOB_BC_LEN_Z, 7167 GLOB_BC_LEN_Z,
5624 GLOB_vmeta_callt, 7168 GLOB_vmeta_callt,
@@ -5646,6 +7190,7 @@ enum {
5646 GLOB_ff_coroutine_wrap_aux, 7190 GLOB_ff_coroutine_wrap_aux,
5647 GLOB_ff_coroutine_yield, 7191 GLOB_ff_coroutine_yield,
5648 GLOB_ff_math_abs, 7192 GLOB_ff_math_abs,
7193 GLOB_fff_resi,
5649 GLOB_fff_res1, 7194 GLOB_fff_res1,
5650 GLOB_ff_math_floor, 7195 GLOB_ff_math_floor,
5651 GLOB_ff_math_ceil, 7196 GLOB_ff_math_ceil,
@@ -5673,7 +7218,6 @@ enum {
5673 GLOB_ff_math_min, 7218 GLOB_ff_math_min,
5674 GLOB_ff_math_max, 7219 GLOB_ff_math_max,
5675 GLOB_ff_string_len, 7220 GLOB_ff_string_len,
5676 GLOB_fff_resi,
5677 GLOB_ff_string_byte, 7221 GLOB_ff_string_byte,
5678 GLOB_ff_string_char, 7222 GLOB_ff_string_char,
5679 GLOB_fff_newstr, 7223 GLOB_fff_newstr,
@@ -5683,8 +7227,9 @@ enum {
5683 GLOB_ff_string_lower, 7227 GLOB_ff_string_lower,
5684 GLOB_ff_string_upper, 7228 GLOB_ff_string_upper,
5685 GLOB_ff_table_getn, 7229 GLOB_ff_table_getn,
5686 GLOB_ff_bit_tobit,
5687 GLOB_ff_bit_band, 7230 GLOB_ff_bit_band,
7231 GLOB_fff_tobit_fb,
7232 GLOB_fff_bitop_fb,
5688 GLOB_ff_bit_bor, 7233 GLOB_ff_bit_bor,
5689 GLOB_ff_bit_bxor, 7234 GLOB_ff_bit_bxor,
5690 GLOB_ff_bit_bswap, 7235 GLOB_ff_bit_bswap,
@@ -5694,6 +7239,7 @@ enum {
5694 GLOB_ff_bit_arshift, 7239 GLOB_ff_bit_arshift,
5695 GLOB_ff_bit_rol, 7240 GLOB_ff_bit_rol,
5696 GLOB_ff_bit_ror, 7241 GLOB_ff_bit_ror,
7242 GLOB_ff_bit_tobit,
5697 GLOB_vm_record, 7243 GLOB_vm_record,
5698 GLOB_vm_rethook, 7244 GLOB_vm_rethook,
5699 GLOB_vm_inshook, 7245 GLOB_vm_inshook,
@@ -5706,10 +7252,14 @@ enum {
5706 GLOB_vm_floor, 7252 GLOB_vm_floor,
5707 GLOB_vm_ceil, 7253 GLOB_vm_ceil,
5708 GLOB_vm_trunc, 7254 GLOB_vm_trunc,
7255 GLOB_vm_modi,
5709 GLOB_vm_powi, 7256 GLOB_vm_powi,
5710 GLOB_vm_foldfpm, 7257 GLOB_vm_foldfpm,
5711 GLOB_vm_foldarith, 7258 GLOB_vm_foldarith,
5712 GLOB_vm_ffi_call, 7259 GLOB_vm_ffi_call,
7260 GLOB_BC_ISEQN_Z,
7261 GLOB_BC_ISNEN_Z,
7262 GLOB_BC_MODVNI_Z,
5713 GLOB_BC_MODVN_Z, 7263 GLOB_BC_MODVN_Z,
5714 GLOB_BC_TGETS_Z, 7264 GLOB_BC_TGETS_Z,
5715 GLOB_BC_TSETS_Z, 7265 GLOB_BC_TSETS_Z,
@@ -5755,10 +7305,14 @@ static const char *const globnames[] = {
5755 "cont_condt", 7305 "cont_condt",
5756 "cont_condf", 7306 "cont_condf",
5757 "vmeta_equal", 7307 "vmeta_equal",
5758 "vmeta_arith_vn", 7308 "vmeta_equal_cd",
5759 "vmeta_arith_nv", 7309 "vmeta_arith_nv",
7310 "vmeta_arith_nv2",
5760 "vmeta_unm", 7311 "vmeta_unm",
7312 "vmeta_arith_vn",
5761 "vmeta_arith_vv", 7313 "vmeta_arith_vv",
7314 "vmeta_arith_vn2",
7315 "vmeta_arith_vv2",
5762 "vmeta_len", 7316 "vmeta_len",
5763 "BC_LEN_Z", 7317 "BC_LEN_Z",
5764 "vmeta_callt", 7318 "vmeta_callt",
@@ -5786,6 +7340,7 @@ static const char *const globnames[] = {
5786 "ff_coroutine_wrap_aux", 7340 "ff_coroutine_wrap_aux",
5787 "ff_coroutine_yield", 7341 "ff_coroutine_yield",
5788 "ff_math_abs", 7342 "ff_math_abs",
7343 "fff_resi",
5789 "fff_res1", 7344 "fff_res1",
5790 "ff_math_floor", 7345 "ff_math_floor",
5791 "ff_math_ceil", 7346 "ff_math_ceil",
@@ -5813,7 +7368,6 @@ static const char *const globnames[] = {
5813 "ff_math_min", 7368 "ff_math_min",
5814 "ff_math_max", 7369 "ff_math_max",
5815 "ff_string_len", 7370 "ff_string_len",
5816 "fff_resi",
5817 "ff_string_byte", 7371 "ff_string_byte",
5818 "ff_string_char", 7372 "ff_string_char",
5819 "fff_newstr", 7373 "fff_newstr",
@@ -5823,8 +7377,9 @@ static const char *const globnames[] = {
5823 "ff_string_lower", 7377 "ff_string_lower",
5824 "ff_string_upper", 7378 "ff_string_upper",
5825 "ff_table_getn", 7379 "ff_table_getn",
5826 "ff_bit_tobit",
5827 "ff_bit_band", 7380 "ff_bit_band",
7381 "fff_tobit_fb",
7382 "fff_bitop_fb",
5828 "ff_bit_bor", 7383 "ff_bit_bor",
5829 "ff_bit_bxor", 7384 "ff_bit_bxor",
5830 "ff_bit_bswap", 7385 "ff_bit_bswap",
@@ -5834,6 +7389,7 @@ static const char *const globnames[] = {
5834 "ff_bit_arshift", 7389 "ff_bit_arshift",
5835 "ff_bit_rol", 7390 "ff_bit_rol",
5836 "ff_bit_ror", 7391 "ff_bit_ror",
7392 "ff_bit_tobit",
5837 "vm_record", 7393 "vm_record",
5838 "vm_rethook", 7394 "vm_rethook",
5839 "vm_inshook", 7395 "vm_inshook",
@@ -5846,10 +7402,14 @@ static const char *const globnames[] = {
5846 "vm_floor", 7402 "vm_floor",
5847 "vm_ceil", 7403 "vm_ceil",
5848 "vm_trunc", 7404 "vm_trunc",
7405 "vm_modi",
5849 "vm_powi", 7406 "vm_powi",
5850 "vm_foldfpm", 7407 "vm_foldfpm",
5851 "vm_foldarith", 7408 "vm_foldarith",
5852 "vm_ffi_call", 7409 "vm_ffi_call",
7410 "BC_ISEQN_Z",
7411 "BC_ISNEN_Z",
7412 "BC_MODVNI_Z",
5853 "BC_MODVN_Z", 7413 "BC_MODVN_Z",
5854 "BC_TGETS_Z", 7414 "BC_TGETS_Z",
5855 "BC_TSETS_Z", 7415 "BC_TSETS_Z",
@@ -5862,11 +7422,13 @@ static const char *const extnames[] = {
5862 "lj_meta_tset", 7422 "lj_meta_tset",
5863 "lj_meta_comp", 7423 "lj_meta_comp",
5864 "lj_meta_equal", 7424 "lj_meta_equal",
7425 "lj_meta_equal_cd",
5865 "lj_meta_arith", 7426 "lj_meta_arith",
5866 "lj_meta_len", 7427 "lj_meta_len",
5867 "lj_meta_call", 7428 "lj_meta_call",
5868 "lj_meta_for", 7429 "lj_meta_for",
5869 "lj_tab_get", 7430 "lj_tab_get",
7431 "lj_str_fromnumber",
5870 "lj_str_fromnum", 7432 "lj_str_fromnum",
5871 "lj_tab_next", 7433 "lj_tab_next",
5872 "lj_tab_getinth", 7434 "lj_tab_getinth",
@@ -5945,109 +7507,374 @@ static void build_subroutines(BuildCtx *ctx)
5945 dasm_put(Dst, 578, ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate), LJ_TFUNC, Dt7(->pc), 184+(14-14)*4, 40+(14-14)*8, 184+(15-14)*4, 40+(15-14)*8, 184+(16-14)*4, 40+(16-14)*8, 184+(17-14)*4, 40+(17-14)*8, 184+(18-14)*4, 40+(18-14)*8, 184+(19-14)*4, 40+(19-14)*8, 184+(20-14)*4); 7507 dasm_put(Dst, 578, ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate), LJ_TFUNC, Dt7(->pc), 184+(14-14)*4, 40+(14-14)*8, 184+(15-14)*4, 40+(15-14)*8, 184+(16-14)*4, 40+(16-14)*8, 184+(17-14)*4, 40+(17-14)*8, 184+(18-14)*4, 40+(18-14)*8, 184+(19-14)*4, 40+(19-14)*8, 184+(20-14)*4);
5946 dasm_put(Dst, 645, 40+(20-14)*8, 184+(21-14)*4, 40+(21-14)*8, 184+(22-14)*4, 40+(22-14)*8, 184+(23-14)*4, 40+(23-14)*8, 184+(24-14)*4, 40+(24-14)*8, 184+(25-14)*4, 40+(25-14)*8, 184+(26-14)*4, 40+(26-14)*8, 184+(27-14)*4, 40+(27-14)*8, 184+(28-14)*4, 40+(28-14)*8, 184+(29-14)*4, 40+(29-14)*8, 184+(30-14)*4, 40+(30-14)*8, 184+(31-14)*4); 7508 dasm_put(Dst, 645, 40+(20-14)*8, 184+(21-14)*4, 40+(21-14)*8, 184+(22-14)*4, 40+(22-14)*8, 184+(23-14)*4, 40+(23-14)*8, 184+(24-14)*4, 40+(24-14)*8, 184+(25-14)*4, 40+(25-14)*8, 184+(26-14)*4, 40+(26-14)*8, 184+(27-14)*4, 40+(27-14)*8, 184+(28-14)*4, 40+(28-14)*8, 184+(29-14)*4, 40+(29-14)*8, 184+(30-14)*4, 40+(30-14)*8, 184+(31-14)*4);
5947 dasm_put(Dst, 691, 40+(31-14)*8, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), Dt1(->glref), FRAME_CP, GG_G2DISP, Dt7(->pc), PC2PROTO(k), Dt1(->base), DISPATCH_GL(tmptv)); 7509 dasm_put(Dst, 691, 40+(31-14)*8, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), Dt1(->glref), FRAME_CP, GG_G2DISP, Dt7(->pc), PC2PROTO(k), Dt1(->base), DISPATCH_GL(tmptv));
5948 dasm_put(Dst, 765, LJ_TSTR, DISPATCH_GL(tmptv), LJ_TTAB, DISPATCH_GL(tmptv2), LJ_TSTR, DISPATCH_GL(tmptv), Dt1(->base), FRAME_CONT, Dt1(->top), DISPATCH_GL(tmptv)); 7510 dasm_put(Dst, 765, LJ_TSTR, DISPATCH_GL(tmptv), LJ_TTAB, DISPATCH_GL(tmptv2), LJ_TSTR);
5949 dasm_put(Dst, 841, LJ_TSTR, DISPATCH_GL(tmptv), LJ_TTAB, DISPATCH_GL(tmptv2), LJ_TSTR, DISPATCH_GL(tmptv), Dt1(->base), FRAME_CONT, Dt1(->top), Dt1(->base)); 7511 if (!LJ_DUALNUM) {
5950 dasm_put(Dst, 923, -(BCBIAS_J*4 >> 16), LJ_TTRUE, LJ_TTRUE, Dt1(->base)); 7512 dasm_put(Dst, 790);
5951 dasm_put(Dst, 994, Dt1(->base), FRAME_CONT); 7513 }
7514 dasm_put(Dst, 794, DISPATCH_GL(tmptv));
7515 if (LJ_DUALNUM) {
7516 dasm_put(Dst, 799);
7517 } else {
7518 dasm_put(Dst, 802);
7519 }
7520 dasm_put(Dst, 804, Dt1(->base), FRAME_CONT, Dt1(->top), DISPATCH_GL(tmptv), LJ_TSTR, DISPATCH_GL(tmptv), LJ_TTAB, DISPATCH_GL(tmptv2), LJ_TSTR);
7521 if (!LJ_DUALNUM) {
7522 dasm_put(Dst, 872);
7523 }
7524 dasm_put(Dst, 876, DISPATCH_GL(tmptv));
7525 if (LJ_DUALNUM) {
7526 dasm_put(Dst, 881);
7527 } else {
7528 dasm_put(Dst, 884);
7529 }
7530 dasm_put(Dst, 886, Dt1(->base), FRAME_CONT, Dt1(->top));
7531 if (LJ_DUALNUM) {
7532 dasm_put(Dst, 931);
7533 } else {
7534 dasm_put(Dst, 933);
7535 }
7536 dasm_put(Dst, 935);
7537 if (LJ_DUALNUM) {
7538 dasm_put(Dst, 937);
7539 } else {
7540 dasm_put(Dst, 939);
7541 }
7542 dasm_put(Dst, 941, Dt1(->base), -(BCBIAS_J*4 >> 16), LJ_TTRUE, LJ_TTRUE, Dt1(->base));
7543#if LJ_HASFFI
7544 dasm_put(Dst, 1004, Dt1(->base));
7545#endif
7546 dasm_put(Dst, 1015);
7547 if (LJ_DUALNUM) {
7548 dasm_put(Dst, 1022);
7549 }
7550 dasm_put(Dst, 1027);
7551 if (LJ_DUALNUM) {
7552 dasm_put(Dst, 1041);
7553 }
7554 dasm_put(Dst, 1044);
7555 if (LJ_DUALNUM) {
7556 dasm_put(Dst, 1047);
7557 }
7558 dasm_put(Dst, 1050, Dt1(->base), FRAME_CONT);
5952#ifdef LUAJIT_ENABLE_LUA52COMPAT 7559#ifdef LUAJIT_ENABLE_LUA52COMPAT
5953 dasm_put(Dst, 1025); 7560 dasm_put(Dst, 1074);
5954#endif 7561#endif
5955 dasm_put(Dst, 1027, Dt1(->base)); 7562 dasm_put(Dst, 1076, Dt1(->base));
5956#ifdef LUAJIT_ENABLE_LUA52COMPAT 7563#ifdef LUAJIT_ENABLE_LUA52COMPAT
5957 dasm_put(Dst, 1035); 7564 dasm_put(Dst, 1084);
5958#else 7565#else
5959 dasm_put(Dst, 1042); 7566 dasm_put(Dst, 1091);
5960#endif 7567#endif
5961 dasm_put(Dst, 1045, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base)); 7568 dasm_put(Dst, 1094, Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base));
5962#if LJ_HASJIT 7569#if LJ_HASJIT
5963 dasm_put(Dst, 1093); 7570 dasm_put(Dst, 1142);
5964#endif 7571#endif
5965 dasm_put(Dst, 1095); 7572 dasm_put(Dst, 1144);
5966#if LJ_HASJIT 7573#if LJ_HASJIT
5967 dasm_put(Dst, 1097, BC_JFORI); 7574 dasm_put(Dst, 1146, BC_JFORI);
5968#endif 7575#endif
5969 dasm_put(Dst, 1100); 7576 dasm_put(Dst, 1149);
5970#if LJ_HASJIT 7577#if LJ_HASJIT
5971 dasm_put(Dst, 1102, BC_JFORI); 7578 dasm_put(Dst, 1151, BC_JFORI);
5972#endif 7579#endif
5973 dasm_put(Dst, 1105, BC_FORI, LJ_TFALSE, ~LJ_TISNUM+1, 31-3, Dt8(->upvalue), LJ_TTAB, Dt6(->metatable)); 7580 dasm_put(Dst, 1154, BC_FORI, LJ_TFALSE, ~LJ_TISNUM+1, 31-3, Dt8(->upvalue), LJ_TTAB, Dt6(->metatable));
5974 dasm_put(Dst, 1168, LJ_TNIL, DISPATCH_GL(gcroot[GCROOT_MMNAME+MM_metatable]), Dt6(->hmask), LJ_TTAB, Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, DtB(->next)); 7581 dasm_put(Dst, 1217, LJ_TNIL, DISPATCH_GL(gcroot[GCROOT_MMNAME+MM_metatable]), Dt6(->hmask), LJ_TTAB, Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, DtB(->next));
5975 dasm_put(Dst, 1216, LJ_TNIL, LJ_TUDATA, ~LJ_TISNUM+1, 31-2, DISPATCH_GL(gcroot[GCROOT_BASEMT]), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 7582 dasm_put(Dst, 1265, LJ_TNIL, LJ_TUDATA, ~LJ_TISNUM+1, 31-2, DISPATCH_GL(gcroot[GCROOT_BASEMT]), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
5976 dasm_put(Dst, 1271, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist), LJ_TTAB, LJ_TSTR, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), Dt1(->base)); 7583 dasm_put(Dst, 1320, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist), LJ_TTAB, LJ_TSTR, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), Dt1(->base));
5977 dasm_put(Dst, 1331, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, LJ_TTAB, Dt1(->base), Dt1(->top), LJ_TNIL, (2+1)*8, LJ_TTAB); 7584 dasm_put(Dst, 1380, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
7585 if (LJ_DUALNUM) {
7586 dasm_put(Dst, 1390);
7587 } else {
7588 dasm_put(Dst, 1393);
7589 }
7590 dasm_put(Dst, 1396, LJ_TSTR, LJ_TTAB, Dt1(->base), Dt1(->top), LJ_TNIL, (2+1)*8, LJ_TTAB);
5978#ifdef LUAJIT_ENABLE_LUA52COMPAT 7591#ifdef LUAJIT_ENABLE_LUA52COMPAT
5979 dasm_put(Dst, 1393, Dt6(->metatable), Dt8(->upvalue[0])); 7592 dasm_put(Dst, 1447, Dt6(->metatable), Dt8(->upvalue[0]));
5980#else 7593#else
5981 dasm_put(Dst, 1402, Dt8(->upvalue[0])); 7594 dasm_put(Dst, 1456, Dt8(->upvalue[0]));
5982#endif 7595#endif
5983 dasm_put(Dst, 1406, (3+1)*8, LJ_TTAB, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL, (0+1)*8, (2+1)*8, Dt6(->hmask), (0+1)*8); 7596 dasm_put(Dst, 1460, (3+1)*8);
5984 dasm_put(Dst, 1474, (0+1)*8, LJ_TTAB); 7597 if (LJ_DUALNUM) {
7598 dasm_put(Dst, 1472);
7599 } else {
7600 dasm_put(Dst, 1474);
7601 }
7602 dasm_put(Dst, 1476, LJ_TTAB);
7603 if (LJ_DUALNUM) {
7604 dasm_put(Dst, 1483);
7605 } else {
7606 dasm_put(Dst, 1488);
7607 }
7608 dasm_put(Dst, 1500, Dt6(->asize), Dt6(->array));
7609 if (!LJ_DUALNUM) {
7610 dasm_put(Dst, 1505);
7611 }
7612 dasm_put(Dst, 1507);
7613 if (LJ_DUALNUM) {
7614 dasm_put(Dst, 1511, 31-3);
7615 } else {
7616 dasm_put(Dst, 1516, 31-3);
7617 }
7618 dasm_put(Dst, 1520, LJ_TNIL, (0+1)*8, (2+1)*8, Dt6(->hmask), (0+1)*8, (0+1)*8, LJ_TTAB);
5985#ifdef LUAJIT_ENABLE_LUA52COMPAT 7619#ifdef LUAJIT_ENABLE_LUA52COMPAT
5986 dasm_put(Dst, 1495, Dt6(->metatable), Dt8(->upvalue[0])); 7620 dasm_put(Dst, 1568, Dt6(->metatable), Dt8(->upvalue[0]));
5987#else 7621#else
5988 dasm_put(Dst, 1504, Dt8(->upvalue[0])); 7622 dasm_put(Dst, 1577, Dt8(->upvalue[0]));
5989#endif 7623#endif
5990 dasm_put(Dst, 1508, (3+1)*8, DISPATCH_GL(hookmask), 32-HOOK_ACTIVE_SHIFT, 8+FRAME_PCALL, DISPATCH_GL(hookmask), LJ_TFUNC, 32-HOOK_ACTIVE_SHIFT, 16+FRAME_PCALL, LJ_TTHREAD, Dt1(->status), Dt1(->cframe)); 7624 if (LJ_DUALNUM) {
5991 dasm_put(Dst, 1570, Dt1(->top), LUA_YIELD, Dt1(->base), Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->base), LUA_YIELD, Dt1(->top), ~LJ_VMST_INTERP, Dt1(->base), DISPATCH_GL(vmstate)); 7625 dasm_put(Dst, 1581);
5992 dasm_put(Dst, 1632, Dt1(->maxstack), Dt1(->top), FRAME_TYPE, LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), (2+1)*8, 32-3); 7626 } else {
5993 dasm_put(Dst, 1695, Dt8(->upvalue[0].gcr), Dt1(->status), Dt1(->cframe), Dt1(->top), LUA_YIELD, Dt1(->base), Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->base), LUA_YIELD, Dt1(->top), ~LJ_VMST_INTERP); 7627 dasm_put(Dst, 1583);
5994 dasm_put(Dst, 1754, Dt1(->base), DISPATCH_GL(vmstate), Dt1(->maxstack), Dt1(->top), FRAME_TYPE, 32-3, Dt1(->cframe)); 7628 }
5995 dasm_put(Dst, 1811, Dt1(->base), CFRAME_RESUME, Dt1(->top), LUA_YIELD, Dt1(->cframe), Dt1(->status), (1+1)*8, FRAME_TYPE); 7629 dasm_put(Dst, 1585, (3+1)*8, DISPATCH_GL(hookmask), 32-HOOK_ACTIVE_SHIFT, 8+FRAME_PCALL, DISPATCH_GL(hookmask), LJ_TFUNC, 32-HOOK_ACTIVE_SHIFT, 16+FRAME_PCALL, LJ_TTHREAD, Dt1(->status), Dt1(->cframe));
5996 dasm_put(Dst, 1878); 7630 dasm_put(Dst, 1646, Dt1(->top), LUA_YIELD, Dt1(->base), Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->base), LUA_YIELD, Dt1(->top), ~LJ_VMST_INTERP, Dt1(->base), DISPATCH_GL(vmstate));
5997 dasm_put(Dst, 1939); 7631 dasm_put(Dst, 1708, Dt1(->maxstack), Dt1(->top), FRAME_TYPE, LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), (2+1)*8, 32-3);
5998 dasm_put(Dst, 1997); 7632 dasm_put(Dst, 1771, Dt8(->upvalue[0].gcr), Dt1(->status), Dt1(->cframe), Dt1(->top), LUA_YIELD, Dt1(->base), Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->base), LUA_YIELD, Dt1(->top), ~LJ_VMST_INTERP);
5999 dasm_put(Dst, 2058); 7633 dasm_put(Dst, 1830, Dt1(->base), DISPATCH_GL(vmstate), Dt1(->maxstack), Dt1(->top), FRAME_TYPE, 32-3, Dt1(->cframe));
6000 dasm_put(Dst, 2123, Dt8(->upvalue[0]), DISPATCH_GL(tmptv), DISPATCH_GL(tmptv), (2+1)*8); 7634 dasm_put(Dst, 1887, Dt1(->base), CFRAME_RESUME, Dt1(->top), LUA_YIELD, Dt1(->cframe), Dt1(->status));
6001 dasm_put(Dst, 2191, (2+1)*8); 7635 if (LJ_DUALNUM) {
6002 dasm_put(Dst, 2263, LJ_TSTR, Dt5(->len), LJ_TSTR, Dt5(->len), Dt5([1]), 31-3, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); 7636 dasm_put(Dst, 1912);
6003 dasm_put(Dst, 2332, Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), sizeof(GCstr)-1); 7637 }
6004 dasm_put(Dst, 2401, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf)); 7638 dasm_put(Dst, 1933, (1+1)*8, FRAME_TYPE);
6005 dasm_put(Dst, 2471, DISPATCH_GL(strempty), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); 7639 if (LJ_DUALNUM) {
6006 dasm_put(Dst, 2526, LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); 7640 dasm_put(Dst, 1975, 31-11, 32-21, 31-11);
6007 dasm_put(Dst, 2588, LJ_TTAB); 7641 dasm_put(Dst, 2056, 31-11, 32-21, 31-11);
6008 dasm_put(Dst, 2668); 7642 } else {
6009 dasm_put(Dst, 2760); 7643 dasm_put(Dst, 2109);
6010 dasm_put(Dst, 2863, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc), FRAME_TYPE); 7644 }
6011 dasm_put(Dst, 2941, LUA_MINSTACK, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 7645 dasm_put(Dst, 2136);
7646 dasm_put(Dst, 2195);
7647 dasm_put(Dst, 2253);
7648 dasm_put(Dst, 2309, Dt8(->upvalue[0]));
7649 dasm_put(Dst, 2375);
7650 if (LJ_DUALNUM) {
7651 dasm_put(Dst, 2379);
7652 } else {
7653 dasm_put(Dst, 2394);
7654 }
7655 dasm_put(Dst, 2412, DISPATCH_GL(tmptv), DISPATCH_GL(tmptv));
7656 if (!LJ_DUALNUM) {
7657 dasm_put(Dst, 2434);
7658 }
7659 dasm_put(Dst, 2439, (2+1)*8);
7660 if (LJ_DUALNUM) {
7661 dasm_put(Dst, 2443);
7662 } else {
7663 dasm_put(Dst, 2446);
7664 }
7665 dasm_put(Dst, 2448, (2+1)*8);
7666 if (LJ_DUALNUM) {
7667 dasm_put(Dst, 2470);
7668 } else {
7669 dasm_put(Dst, 2539);
7670 }
7671 if (LJ_DUALNUM) {
7672 dasm_put(Dst, 2564);
7673 } else {
7674 dasm_put(Dst, 2633);
7675 }
7676 dasm_put(Dst, 2658, LJ_TSTR, Dt5(->len), LJ_TSTR, Dt5(->len));
7677 if (LJ_DUALNUM) {
7678 dasm_put(Dst, 2685, Dt5([1]), (0+1)*8);
7679 } else {
7680 dasm_put(Dst, 2697, Dt5([1]), 31-3);
7681 }
7682 dasm_put(Dst, 2713, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
7683 if (LJ_DUALNUM) {
7684 dasm_put(Dst, 2724);
7685 } else {
7686 dasm_put(Dst, 2732);
7687 }
7688 dasm_put(Dst, 2743, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
7689 if (!LJ_DUALNUM) {
7690 dasm_put(Dst, 2771);
7691 }
7692 dasm_put(Dst, 2773);
7693 if (LJ_DUALNUM) {
7694 dasm_put(Dst, 2779);
7695 } else {
7696 dasm_put(Dst, 2781);
7697 }
7698 dasm_put(Dst, 2783);
7699 if (LJ_DUALNUM) {
7700 dasm_put(Dst, 2787);
7701 } else {
7702 dasm_put(Dst, 2796);
7703 }
7704 dasm_put(Dst, 2807, LJ_TSTR);
7705 if (!LJ_DUALNUM) {
7706 dasm_put(Dst, 2812);
7707 }
7708 dasm_put(Dst, 2816, Dt5(->len), sizeof(GCstr)-1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
7709 if (LJ_DUALNUM) {
7710 dasm_put(Dst, 2866);
7711 } else {
7712 dasm_put(Dst, 2868);
7713 }
7714 dasm_put(Dst, 2870, LJ_TSTR);
7715 if (LJ_DUALNUM) {
7716 dasm_put(Dst, 2877);
7717 } else {
7718 dasm_put(Dst, 2881);
7719 }
7720 dasm_put(Dst, 2888, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(strempty), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz));
7721 dasm_put(Dst, 2941, Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
7722 dasm_put(Dst, 2999, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, DISPATCH_GL(tmpbuf.sz), Dt5(->len), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), LJ_TTAB);
7723 if (LJ_DUALNUM) {
7724 dasm_put(Dst, 3068);
7725 } else {
7726 dasm_put(Dst, 3078);
7727 }
7728 dasm_put(Dst, 3091);
7729 if (LJ_DUALNUM) {
7730 dasm_put(Dst, 3097);
7731 } else {
7732 dasm_put(Dst, 3099);
7733 }
7734 dasm_put(Dst, 3101);
7735 if (LJ_DUALNUM) {
7736 dasm_put(Dst, 3105);
7737 } else {
7738 dasm_put(Dst, 3108);
7739 }
7740 dasm_put(Dst, 3114);
7741 if (LJ_DUALNUM) {
7742 dasm_put(Dst, 3119);
7743 } else {
7744 dasm_put(Dst, 3129);
7745 }
7746 dasm_put(Dst, 3142);
7747 if (LJ_DUALNUM) {
7748 dasm_put(Dst, 3148);
7749 } else {
7750 dasm_put(Dst, 3150);
7751 }
7752 dasm_put(Dst, 3152);
7753 if (LJ_DUALNUM) {
7754 dasm_put(Dst, 3156);
7755 } else {
7756 dasm_put(Dst, 3159);
7757 }
7758 dasm_put(Dst, 3165);
7759 if (LJ_DUALNUM) {
7760 dasm_put(Dst, 3170);
7761 } else {
7762 dasm_put(Dst, 3180);
7763 }
7764 dasm_put(Dst, 3193);
7765 if (LJ_DUALNUM) {
7766 dasm_put(Dst, 3199);
7767 } else {
7768 dasm_put(Dst, 3201);
7769 }
7770 dasm_put(Dst, 3203);
7771 if (LJ_DUALNUM) {
7772 dasm_put(Dst, 3207);
7773 } else {
7774 dasm_put(Dst, 3210);
7775 }
7776 dasm_put(Dst, 3216);
7777 if (LJ_DUALNUM) {
7778 dasm_put(Dst, 3221);
7779 } else {
7780 dasm_put(Dst, 3231);
7781 }
7782 dasm_put(Dst, 3244);
7783 if (LJ_DUALNUM) {
7784 dasm_put(Dst, 3251);
7785 } else {
7786 dasm_put(Dst, 3261);
7787 }
7788 dasm_put(Dst, 3274);
7789 if (LJ_DUALNUM) {
7790 dasm_put(Dst, 3278);
7791 } else {
7792 dasm_put(Dst, 3293);
7793 }
7794 dasm_put(Dst, 3314);
7795 if (LJ_DUALNUM) {
7796 dasm_put(Dst, 3319);
7797 } else {
7798 dasm_put(Dst, 3334);
7799 }
7800 dasm_put(Dst, 3355);
7801 if (LJ_DUALNUM) {
7802 dasm_put(Dst, 3360);
7803 } else {
7804 dasm_put(Dst, 3375);
7805 }
7806 dasm_put(Dst, 3396);
7807 if (LJ_DUALNUM) {
7808 dasm_put(Dst, 3401);
7809 } else {
7810 dasm_put(Dst, 3416);
7811 }
7812 dasm_put(Dst, 3437);
7813 if (LJ_DUALNUM) {
7814 dasm_put(Dst, 3441);
7815 } else {
7816 dasm_put(Dst, 3456);
7817 }
7818 dasm_put(Dst, 3477);
7819 if (LJ_DUALNUM) {
7820 dasm_put(Dst, 3482);
7821 } else {
7822 dasm_put(Dst, 3492);
7823 }
7824 if (LJ_DUALNUM) {
7825 dasm_put(Dst, 3505);
7826 } else {
7827 dasm_put(Dst, 3508);
7828 }
7829 dasm_put(Dst, 3514);
7830 if (LJ_DUALNUM) {
7831 dasm_put(Dst, 3522);
7832 }
7833 dasm_put(Dst, 3530);
7834 if (LJ_DUALNUM) {
7835 dasm_put(Dst, 3532);
7836 }
7837 dasm_put(Dst, 3540, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK);
7838 dasm_put(Dst, 3603, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
6012#if LJ_HASJIT 7839#if LJ_HASJIT
6013 dasm_put(Dst, 2975); 7840 dasm_put(Dst, 3629);
6014#endif 7841#endif
6015 dasm_put(Dst, 2977, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base)); 7842 dasm_put(Dst, 3631, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base));
6016 dasm_put(Dst, 3024, GG_DISP2STATIC); 7843 dasm_put(Dst, 3678, GG_DISP2STATIC);
6017#if LJ_HASJIT 7844#if LJ_HASJIT
6018 dasm_put(Dst, 3042); 7845 dasm_put(Dst, 3696);
6019#endif 7846#endif
6020 dasm_put(Dst, 3044); 7847 dasm_put(Dst, 3698);
6021#if LJ_HASJIT 7848#if LJ_HASJIT
6022 dasm_put(Dst, 3047); 7849 dasm_put(Dst, 3701);
6023#endif 7850#endif
6024 dasm_put(Dst, 3050); 7851 dasm_put(Dst, 3704);
6025#if LJ_HASJIT 7852#if LJ_HASJIT
6026 dasm_put(Dst, 3052); 7853 dasm_put(Dst, 3706);
6027#endif 7854#endif
6028 dasm_put(Dst, 3055, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 7855 dasm_put(Dst, 3709, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
6029#if LJ_HASJIT 7856#if LJ_HASJIT
6030 dasm_put(Dst, 3077); 7857 dasm_put(Dst, 3731);
6031#endif 7858#endif
6032 dasm_put(Dst, 3079); 7859 dasm_put(Dst, 3733);
6033#if LJ_HASJIT 7860#if LJ_HASJIT
6034 dasm_put(Dst, 3081); 7861 dasm_put(Dst, 3735);
6035#endif 7862#endif
6036 dasm_put(Dst, 3083); 7863 dasm_put(Dst, 3737);
6037#if LJ_HASJIT 7864#if LJ_HASJIT
6038 dasm_put(Dst, 3091); 7865 dasm_put(Dst, 3745);
6039#endif 7866#endif
6040 dasm_put(Dst, 3094); 7867 dasm_put(Dst, 3748);
6041#if LJ_HASJIT 7868#if LJ_HASJIT
6042 dasm_put(Dst, 3096); 7869 dasm_put(Dst, 3761);
6043#endif 7870#endif
6044 dasm_put(Dst, 3098); 7871 dasm_put(Dst, 3763);
6045#if LJ_HASJIT 7872#if LJ_HASJIT
6046 dasm_put(Dst, 3100); 7873 dasm_put(Dst, 3765);
6047#endif 7874#endif
6048 dasm_put(Dst, 3102); 7875 dasm_put(Dst, 3767);
6049#if LJ_HASFFI 7876#if LJ_HASFFI
6050 dasm_put(Dst, 3166); 7877 dasm_put(Dst, 3831);
6051#endif 7878#endif
6052} 7879}
6053 7880
@@ -6055,7 +7882,7 @@ static void build_subroutines(BuildCtx *ctx)
6055static void build_ins(BuildCtx *ctx, BCOp op, int defop) 7882static void build_ins(BuildCtx *ctx, BCOp op, int defop)
6056{ 7883{
6057 int vk = 0; 7884 int vk = 0;
6058 dasm_put(Dst, 3168, defop); 7885 dasm_put(Dst, 3833, defop);
6059 7886
6060 switch (op) { 7887 switch (op) {
6061 7888
@@ -6064,115 +7891,198 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
6064 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 7891 /* Remember: all ops branch for a true comparison, fall through otherwise. */
6065 7892
6066 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 7893 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
6067 dasm_put(Dst, 3170, -(BCBIAS_J*4 >> 16)); 7894 if (LJ_DUALNUM) {
6068 if (op == BC_ISLT) { 7895 dasm_put(Dst, 3835, -(BCBIAS_J*4 >> 16));
6069 dasm_put(Dst, 3187); 7896 if (op == BC_ISLT) {
6070 } else if (op == BC_ISGE) { 7897 dasm_put(Dst, 3852);
6071 dasm_put(Dst, 3190); 7898 } else if (op == BC_ISGE) {
6072 } else if (op == BC_ISLE) { 7899 dasm_put(Dst, 3855);
6073 dasm_put(Dst, 3193); 7900 } else if (op == BC_ISLE) {
7901 dasm_put(Dst, 3858);
7902 } else {
7903 dasm_put(Dst, 3861);
7904 }
7905 dasm_put(Dst, 3864);
7906 if (op == BC_ISLT) {
7907 dasm_put(Dst, 3901);
7908 } else if (op == BC_ISGE) {
7909 dasm_put(Dst, 3904);
7910 } else if (op == BC_ISLE) {
7911 dasm_put(Dst, 3907);
7912 } else {
7913 dasm_put(Dst, 3911);
7914 }
7915 dasm_put(Dst, 3915);
6074 } else { 7916 } else {
6075 dasm_put(Dst, 3197); 7917 dasm_put(Dst, 3918, -(BCBIAS_J*4 >> 16));
7918 if (op == BC_ISLT) {
7919 dasm_put(Dst, 3935);
7920 } else if (op == BC_ISGE) {
7921 dasm_put(Dst, 3938);
7922 } else if (op == BC_ISLE) {
7923 dasm_put(Dst, 3941);
7924 } else {
7925 dasm_put(Dst, 3945);
7926 }
7927 dasm_put(Dst, 3949);
6076 } 7928 }
6077 dasm_put(Dst, 3201);
6078 break; 7929 break;
6079 7930
6080 case BC_ISEQV: case BC_ISNEV: 7931 case BC_ISEQV: case BC_ISNEV:
6081 vk = op == BC_ISEQV; 7932 vk = op == BC_ISEQV;
6082 dasm_put(Dst, 3214, -(BCBIAS_J*4 >> 16)); 7933 if (LJ_DUALNUM) {
6083 if (vk) { 7934 dasm_put(Dst, 3962, -(BCBIAS_J*4 >> 16));
6084 dasm_put(Dst, 3231); 7935 if (vk) {
7936 dasm_put(Dst, 3975);
7937 } else {
7938 dasm_put(Dst, 3978);
7939 }
6085 } else { 7940 } else {
6086 dasm_put(Dst, 3235); 7941 dasm_put(Dst, 3981, -(BCBIAS_J*4 >> 16));
7942 if (vk) {
7943 dasm_put(Dst, 3998);
7944 } else {
7945 dasm_put(Dst, 4002);
7946 }
7947 dasm_put(Dst, 4006);
7948 }
7949 dasm_put(Dst, 4018);
7950 if (!LJ_DUALNUM) {
7951 dasm_put(Dst, 4020);
6087 } 7952 }
6088 dasm_put(Dst, 3239, ~LJ_TISPRI, ~LJ_TISTABUD); 7953 dasm_put(Dst, 4023, ~LJ_TISPRI, ~LJ_TISTABUD);
6089 if (vk) { 7954 if (vk) {
6090 dasm_put(Dst, 3267); 7955 dasm_put(Dst, 4037);
6091 } else { 7956 } else {
6092 dasm_put(Dst, 3272); 7957 dasm_put(Dst, 4042);
6093 } 7958 }
6094 dasm_put(Dst, 3277, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq); 7959 if (LJ_DUALNUM) {
7960 dasm_put(Dst, 4047);
7961 } else {
7962 dasm_put(Dst, 4062);
7963 }
7964 dasm_put(Dst, 4065, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq);
6095 break; 7965 break;
6096 7966
6097 case BC_ISEQS: case BC_ISNES: 7967 case BC_ISEQS: case BC_ISNES:
6098 vk = op == BC_ISEQS; 7968 vk = op == BC_ISEQS;
6099 dasm_put(Dst, 3298, 32-1, LJ_TSTR, -(BCBIAS_J*4 >> 16)); 7969 dasm_put(Dst, 4084, 32-1, LJ_TSTR, -(BCBIAS_J*4 >> 16));
6100 if (vk) { 7970 if (vk) {
6101 dasm_put(Dst, 3316); 7971 dasm_put(Dst, 4102);
6102 } else { 7972 } else {
6103 dasm_put(Dst, 3318); 7973 dasm_put(Dst, 4104);
6104 } 7974 }
6105 dasm_put(Dst, 3320); 7975 dasm_put(Dst, 4106);
6106 break; 7976 break;
6107 7977
6108 case BC_ISEQN: case BC_ISNEN: 7978 case BC_ISEQN: case BC_ISNEN:
6109 vk = op == BC_ISEQN; 7979 vk = op == BC_ISEQN;
6110 dasm_put(Dst, 3332, -(BCBIAS_J*4 >> 16)); 7980 if (LJ_DUALNUM) {
7981 dasm_put(Dst, 4118, -(BCBIAS_J*4 >> 16));
7982 if (vk) {
7983 dasm_put(Dst, 4130);
7984 } else {
7985 dasm_put(Dst, 4132);
7986 }
7987 dasm_put(Dst, 4134);
7988 } else {
7989 if (vk) {
7990 dasm_put(Dst, 4141);
7991 } else {
7992 dasm_put(Dst, 4143);
7993 }
7994 dasm_put(Dst, 4145, -(BCBIAS_J*4 >> 16));
7995 }
6111 if (vk) { 7996 if (vk) {
6112 dasm_put(Dst, 3345); 7997 dasm_put(Dst, 4158);
7998 if (!LJ_HASFFI) {
7999 dasm_put(Dst, 4163);
8000 }
6113 } else { 8001 } else {
6114 dasm_put(Dst, 3350); 8002 dasm_put(Dst, 4165);
8003 if (!LJ_HASFFI) {
8004 dasm_put(Dst, 4169);
8005 }
8006 dasm_put(Dst, 4171);
6115 } 8007 }
6116 dasm_put(Dst, 3356); 8008 dasm_put(Dst, 4174);
6117 if (!vk) { 8009 if (LJ_HASFFI) {
6118 dasm_put(Dst, 3367, -(BCBIAS_J*4 >> 16)); 8010 dasm_put(Dst, 4185, LJ_TCDATA);
8011 }
8012 if (LJ_DUALNUM) {
8013 dasm_put(Dst, 4193);
6119 } 8014 }
6120 break; 8015 break;
6121 8016
6122 case BC_ISEQP: case BC_ISNEP: 8017 case BC_ISEQP: case BC_ISNEP:
6123 vk = op == BC_ISEQP; 8018 vk = op == BC_ISEQP;
6124 dasm_put(Dst, 3374, 32-3, -(BCBIAS_J*4 >> 16)); 8019 dasm_put(Dst, 4217, 32-3, -(BCBIAS_J*4 >> 16));
6125 if (vk) { 8020 if (vk) {
6126 dasm_put(Dst, 3387); 8021 dasm_put(Dst, 4230);
6127 } else { 8022 } else {
6128 dasm_put(Dst, 3389); 8023 dasm_put(Dst, 4232);
6129 } 8024 }
6130 dasm_put(Dst, 3391); 8025 dasm_put(Dst, 4234);
6131 break; 8026 break;
6132 8027
6133 /* -- Unary test and copy ops ------------------------------------------- */ 8028 /* -- Unary test and copy ops ------------------------------------------- */
6134 8029
6135 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 8030 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
6136 dasm_put(Dst, 3403); 8031 dasm_put(Dst, 4246);
6137 if (op == BC_IST || op == BC_ISF) { 8032 if (op == BC_IST || op == BC_ISF) {
6138 dasm_put(Dst, 3407, LJ_TTRUE, -(BCBIAS_J*4 >> 16)); 8033 dasm_put(Dst, 4250, LJ_TTRUE, -(BCBIAS_J*4 >> 16));
6139 if (op == BC_IST) { 8034 if (op == BC_IST) {
6140 dasm_put(Dst, 3414); 8035 dasm_put(Dst, 4257);
6141 } else { 8036 } else {
6142 dasm_put(Dst, 3416); 8037 dasm_put(Dst, 4259);
6143 } 8038 }
6144 dasm_put(Dst, 3418); 8039 dasm_put(Dst, 4261);
6145 } else { 8040 } else {
6146 dasm_put(Dst, 3420, LJ_TFALSE); 8041 dasm_put(Dst, 4263, LJ_TFALSE);
6147 if (op == BC_ISTC) { 8042 if (op == BC_ISTC) {
6148 dasm_put(Dst, 3425); 8043 dasm_put(Dst, 4268);
6149 } else { 8044 } else {
6150 dasm_put(Dst, 3428); 8045 dasm_put(Dst, 4271);
6151 } 8046 }
6152 dasm_put(Dst, 3431, -(BCBIAS_J*4 >> 16)); 8047 dasm_put(Dst, 4274, -(BCBIAS_J*4 >> 16));
6153 } 8048 }
6154 dasm_put(Dst, 3438); 8049 dasm_put(Dst, 4281);
6155 break; 8050 break;
6156 8051
6157 /* -- Unary ops --------------------------------------------------------- */ 8052 /* -- Unary ops --------------------------------------------------------- */
6158 8053
6159 case BC_MOV: 8054 case BC_MOV:
6160 dasm_put(Dst, 3449); 8055 dasm_put(Dst, 4292);
6161 break; 8056 break;
6162 case BC_NOT: 8057 case BC_NOT:
6163 dasm_put(Dst, 3462, LJ_TTRUE); 8058 dasm_put(Dst, 4305, LJ_TTRUE);
6164 break; 8059 break;
6165 case BC_UNM: 8060 case BC_UNM:
6166 dasm_put(Dst, 3478); 8061 dasm_put(Dst, 4321);
8062 if (LJ_DUALNUM) {
8063 dasm_put(Dst, 4325);
8064 }
8065 dasm_put(Dst, 4353);
8066 if (LJ_DUALNUM) {
8067 dasm_put(Dst, 4363);
8068 } else {
8069 dasm_put(Dst, 4366);
8070 }
6167 break; 8071 break;
6168 case BC_LEN: 8072 case BC_LEN:
6169 dasm_put(Dst, 3497, LJ_TSTR, Dt5(->len), LJ_TTAB); 8073 dasm_put(Dst, 4375, LJ_TSTR, Dt5(->len));
8074 if (LJ_DUALNUM) {
8075 dasm_put(Dst, 4385);
8076 } else {
8077 dasm_put(Dst, 4390);
8078 }
8079 dasm_put(Dst, 4397, LJ_TTAB);
6170#ifdef LUAJIT_ENABLE_LUA52COMPAT 8080#ifdef LUAJIT_ENABLE_LUA52COMPAT
6171 dasm_put(Dst, 3526, Dt6(->metatable)); 8081 dasm_put(Dst, 4411, Dt6(->metatable));
6172#endif 8082#endif
6173 dasm_put(Dst, 3533); 8083 dasm_put(Dst, 4418);
6174#ifdef LUAJIT_ENABLE_LUA52COMPAT 8084#ifdef LUAJIT_ENABLE_LUA52COMPAT
6175 dasm_put(Dst, 3539, Dt6(->nomm), 1<<MM_len); 8085 dasm_put(Dst, 4424, Dt6(->nomm), 1<<MM_len);
6176#endif 8086#endif
6177 break; 8087 break;
6178 8088
@@ -6180,270 +8090,641 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
6180 8090
6181 8091
6182 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 8092 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
8093 if (LJ_DUALNUM) {
6183 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8094 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
6184 switch (vk) { 8095 switch (vk) {
6185 case 0: 8096 case 0:
6186 dasm_put(Dst, 3549); 8097 dasm_put(Dst, 4434);
8098 break;
8099 case 1:
8100 dasm_put(Dst, 4440);
8101 break;
8102 default:
8103 dasm_put(Dst, 4446);
8104 break;
8105 }
8106 dasm_put(Dst, 4452);
8107 switch (vk) {
8108 case 0:
8109 dasm_put(Dst, 4478);
6187 break; 8110 break;
6188 case 1: 8111 case 1:
6189 dasm_put(Dst, 3556); 8112 dasm_put(Dst, 4481);
6190 break; 8113 break;
6191 default: 8114 default:
6192 dasm_put(Dst, 3563); 8115 dasm_put(Dst, 4484);
6193 break; 8116 break;
6194 } 8117 }
6195 dasm_put(Dst, 3573); 8118 dasm_put(Dst, 4487);
8119 if (vk == 1) {
8120 dasm_put(Dst, 4489);
8121 } else {
8122 dasm_put(Dst, 4493);
8123 }
8124 switch (vk) {
8125 case 0:
8126 dasm_put(Dst, 4497);
8127 break;
8128 case 1:
8129 dasm_put(Dst, 4500);
8130 break;
8131 default:
8132 dasm_put(Dst, 4503);
8133 break;
8134 }
8135 dasm_put(Dst, 4506);
8136 } else {
8137 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8138 switch (vk) {
8139 case 0:
8140 dasm_put(Dst, 4513);
8141 if (LJ_DUALNUM) {
8142 dasm_put(Dst, 4515);
8143 }
8144 dasm_put(Dst, 4517);
8145 if (LJ_DUALNUM) {
8146 dasm_put(Dst, 4520);
8147 } else {
8148 dasm_put(Dst, 4526);
8149 }
8150 break;
8151 case 1:
8152 dasm_put(Dst, 4530);
8153 if (LJ_DUALNUM) {
8154 dasm_put(Dst, 4532);
8155 }
8156 dasm_put(Dst, 4534);
8157 if (LJ_DUALNUM) {
8158 dasm_put(Dst, 4537);
8159 } else {
8160 dasm_put(Dst, 4543);
8161 }
8162 break;
8163 default:
8164 dasm_put(Dst, 4547);
8165 break;
8166 }
8167 dasm_put(Dst, 4557);
8168 }
6196 break; 8169 break;
6197 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 8170 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
8171 if (LJ_DUALNUM) {
6198 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8172 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
6199 switch (vk) { 8173 switch (vk) {
6200 case 0: 8174 case 0:
6201 dasm_put(Dst, 3586); 8175 dasm_put(Dst, 4570);
8176 break;
8177 case 1:
8178 dasm_put(Dst, 4576);
8179 break;
8180 default:
8181 dasm_put(Dst, 4582);
8182 break;
8183 }
8184 dasm_put(Dst, 4588);
8185 switch (vk) {
8186 case 0:
8187 dasm_put(Dst, 4614);
6202 break; 8188 break;
6203 case 1: 8189 case 1:
6204 dasm_put(Dst, 3593); 8190 dasm_put(Dst, 4617);
6205 break; 8191 break;
6206 default: 8192 default:
6207 dasm_put(Dst, 3600); 8193 dasm_put(Dst, 4620);
6208 break; 8194 break;
6209 } 8195 }
6210 dasm_put(Dst, 3610); 8196 dasm_put(Dst, 4623);
8197 if (vk == 1) {
8198 dasm_put(Dst, 4625);
8199 } else {
8200 dasm_put(Dst, 4629);
8201 }
8202 switch (vk) {
8203 case 0:
8204 dasm_put(Dst, 4633);
8205 break;
8206 case 1:
8207 dasm_put(Dst, 4636);
8208 break;
8209 default:
8210 dasm_put(Dst, 4639);
8211 break;
8212 }
8213 dasm_put(Dst, 4642);
8214 } else {
8215 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8216 switch (vk) {
8217 case 0:
8218 dasm_put(Dst, 4649);
8219 if (LJ_DUALNUM) {
8220 dasm_put(Dst, 4651);
8221 }
8222 dasm_put(Dst, 4653);
8223 if (LJ_DUALNUM) {
8224 dasm_put(Dst, 4656);
8225 } else {
8226 dasm_put(Dst, 4662);
8227 }
8228 break;
8229 case 1:
8230 dasm_put(Dst, 4666);
8231 if (LJ_DUALNUM) {
8232 dasm_put(Dst, 4668);
8233 }
8234 dasm_put(Dst, 4670);
8235 if (LJ_DUALNUM) {
8236 dasm_put(Dst, 4673);
8237 } else {
8238 dasm_put(Dst, 4679);
8239 }
8240 break;
8241 default:
8242 dasm_put(Dst, 4683);
8243 break;
8244 }
8245 dasm_put(Dst, 4693);
8246 }
6211 break; 8247 break;
6212 case BC_MULVN: case BC_MULNV: case BC_MULVV: 8248 case BC_MULVN: case BC_MULNV: case BC_MULVV:
8249 if (LJ_DUALNUM) {
8250 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8251 switch (vk) {
8252 case 0:
8253 dasm_put(Dst, 4706);
8254 break;
8255 case 1:
8256 dasm_put(Dst, 4712);
8257 break;
8258 default:
8259 dasm_put(Dst, 4718);
8260 break;
8261 }
8262 dasm_put(Dst, 4724);
8263 switch (vk) {
8264 case 0:
8265 dasm_put(Dst, 4750);
8266 break;
8267 case 1:
8268 dasm_put(Dst, 4753);
8269 break;
8270 default:
8271 dasm_put(Dst, 4756);
8272 break;
8273 }
8274 dasm_put(Dst, 4759);
8275 if (vk == 1) {
8276 dasm_put(Dst, 4761);
8277 } else {
8278 dasm_put(Dst, 4765);
8279 }
8280 switch (vk) {
8281 case 0:
8282 dasm_put(Dst, 4769);
8283 break;
8284 case 1:
8285 dasm_put(Dst, 4772);
8286 break;
8287 default:
8288 dasm_put(Dst, 4775);
8289 break;
8290 }
8291 dasm_put(Dst, 4778);
8292 } else {
6213 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8293 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
6214 switch (vk) { 8294 switch (vk) {
6215 case 0: 8295 case 0:
6216 dasm_put(Dst, 3623); 8296 dasm_put(Dst, 4785);
8297 if (LJ_DUALNUM) {
8298 dasm_put(Dst, 4787);
8299 }
8300 dasm_put(Dst, 4789);
8301 if (LJ_DUALNUM) {
8302 dasm_put(Dst, 4792);
8303 } else {
8304 dasm_put(Dst, 4798);
8305 }
6217 break; 8306 break;
6218 case 1: 8307 case 1:
6219 dasm_put(Dst, 3630); 8308 dasm_put(Dst, 4802);
8309 if (LJ_DUALNUM) {
8310 dasm_put(Dst, 4804);
8311 }
8312 dasm_put(Dst, 4806);
8313 if (LJ_DUALNUM) {
8314 dasm_put(Dst, 4809);
8315 } else {
8316 dasm_put(Dst, 4815);
8317 }
6220 break; 8318 break;
6221 default: 8319 default:
6222 dasm_put(Dst, 3637); 8320 dasm_put(Dst, 4819);
6223 break; 8321 break;
6224 } 8322 }
6225 dasm_put(Dst, 3647); 8323 dasm_put(Dst, 4829);
8324 }
6226 break; 8325 break;
6227 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 8326 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
6228 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8327 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
6229 switch (vk) { 8328 switch (vk) {
6230 case 0: 8329 case 0:
6231 dasm_put(Dst, 3660); 8330 dasm_put(Dst, 4842);
8331 if (LJ_DUALNUM) {
8332 dasm_put(Dst, 4844);
8333 }
8334 dasm_put(Dst, 4846);
8335 if (LJ_DUALNUM) {
8336 dasm_put(Dst, 4849);
8337 } else {
8338 dasm_put(Dst, 4855);
8339 }
6232 break; 8340 break;
6233 case 1: 8341 case 1:
6234 dasm_put(Dst, 3667); 8342 dasm_put(Dst, 4859);
8343 if (LJ_DUALNUM) {
8344 dasm_put(Dst, 4861);
8345 }
8346 dasm_put(Dst, 4863);
8347 if (LJ_DUALNUM) {
8348 dasm_put(Dst, 4866);
8349 } else {
8350 dasm_put(Dst, 4872);
8351 }
6235 break; 8352 break;
6236 default: 8353 default:
6237 dasm_put(Dst, 3674); 8354 dasm_put(Dst, 4876);
6238 break; 8355 break;
6239 } 8356 }
6240 dasm_put(Dst, 3684); 8357 dasm_put(Dst, 4886);
6241 break; 8358 break;
6242 case BC_MODVN: 8359 case BC_MODVN:
8360 if (LJ_DUALNUM) {
6243 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8361 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
6244 switch (vk) { 8362 switch (vk) {
6245 case 0: 8363 case 0:
6246 dasm_put(Dst, 3697); 8364 dasm_put(Dst, 4899);
6247 break; 8365 break;
6248 case 1: 8366 case 1:
6249 dasm_put(Dst, 3704); 8367 dasm_put(Dst, 4905);
6250 break; 8368 break;
6251 default: 8369 default:
6252 dasm_put(Dst, 3711); 8370 dasm_put(Dst, 4911);
6253 break; 8371 break;
6254 } 8372 }
6255 dasm_put(Dst, 3721); 8373 dasm_put(Dst, 4917);
8374 switch (vk) {
8375 case 0:
8376 dasm_put(Dst, 4945);
8377 break;
8378 case 1:
8379 dasm_put(Dst, 4948);
8380 break;
8381 default:
8382 dasm_put(Dst, 4951);
8383 break;
8384 }
8385 dasm_put(Dst, 4954);
8386 if (vk == 1) {
8387 dasm_put(Dst, 4956);
8388 } else {
8389 dasm_put(Dst, 4960);
8390 }
8391 switch (vk) {
8392 case 0:
8393 dasm_put(Dst, 4964);
8394 break;
8395 case 1:
8396 dasm_put(Dst, 4967);
8397 break;
8398 default:
8399 dasm_put(Dst, 4970);
8400 break;
8401 }
8402 if (!LJ_DUALNUM) {
8403 dasm_put(Dst, 4973);
8404 }
8405 dasm_put(Dst, 4975);
8406 } else {
8407 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8408 switch (vk) {
8409 case 0:
8410 dasm_put(Dst, 4987);
8411 if (LJ_DUALNUM) {
8412 dasm_put(Dst, 4989);
8413 }
8414 dasm_put(Dst, 4991);
8415 if (LJ_DUALNUM) {
8416 dasm_put(Dst, 4994);
8417 } else {
8418 dasm_put(Dst, 5000);
8419 }
8420 break;
8421 case 1:
8422 dasm_put(Dst, 5004);
8423 if (LJ_DUALNUM) {
8424 dasm_put(Dst, 5006);
8425 }
8426 dasm_put(Dst, 5008);
8427 if (LJ_DUALNUM) {
8428 dasm_put(Dst, 5011);
8429 } else {
8430 dasm_put(Dst, 5017);
8431 }
8432 break;
8433 default:
8434 dasm_put(Dst, 5021);
8435 break;
8436 }
8437 if (!LJ_DUALNUM) {
8438 dasm_put(Dst, 5031);
8439 }
8440 dasm_put(Dst, 5033);
8441 }
6256 break; 8442 break;
6257 case BC_MODNV: case BC_MODVV: 8443 case BC_MODNV: case BC_MODVV:
8444 if (LJ_DUALNUM) {
6258 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 8445 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
6259 switch (vk) { 8446 switch (vk) {
6260 case 0: 8447 case 0:
6261 dasm_put(Dst, 3739); 8448 dasm_put(Dst, 5051);
6262 break; 8449 break;
6263 case 1: 8450 case 1:
6264 dasm_put(Dst, 3746); 8451 dasm_put(Dst, 5057);
6265 break; 8452 break;
6266 default: 8453 default:
6267 dasm_put(Dst, 3753); 8454 dasm_put(Dst, 5063);
6268 break; 8455 break;
6269 } 8456 }
6270 dasm_put(Dst, 3763); 8457 dasm_put(Dst, 5069);
8458 if (vk == 1) {
8459 dasm_put(Dst, 5077);
8460 } else {
8461 dasm_put(Dst, 5081);
8462 }
8463 switch (vk) {
8464 case 0:
8465 dasm_put(Dst, 5085);
8466 break;
8467 case 1:
8468 dasm_put(Dst, 5088);
8469 break;
8470 default:
8471 dasm_put(Dst, 5091);
8472 break;
8473 }
8474 dasm_put(Dst, 5094);
8475 } else {
8476 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
8477 switch (vk) {
8478 case 0:
8479 dasm_put(Dst, 5097);
8480 if (LJ_DUALNUM) {
8481 dasm_put(Dst, 5099);
8482 }
8483 dasm_put(Dst, 5101);
8484 if (LJ_DUALNUM) {
8485 dasm_put(Dst, 5104);
8486 } else {
8487 dasm_put(Dst, 5110);
8488 }
8489 break;
8490 case 1:
8491 dasm_put(Dst, 5114);
8492 if (LJ_DUALNUM) {
8493 dasm_put(Dst, 5116);
8494 }
8495 dasm_put(Dst, 5118);
8496 if (LJ_DUALNUM) {
8497 dasm_put(Dst, 5121);
8498 } else {
8499 dasm_put(Dst, 5127);
8500 }
8501 break;
8502 default:
8503 dasm_put(Dst, 5131);
8504 break;
8505 }
8506 dasm_put(Dst, 5141);
8507 }
6271 break; 8508 break;
6272 case BC_POW: 8509 case BC_POW:
6273 dasm_put(Dst, 3766); 8510 dasm_put(Dst, 5144);
6274 break; 8511 break;
6275 8512
6276 case BC_CAT: 8513 case BC_CAT:
6277 dasm_put(Dst, 3789, Dt1(->base), 32-3, Dt1(->base)); 8514 dasm_put(Dst, 5167, Dt1(->base), 32-3, Dt1(->base));
6278 break; 8515 break;
6279 8516
6280 /* -- Constant ops ------------------------------------------------------ */ 8517 /* -- Constant ops ------------------------------------------------------ */
6281 8518
6282 case BC_KSTR: 8519 case BC_KSTR:
6283 dasm_put(Dst, 3819, 32-1, LJ_TSTR); 8520 dasm_put(Dst, 5197, 32-1, LJ_TSTR);
6284 break; 8521 break;
6285 case BC_KCDATA: 8522 case BC_KCDATA:
6286#if LJ_HASFFI 8523#if LJ_HASFFI
6287 dasm_put(Dst, 3838, 32-1, LJ_TCDATA); 8524 dasm_put(Dst, 5216, 32-1, LJ_TCDATA);
6288#endif 8525#endif
6289 break; 8526 break;
6290 case BC_KSHORT: 8527 case BC_KSHORT:
6291 dasm_put(Dst, 3857, 31-13); 8528 if (LJ_DUALNUM) {
8529 dasm_put(Dst, 5235, 31-13);
8530 } else {
8531 dasm_put(Dst, 5251, 31-13);
8532 }
6292 break; 8533 break;
6293 case BC_KNUM: 8534 case BC_KNUM:
6294 dasm_put(Dst, 3876); 8535 dasm_put(Dst, 5270);
6295 break; 8536 break;
6296 case BC_KPRI: 8537 case BC_KPRI:
6297 dasm_put(Dst, 3889, 32-3); 8538 dasm_put(Dst, 5283, 32-3);
6298 break; 8539 break;
6299 case BC_KNIL: 8540 case BC_KNIL:
6300 dasm_put(Dst, 3904); 8541 dasm_put(Dst, 5298);
6301 break; 8542 break;
6302 8543
6303 /* -- Upvalue and function ops ------------------------------------------ */ 8544 /* -- Upvalue and function ops ------------------------------------------ */
6304 8545
6305 case BC_UGET: 8546 case BC_UGET:
6306 dasm_put(Dst, 3923, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); 8547 dasm_put(Dst, 5317, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
6307 break; 8548 break;
6308 case BC_USETV: 8549 case BC_USETV:
6309 dasm_put(Dst, 3944, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 8550 dasm_put(Dst, 5338, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
6310 break; 8551 break;
6311 case BC_USETS: 8552 case BC_USETS:
6312 dasm_put(Dst, 3997, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_TSTR, LJ_GC_WHITES, GG_DISP2G); 8553 dasm_put(Dst, 5391, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_TSTR, LJ_GC_WHITES, GG_DISP2G);
6313 break; 8554 break;
6314 case BC_USETN: 8555 case BC_USETN:
6315 dasm_put(Dst, 4048, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); 8556 dasm_put(Dst, 5442, 32-1, offsetof(GCfuncL, uvptr), DtA(->v));
6316 break; 8557 break;
6317 case BC_USETP: 8558 case BC_USETP:
6318 dasm_put(Dst, 4069, 32-1, offsetof(GCfuncL, uvptr), 32-3, DtA(->v)); 8559 dasm_put(Dst, 5463, 32-1, offsetof(GCfuncL, uvptr), 32-3, DtA(->v));
6319 break; 8560 break;
6320 8561
6321 case BC_UCLO: 8562 case BC_UCLO:
6322 dasm_put(Dst, 4092, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base)); 8563 dasm_put(Dst, 5486, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base));
6323 break; 8564 break;
6324 8565
6325 case BC_FNEW: 8566 case BC_FNEW:
6326 dasm_put(Dst, 4122, 32-1, Dt1(->base), Dt1(->base), LJ_TFUNC); 8567 dasm_put(Dst, 5516, 32-1, Dt1(->base), Dt1(->base), LJ_TFUNC);
6327 break; 8568 break;
6328 8569
6329 /* -- Table ops --------------------------------------------------------- */ 8570 /* -- Table ops --------------------------------------------------------- */
6330 8571
6331 case BC_TNEW: 8572 case BC_TNEW:
6332 case BC_TDUP: 8573 case BC_TDUP:
6333 dasm_put(Dst, 4150, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); 8574 dasm_put(Dst, 5544, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base));
6334 if (op == BC_TNEW) { 8575 if (op == BC_TNEW) {
6335 dasm_put(Dst, 4163); 8576 dasm_put(Dst, 5557);
6336 } else { 8577 } else {
6337 dasm_put(Dst, 4172, 32-1); 8578 dasm_put(Dst, 5566, 32-1);
6338 } 8579 }
6339 dasm_put(Dst, 4179, Dt1(->base), LJ_TTAB); 8580 dasm_put(Dst, 5573, Dt1(->base), LJ_TTAB);
6340 if (op == BC_TNEW) { 8581 if (op == BC_TNEW) {
6341 dasm_put(Dst, 4196); 8582 dasm_put(Dst, 5590);
6342 } 8583 }
6343 dasm_put(Dst, 4201); 8584 dasm_put(Dst, 5595);
6344 break; 8585 break;
6345 8586
6346 case BC_GGET: 8587 case BC_GGET:
6347 case BC_GSET: 8588 case BC_GSET:
6348 dasm_put(Dst, 4210, 32-1, Dt7(->env)); 8589 dasm_put(Dst, 5604, 32-1, Dt7(->env));
6349 if (op == BC_GGET) { 8590 if (op == BC_GGET) {
6350 dasm_put(Dst, 4218); 8591 dasm_put(Dst, 5612);
6351 } else { 8592 } else {
6352 dasm_put(Dst, 4221); 8593 dasm_put(Dst, 5615);
6353 } 8594 }
6354 break; 8595 break;
6355 8596
6356 case BC_TGETV: 8597 case BC_TGETV:
6357 dasm_put(Dst, 4224, LJ_TTAB, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TSTR); 8598 dasm_put(Dst, 5618);
8599 if (LJ_DUALNUM) {
8600 dasm_put(Dst, 5622);
8601 } else {
8602 dasm_put(Dst, 5624);
8603 }
8604 dasm_put(Dst, 5626, LJ_TTAB);
8605 if (LJ_DUALNUM) {
8606 dasm_put(Dst, 5632, Dt6(->asize), Dt6(->array), 31-3);
8607 } else {
8608 dasm_put(Dst, 5642, Dt6(->asize), Dt6(->array), 31-3);
8609 }
8610 dasm_put(Dst, 5659, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TSTR);
8611 if (!LJ_DUALNUM) {
8612 dasm_put(Dst, 5699);
8613 }
8614 dasm_put(Dst, 5701);
6358 break; 8615 break;
6359 case BC_TGETS: 8616 case BC_TGETS:
6360 dasm_put(Dst, 4292, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL, DtB(->next)); 8617 dasm_put(Dst, 5704, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL, DtB(->next));
6361 dasm_put(Dst, 4353, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 8618 dasm_put(Dst, 5765, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
6362 break; 8619 break;
6363 case BC_TGETB: 8620 case BC_TGETB:
6364 dasm_put(Dst, 4373, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 8621 dasm_put(Dst, 5785, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
6365 break; 8622 break;
6366 8623
6367 case BC_TSETV: 8624 case BC_TSETV:
6368 dasm_put(Dst, 4421, LJ_TTAB, Dt6(->asize), Dt6(->array), 31-3, Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); 8625 dasm_put(Dst, 5833);
6369 dasm_put(Dst, 4489, LJ_TSTR, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 8626 if (LJ_DUALNUM) {
8627 dasm_put(Dst, 5837);
8628 } else {
8629 dasm_put(Dst, 5839);
8630 }
8631 dasm_put(Dst, 5841, LJ_TTAB);
8632 if (LJ_DUALNUM) {
8633 dasm_put(Dst, 5847, Dt6(->asize), Dt6(->array), 31-3);
8634 } else {
8635 dasm_put(Dst, 5857, Dt6(->asize), Dt6(->array), 31-3);
8636 }
8637 dasm_put(Dst, 5874, Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR);
8638 if (!LJ_DUALNUM) {
8639 dasm_put(Dst, 5921);
8640 }
8641 dasm_put(Dst, 5923, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
6370 break; 8642 break;
6371 dasm_put(Dst, 4509, LJ_TSTR, LJ_TNIL); 8643 dasm_put(Dst, 5938, LJ_TSTR, LJ_TNIL);
6372 case BC_TSETS: 8644 case BC_TSETS:
6373 dasm_put(Dst, 4535, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL); 8645 dasm_put(Dst, 5964, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL);
6374 dasm_put(Dst, 4586, LJ_GC_BLACK, DtB(->val), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next), Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex); 8646 dasm_put(Dst, 6015, LJ_GC_BLACK, DtB(->val), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next), Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex);
6375 dasm_put(Dst, 4642, LJ_TSTR, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 8647 dasm_put(Dst, 6071, LJ_TSTR, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
6376 break; 8648 break;
6377 case BC_TSETB: 8649 case BC_TSETB:
6378 dasm_put(Dst, 4667, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain)); 8650 dasm_put(Dst, 6096, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain));
6379 dasm_put(Dst, 4725, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 8651 dasm_put(Dst, 6154, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
6380 break; 8652 break;
6381 8653
6382 case BC_TSETM: 8654 case BC_TSETM:
6383 dasm_put(Dst, 4735, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); 8655 dasm_put(Dst, 6164, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist));
6384 dasm_put(Dst, 4804); 8656 dasm_put(Dst, 6233);
6385 break; 8657 break;
6386 8658
6387 /* -- Calls and vararg handling ----------------------------------------- */ 8659 /* -- Calls and vararg handling ----------------------------------------- */
6388 8660
6389 case BC_CALLM: 8661 case BC_CALLM:
6390 dasm_put(Dst, 4807); 8662 dasm_put(Dst, 6236);
6391 break; 8663 break;
6392 case BC_CALL: 8664 case BC_CALL:
6393 dasm_put(Dst, 4809, LJ_TFUNC, Dt7(->pc)); 8665 dasm_put(Dst, 6238, LJ_TFUNC, Dt7(->pc));
6394 break; 8666 break;
6395 8667
6396 case BC_CALLMT: 8668 case BC_CALLMT:
6397 dasm_put(Dst, 4830); 8669 dasm_put(Dst, 6259);
6398 break; 8670 break;
6399 case BC_CALLT: 8671 case BC_CALLT:
6400 dasm_put(Dst, 4832, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); 8672 dasm_put(Dst, 6261, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
6401 dasm_put(Dst, 4896, FRAME_TYPE); 8673 dasm_put(Dst, 6325, FRAME_TYPE);
6402 break; 8674 break;
6403 8675
6404 case BC_ITERC: 8676 case BC_ITERC:
6405 dasm_put(Dst, 4905, LJ_TFUNC, Dt7(->pc)); 8677 dasm_put(Dst, 6334, LJ_TFUNC, Dt7(->pc));
6406 break; 8678 break;
6407 8679
6408 case BC_ITERN: 8680 case BC_ITERN:
6409#if LJ_HASJIT 8681#if LJ_HASJIT
6410#endif 8682#endif
6411 dasm_put(Dst, 4932, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL, -(BCBIAS_J*4 >> 16), Dt6(->hmask), Dt6(->node), 31-5, 31-3, LJ_TNIL, DtB(->key), -(BCBIAS_J*4 >> 16)); 8683 dasm_put(Dst, 6361, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL);
6412 dasm_put(Dst, 5007); 8684 if (LJ_DUALNUM) {
8685 dasm_put(Dst, 6383);
8686 } else {
8687 dasm_put(Dst, 6386);
8688 }
8689 dasm_put(Dst, 6390, -(BCBIAS_J*4 >> 16));
8690 if (!LJ_DUALNUM) {
8691 dasm_put(Dst, 6398);
8692 }
8693 dasm_put(Dst, 6400, Dt6(->hmask), Dt6(->node), 31-5, 31-3, LJ_TNIL, DtB(->key), -(BCBIAS_J*4 >> 16));
6413 break; 8694 break;
6414 8695
6415 case BC_ISNEXT: 8696 case BC_ISNEXT:
6416 dasm_put(Dst, 5021, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16)); 8697 dasm_put(Dst, 6456, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16));
6417 break; 8698 break;
6418 8699
6419 case BC_VARG: 8700 case BC_VARG:
6420 dasm_put(Dst, 5071, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base)); 8701 dasm_put(Dst, 6506, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base));
6421 dasm_put(Dst, 5151); 8702 dasm_put(Dst, 6586);
6422 break; 8703 break;
6423 8704
6424 /* -- Returns ----------------------------------------------------------- */ 8705 /* -- Returns ----------------------------------------------------------- */
6425 8706
6426 case BC_RETM: 8707 case BC_RETM:
6427 dasm_put(Dst, 5157); 8708 dasm_put(Dst, 6592);
6428 break; 8709 break;
6429 8710
6430 case BC_RET: 8711 case BC_RET:
6431 dasm_put(Dst, 5159, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); 8712 dasm_put(Dst, 6594, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP);
6432 break; 8713 break;
6433 8714
6434 case BC_RET0: case BC_RET1: 8715 case BC_RET0: case BC_RET1:
6435 dasm_put(Dst, 5229, FRAME_TYPE, FRAME_VARG); 8716 dasm_put(Dst, 6664, FRAME_TYPE, FRAME_VARG);
6436 if (op == BC_RET1) { 8717 if (op == BC_RET1) {
6437 dasm_put(Dst, 5242); 8718 dasm_put(Dst, 6677);
6438 } 8719 }
6439 dasm_put(Dst, 5245, Dt7(->pc), PC2PROTO(k)); 8720 dasm_put(Dst, 6680, Dt7(->pc), PC2PROTO(k));
6440 break; 8721 break;
6441 8722
6442 /* -- Loops and branches ------------------------------------------------ */ 8723 /* -- Loops and branches ------------------------------------------------ */
6443 8724
6444 case BC_FORL: 8725 case BC_FORL:
6445#if LJ_HASJIT 8726#if LJ_HASJIT
6446 dasm_put(Dst, 5273); 8727 dasm_put(Dst, 6708);
6447#endif 8728#endif
6448 break; 8729 break;
6449 8730
@@ -6455,45 +8736,94 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
6455 case BC_FORI: 8736 case BC_FORI:
6456 case BC_IFORL: 8737 case BC_IFORL:
6457 vk = (op == BC_IFORL || op == BC_JFORL); 8738 vk = (op == BC_IFORL || op == BC_JFORL);
8739 if (LJ_DUALNUM) {
8740 dasm_put(Dst, 6710, FORL_IDX*8+4);
8741 if (vk) {
8742 dasm_put(Dst, 6715, FORL_STEP*8+4, FORL_STOP*8+4, FORL_IDX*8+4);
8743 } else {
8744 dasm_put(Dst, 6729, FORL_STEP*8, FORL_STEP*8+4, FORL_STOP*8, FORL_STOP*8+4);
8745 }
8746 dasm_put(Dst, 6745, FORL_EXT*8);
8747 if (op != BC_JFORL) {
8748 dasm_put(Dst, 6752, 32-1);
8749 }
8750 dasm_put(Dst, 6755, FORL_EXT*8+4);
8751 if (op != BC_JFORL) {
8752 dasm_put(Dst, 6758);
8753 }
8754 if (op == BC_FORI) {
8755 dasm_put(Dst, 6760);
8756 } else if (op == BC_JFORI) {
8757 dasm_put(Dst, 6763, -(BCBIAS_J*4 >> 16), BC_JLOOP);
8758 } else if (op == BC_IFORL) {
8759 dasm_put(Dst, 6768, -(BCBIAS_J*4 >> 16));
8760 } else {
8761 dasm_put(Dst, 6773, BC_JLOOP);
8762 }
8763 dasm_put(Dst, 6776);
8764 if (vk) {
8765 dasm_put(Dst, 6792);
8766 }
8767 }
6458 if (vk) { 8768 if (vk) {
6459 dasm_put(Dst, 5275, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8, FORL_IDX*8); 8769 if (LJ_DUALNUM) {
8770 dasm_put(Dst, 6799, FORL_IDX*8);
8771 } else {
8772 dasm_put(Dst, 6803);
8773 }
8774 dasm_put(Dst, 6805, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8, FORL_IDX*8);
6460 } else { 8775 } else {
6461 dasm_put(Dst, 5286, FORL_IDX*8, FORL_STEP*8, FORL_STEP*8, FORL_STOP*8, FORL_STOP*8); 8776 if (LJ_DUALNUM) {
8777 dasm_put(Dst, 6815);
8778 } else {
8779 dasm_put(Dst, 6817, FORL_STEP*8, FORL_STOP*8);
8780 }
8781 dasm_put(Dst, 6826, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8);
6462 } 8782 }
6463 dasm_put(Dst, 5305); 8783 dasm_put(Dst, 6837);
6464 if (op != BC_JFORL) { 8784 if (op != BC_JFORL) {
6465 dasm_put(Dst, 5307, 32-1); 8785 dasm_put(Dst, 6839, 32-1);
6466 } 8786 }
6467 dasm_put(Dst, 5310, FORL_EXT*8); 8787 dasm_put(Dst, 6842, FORL_EXT*8);
6468 if (op != BC_JFORL) { 8788 if (op != BC_JFORL) {
6469 dasm_put(Dst, 5313); 8789 dasm_put(Dst, 6845);
6470 } 8790 }
6471 dasm_put(Dst, 5315); 8791 dasm_put(Dst, 6847);
6472 if (op == BC_JFORI) { 8792 if (op == BC_JFORI) {
6473 dasm_put(Dst, 5317, -(BCBIAS_J*4 >> 16)); 8793 dasm_put(Dst, 6849, -(BCBIAS_J*4 >> 16));
6474 } 8794 }
6475 dasm_put(Dst, 5320); 8795 dasm_put(Dst, 6852);
6476 if (op == BC_FORI) { 8796 if (op == BC_FORI) {
6477 dasm_put(Dst, 5323); 8797 dasm_put(Dst, 6855);
6478 } else if (op == BC_IFORL) { 8798 } else if (op == BC_IFORL) {
6479 dasm_put(Dst, 5326, -(BCBIAS_J*4 >> 16)); 8799 if (LJ_DUALNUM) {
8800 dasm_put(Dst, 6858);
8801 } else {
8802 dasm_put(Dst, 6861);
8803 }
8804 dasm_put(Dst, 6864, -(BCBIAS_J*4 >> 16));
8805 } else {
8806 dasm_put(Dst, 6868, BC_JLOOP);
8807 }
8808 if (LJ_DUALNUM) {
8809 dasm_put(Dst, 6871);
6480 } else { 8810 } else {
6481 dasm_put(Dst, 5332, BC_JLOOP); 8811 dasm_put(Dst, 6874);
6482 } 8812 }
6483 dasm_put(Dst, 5335); 8813 dasm_put(Dst, 6886);
6484 if (op == BC_FORI) { 8814 if (op == BC_FORI) {
6485 dasm_put(Dst, 5348, -(BCBIAS_J*4 >> 16)); 8815 dasm_put(Dst, 6888, -(BCBIAS_J*4 >> 16));
6486 } else if (op == BC_IFORL) { 8816 } else if (op == BC_IFORL) {
6487 dasm_put(Dst, 5354); 8817 dasm_put(Dst, 6894);
6488 } else { 8818 } else {
6489 dasm_put(Dst, 5357, BC_JLOOP); 8819 dasm_put(Dst, 6897, BC_JLOOP);
6490 } 8820 }
6491 dasm_put(Dst, 5360); 8821 dasm_put(Dst, 6900);
6492 break; 8822 break;
6493 8823
6494 case BC_ITERL: 8824 case BC_ITERL:
6495#if LJ_HASJIT 8825#if LJ_HASJIT
6496 dasm_put(Dst, 5363); 8826 dasm_put(Dst, 6903);
6497#endif 8827#endif
6498 break; 8828 break;
6499 8829
@@ -6502,40 +8832,40 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
6502 break; 8832 break;
6503#endif 8833#endif
6504 case BC_IITERL: 8834 case BC_IITERL:
6505 dasm_put(Dst, 5365, LJ_TNIL); 8835 dasm_put(Dst, 6905, LJ_TNIL);
6506 if (op == BC_JITERL) { 8836 if (op == BC_JITERL) {
6507 dasm_put(Dst, 5372); 8837 dasm_put(Dst, 6912);
6508 } else { 8838 } else {
6509 dasm_put(Dst, 5374, 32-1, -(BCBIAS_J*4 >> 16)); 8839 dasm_put(Dst, 6914, 32-1, -(BCBIAS_J*4 >> 16));
6510 } 8840 }
6511 dasm_put(Dst, 5382); 8841 dasm_put(Dst, 6922);
6512 break; 8842 break;
6513 8843
6514 case BC_LOOP: 8844 case BC_LOOP:
6515#if LJ_HASJIT 8845#if LJ_HASJIT
6516 dasm_put(Dst, 5394); 8846 dasm_put(Dst, 6934);
6517#endif 8847#endif
6518 break; 8848 break;
6519 8849
6520 case BC_ILOOP: 8850 case BC_ILOOP:
6521 dasm_put(Dst, 5396); 8851 dasm_put(Dst, 6936);
6522 break; 8852 break;
6523 8853
6524 case BC_JLOOP: 8854 case BC_JLOOP:
6525#if LJ_HASJIT 8855#if LJ_HASJIT
6526 dasm_put(Dst, 5407); 8856 dasm_put(Dst, 6947);
6527#endif 8857#endif
6528 break; 8858 break;
6529 8859
6530 case BC_JMP: 8860 case BC_JMP:
6531 dasm_put(Dst, 5409, 32-1, -(BCBIAS_J*4 >> 16)); 8861 dasm_put(Dst, 6949, 32-1, -(BCBIAS_J*4 >> 16));
6532 break; 8862 break;
6533 8863
6534 /* -- Function headers -------------------------------------------------- */ 8864 /* -- Function headers -------------------------------------------------- */
6535 8865
6536 case BC_FUNCF: 8866 case BC_FUNCF:
6537#if LJ_HASJIT 8867#if LJ_HASJIT
6538 dasm_put(Dst, 5425); 8868 dasm_put(Dst, 6965);
6539#endif 8869#endif
6540 case BC_FUNCV: /* NYI: compiled vararg functions. */ 8870 case BC_FUNCV: /* NYI: compiled vararg functions. */
6541 break; 8871 break;
@@ -6545,38 +8875,38 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
6545 break; 8875 break;
6546#endif 8876#endif
6547 case BC_IFUNCF: 8877 case BC_IFUNCF:
6548 dasm_put(Dst, 5427, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3); 8878 dasm_put(Dst, 6967, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3);
6549 if (op == BC_JFUNCF) { 8879 if (op == BC_JFUNCF) {
6550 dasm_put(Dst, 5445); 8880 dasm_put(Dst, 6985);
6551 } else { 8881 } else {
6552 dasm_put(Dst, 5447); 8882 dasm_put(Dst, 6987);
6553 } 8883 }
6554 dasm_put(Dst, 5456); 8884 dasm_put(Dst, 6996);
6555 break; 8885 break;
6556 8886
6557 case BC_JFUNCV: 8887 case BC_JFUNCV:
6558#if !LJ_HASJIT 8888#if !LJ_HASJIT
6559 break; 8889 break;
6560#endif 8890#endif
6561 dasm_put(Dst, 5462); 8891 dasm_put(Dst, 7002);
6562 break; /* NYI: compiled vararg functions. */ 8892 break; /* NYI: compiled vararg functions. */
6563 8893
6564 case BC_IFUNCV: 8894 case BC_IFUNCV:
6565 dasm_put(Dst, 5464, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), LJ_TNIL); 8895 dasm_put(Dst, 7004, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), LJ_TNIL);
6566 break; 8896 break;
6567 8897
6568 case BC_FUNCC: 8898 case BC_FUNCC:
6569 case BC_FUNCCW: 8899 case BC_FUNCCW:
6570 if (op == BC_FUNCC) { 8900 if (op == BC_FUNCC) {
6571 dasm_put(Dst, 5517, Dt8(->f)); 8901 dasm_put(Dst, 7057, Dt8(->f));
6572 } else { 8902 } else {
6573 dasm_put(Dst, 5520, DISPATCH_GL(wrapf)); 8903 dasm_put(Dst, 7060, DISPATCH_GL(wrapf));
6574 } 8904 }
6575 dasm_put(Dst, 5523, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); 8905 dasm_put(Dst, 7063, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C);
6576 if (op == BC_FUNCCW) { 8906 if (op == BC_FUNCCW) {
6577 dasm_put(Dst, 5536, Dt8(->f)); 8907 dasm_put(Dst, 7076, Dt8(->f));
6578 } 8908 }
6579 dasm_put(Dst, 5539, DISPATCH_GL(vmstate), Dt1(->top), 31-3, Dt1(->base), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate)); 8909 dasm_put(Dst, 7079, DISPATCH_GL(vmstate), Dt1(->top), 31-3, Dt1(->base), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate));
6580 break; 8910 break;
6581 8911
6582 /* ---------------------------------------------------------------------- */ 8912 /* ---------------------------------------------------------------------- */
@@ -6596,7 +8926,7 @@ static int build_backend(BuildCtx *ctx)
6596 8926
6597 build_subroutines(ctx); 8927 build_subroutines(ctx);
6598 8928
6599 dasm_put(Dst, 5560); 8929 dasm_put(Dst, 7100);
6600 for (op = 0; op < BC__MAX; op++) 8930 for (op = 0; op < BC__MAX; op++)
6601 build_ins(ctx, (BCOp)op, op); 8931 build_ins(ctx, (BCOp)op, op);
6602 8932
diff --git a/src/lj_arch.h b/src/lj_arch.h
index 826c54c1..ceaee6e7 100644
--- a/src/lj_arch.h
+++ b/src/lj_arch.h
@@ -162,7 +162,7 @@
162#define LJ_TARGET_MASKSHIFT 0 162#define LJ_TARGET_MASKSHIFT 0
163#define LJ_TARGET_MASKROT 1 163#define LJ_TARGET_MASKROT 1
164#define LJ_TARGET_UNIFYROT 1 /* Want only IR_BROL. */ 164#define LJ_TARGET_UNIFYROT 1 /* Want only IR_BROL. */
165#define LJ_ARCH_NUMMODE LJ_NUMMODE_SINGLE /* NYI: dual-num. */ 165#define LJ_ARCH_NUMMODE LJ_NUMMODE_DUAL_SINGLE
166#define LJ_ARCH_NOFFI 1 /* NYI: comparisons, calls. */ 166#define LJ_ARCH_NOFFI 1 /* NYI: comparisons, calls. */
167#define LJ_ARCH_NOJIT 1 167#define LJ_ARCH_NOJIT 1
168 168