diff options
author | Mike Pall <mike> | 2009-12-22 05:04:21 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2009-12-22 05:04:21 +0100 |
commit | 298e3f5d54bcc676eff0be85688e4538bffce131 (patch) | |
tree | 97109c0e71448a6e5c69dfe8faff5216bda202e5 /src | |
parent | ab02f069aae80ec6772bf7e6b2856c50922d92ee (diff) | |
download | luajit-298e3f5d54bcc676eff0be85688e4538bffce131.tar.gz luajit-298e3f5d54bcc676eff0be85688e4538bffce131.tar.bz2 luajit-298e3f5d54bcc676eff0be85688e4538bffce131.zip |
Add SSE2 variants for all FP ops (except vm_pow*) in interpreter.
Diffstat (limited to 'src')
-rw-r--r-- | src/buildvm_x86.dasc | 683 | ||||
-rw-r--r-- | src/buildvm_x86.h | 2233 |
2 files changed, 1864 insertions, 1052 deletions
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc index b220c58f..58767c1e 100644 --- a/src/buildvm_x86.dasc +++ b/src/buildvm_x86.dasc | |||
@@ -34,6 +34,7 @@ | |||
34 | |.if X64; .define RAa, rcx; .else; .define RAa, RA; .endif | 34 | |.if X64; .define RAa, rcx; .else; .define RAa, RA; .endif |
35 | |.define RAL, cl | 35 | |.define RAL, cl |
36 | |.define RB, ebp // Must be ebp (C callee-save). | 36 | |.define RB, ebp // Must be ebp (C callee-save). |
37 | |.if X64; .define RBa, rbp; .else; .define RBa, RB; .endif | ||
37 | |.define RC, eax // Must be eax (fcomparepp and others). | 38 | |.define RC, eax // Must be eax (fcomparepp and others). |
38 | |.define RCW, ax | 39 | |.define RCW, ax |
39 | |.define RCH, ah | 40 | |.define RCH, ah |
@@ -41,6 +42,7 @@ | |||
41 | |.define OP, RB | 42 | |.define OP, RB |
42 | |.define RD, RC | 43 | |.define RD, RC |
43 | |.if X64; .define RDa, rax; .else; .define RDa, RD; .endif | 44 | |.if X64; .define RDa, rax; .else; .define RDa, RD; .endif |
45 | |.define RDW, RCW | ||
44 | |.define RDL, RCL | 46 | |.define RDL, RCL |
45 | | | 47 | | |
46 | |.if not X64 | 48 | |.if not X64 |
@@ -323,14 +325,6 @@ | |||
323 | |.macro fpop1; fstp st1; .endmacro | 325 | |.macro fpop1; fstp st1; .endmacro |
324 | | | 326 | | |
325 | |// Synthesize SSE FP constants. | 327 | |// Synthesize SSE FP constants. |
326 | |.macro sseconst_sign, reg, tmp // Synthesize sign mask. | ||
327 | |.if X64 | ||
328 | | mov64 tmp, U64x(80000000,00000000); movd reg, tmp | ||
329 | |.else | ||
330 | | mov tmp, 0x80000000; movd xmm1, tmp; pshufd reg, reg, 0x51 | ||
331 | |.endif | ||
332 | |.endmacro | ||
333 | | | ||
334 | |.macro sseconst_abs, reg, tmp // Synthesize abs mask. | 328 | |.macro sseconst_abs, reg, tmp // Synthesize abs mask. |
335 | |.if X64 | 329 | |.if X64 |
336 | | mov64 tmp, U64x(7fffffff,ffffffff); movd reg, tmp | 330 | | mov64 tmp, U64x(7fffffff,ffffffff); movd reg, tmp |
@@ -339,21 +333,28 @@ | |||
339 | |.endif | 333 | |.endif |
340 | |.endmacro | 334 | |.endmacro |
341 | | | 335 | | |
342 | |.macro sseconst_1, reg, tmp // Synthesize 1.0. | 336 | |.macro sseconst_hi, reg, tmp, val // Synthesize hi-32 bit const. |
343 | |.if X64 | 337 | |.if X64 |
344 | | mov64 tmp, U64x(3ff00000,00000000) | 338 | | mov64 tmp, U64x(val,00000000); movd reg, tmp |
345 | | movd reg, tmp | ||
346 | |.else | 339 | |.else |
347 | | mov tmp, 0x3ff00000; movd reg, tmp; pshufd reg, reg, 0x51 | 340 | | mov tmp, 0x .. val; movd reg, tmp; pshufd reg, reg, 0x51 |
348 | |.endif | 341 | |.endif |
349 | |.endmacro | 342 | |.endmacro |
350 | | | 343 | | |
344 | |.macro sseconst_sign, reg, tmp // Synthesize sign mask. | ||
345 | | sseconst_hi reg, tmp, 80000000 | ||
346 | |.endmacro | ||
347 | |.macro sseconst_1, reg, tmp // Synthesize 1.0. | ||
348 | | sseconst_hi reg, tmp, 3ff00000 | ||
349 | |.endmacro | ||
350 | |.macro sseconst_m1, reg, tmp // Synthesize -1.0. | ||
351 | | sseconst_hi reg, tmp, bff00000 | ||
352 | |.endmacro | ||
351 | |.macro sseconst_2p52, reg, tmp // Synthesize 2^52. | 353 | |.macro sseconst_2p52, reg, tmp // Synthesize 2^52. |
352 | |.if X64 | 354 | | sseconst_hi reg, tmp, 43300000 |
353 | | mov64 tmp, U64x(43300000,00000000); movd reg, tmp | 355 | |.endmacro |
354 | |.else | 356 | |.macro sseconst_tobit, reg, tmp // Synthesize 2^52 + 2^51. |
355 | | mov tmp, 0x43300000; movd reg, tmp; pshufd reg, reg, 0x51 | 357 | | sseconst_hi reg, tmp, 43380000 |
356 | |.endif | ||
357 | |.endmacro | 358 | |.endmacro |
358 | | | 359 | | |
359 | |// Move table write barrier back. Overwrites reg. | 360 | |// Move table write barrier back. Overwrites reg. |
@@ -894,10 +895,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
894 | | jmp >2 | 895 | | jmp >2 |
895 | | | 896 | | |
896 | |->vmeta_tgetb: | 897 | |->vmeta_tgetb: |
897 | | movzx RC, PC_RC // Ugly, cannot fild from a byte. | 898 | | movzx RC, PC_RC |
898 | | mov ARG4, RC | 899 | if (sse) { |
899 | | fild ARG4 | 900 | | cvtsi2sd xmm0, RC |
900 | | fstp TMPQ | 901 | | movsd TMPQ, xmm0 |
902 | } else { | ||
903 | | mov ARG4, RC | ||
904 | | fild ARG4 | ||
905 | | fstp TMPQ | ||
906 | } | ||
901 | | lea RC, TMP1 // Store temp. TValue in TMP1/TMP2. | 907 | | lea RC, TMP1 // Store temp. TValue in TMP1/TMP2. |
902 | | jmp >1 | 908 | | jmp >1 |
903 | | | 909 | | |
@@ -960,10 +966,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
960 | | jmp >2 | 966 | | jmp >2 |
961 | | | 967 | | |
962 | |->vmeta_tsetb: | 968 | |->vmeta_tsetb: |
963 | | movzx RC, PC_RC // Ugly, cannot fild from a byte. | 969 | | movzx RC, PC_RC |
964 | | mov ARG4, RC | 970 | if (sse) { |
965 | | fild ARG4 | 971 | | cvtsi2sd xmm0, RC |
966 | | fstp TMPQ | 972 | | movsd TMPQ, xmm0 |
973 | } else { | ||
974 | | mov ARG4, RC | ||
975 | | fild ARG4 | ||
976 | | fstp TMPQ | ||
977 | } | ||
967 | | lea RC, TMP1 // Store temp. TValue in TMP1/TMP2. | 978 | | lea RC, TMP1 // Store temp. TValue in TMP1/TMP2. |
968 | | jmp >1 | 979 | | jmp >1 |
969 | | | 980 | | |
@@ -1274,6 +1285,16 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
1274 | | fld qword [RA] | 1285 | | fld qword [RA] |
1275 | |.endmacro | 1286 | |.endmacro |
1276 | | | 1287 | | |
1288 | |.macro .ffunc_nsse, name, op | ||
1289 | | .ffunc_1 name | ||
1290 | | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback | ||
1291 | | op xmm0, qword [RA] | ||
1292 | |.endmacro | ||
1293 | | | ||
1294 | |.macro .ffunc_nsse, name | ||
1295 | | .ffunc_nsse name, movsd | ||
1296 | |.endmacro | ||
1297 | | | ||
1277 | |.macro .ffunc_nn, name | 1298 | |.macro .ffunc_nn, name |
1278 | | .ffunc_2 name | 1299 | | .ffunc_2 name |
1279 | | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback | 1300 | | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback |
@@ -1282,6 +1303,14 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
1282 | | fld qword [RA+8] | 1303 | | fld qword [RA+8] |
1283 | |.endmacro | 1304 | |.endmacro |
1284 | | | 1305 | | |
1306 | |.macro .ffunc_nnsse, name | ||
1307 | | .ffunc_1 name | ||
1308 | | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback | ||
1309 | | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback | ||
1310 | | movsd xmm0, qword [RA] | ||
1311 | | movsd xmm1, qword [RA+8] | ||
1312 | |.endmacro | ||
1313 | | | ||
1285 | |.macro .ffunc_nnr, name | 1314 | |.macro .ffunc_nnr, name |
1286 | | .ffunc_2 name | 1315 | | .ffunc_2 name |
1287 | | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback | 1316 | | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback |
@@ -1440,8 +1469,11 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
1440 | | // Only handles the number case inline (without a base argument). | 1469 | | // Only handles the number case inline (without a base argument). |
1441 | | cmp NARGS:RC, 1+1; jne ->fff_fallback // Exactly one argument. | 1470 | | cmp NARGS:RC, 1+1; jne ->fff_fallback // Exactly one argument. |
1442 | | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback | 1471 | | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback |
1443 | | fld qword [RA] | 1472 | if (sse) { |
1444 | | jmp ->fff_resn | 1473 | | movsd xmm0, qword [RA]; jmp ->fff_resxmm0 |
1474 | } else { | ||
1475 | | fld qword [RA]; jmp ->fff_resn | ||
1476 | } | ||
1445 | | | 1477 | | |
1446 | |.ffunc_1 tostring | 1478 | |.ffunc_1 tostring |
1447 | | // Only handles the string or number case inline. | 1479 | | // Only handles the string or number case inline. |
@@ -1531,13 +1563,33 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
1531 | |.ffunc_1 ipairs_aux | 1563 | |.ffunc_1 ipairs_aux |
1532 | | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback | 1564 | | cmp dword [RA+4], LJ_TTAB; jne ->fff_fallback |
1533 | | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback | 1565 | | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback |
1534 | | fld qword [RA+8] | 1566 | | // Caveat: xmm0/xmm1/ARG2 used in getinth call, too. |
1535 | | fld1 | 1567 | if (sse) { |
1536 | | faddp st1 | 1568 | | movsd xmm0, qword [RA+8] |
1537 | | fist ARG2 // Caveat: used in getinth call, too. | 1569 | | sseconst_1 xmm1, RBa |
1538 | | fstp qword [RA-8] | 1570 | |.if X64WIN |
1571 | | addsd xmm1, xmm0 | ||
1572 | | cvtsd2si RC, xmm1 | ||
1573 | | movsd qword [RA-8], xmm1 | ||
1574 | |.else | ||
1575 | | addsd xmm0, xmm1 | ||
1576 | | cvtsd2si RC, xmm0 | ||
1577 | | movsd qword [RA-8], xmm0 | ||
1578 | | .if not X64 | ||
1579 | | mov ARG2, RC | ||
1580 | | .endif | ||
1581 | |.endif | ||
1582 | } else { | ||
1583 | |.if not X64 | ||
1584 | | fld qword [RA+8] | ||
1585 | | fld1 | ||
1586 | | faddp st1 | ||
1587 | | fist ARG2 | ||
1588 | | fstp qword [RA-8] | ||
1589 | | mov RC, ARG2 | ||
1590 | |.endif | ||
1591 | } | ||
1539 | | mov TAB:RB, [RA] | 1592 | | mov TAB:RB, [RA] |
1540 | | mov RC, ARG2 | ||
1541 | | cmp RC, TAB:RB->asize; jae >2 // Not in array part? | 1593 | | cmp RC, TAB:RB->asize; jae >2 // Not in array part? |
1542 | | shl RC, 3 | 1594 | | shl RC, 3 |
1543 | | add RC, TAB:RB->array | 1595 | | add RC, TAB:RB->array |
@@ -1572,8 +1624,13 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
1572 | | mov CFUNC:RC, CFUNC:RB->upvalue[0] | 1624 | | mov CFUNC:RC, CFUNC:RB->upvalue[0] |
1573 | | mov dword [RA-4], LJ_TFUNC | 1625 | | mov dword [RA-4], LJ_TFUNC |
1574 | | mov [RA-8], CFUNC:RC | 1626 | | mov [RA-8], CFUNC:RC |
1575 | | fldz | 1627 | if (sse) { |
1576 | | fstp qword [RA+8] | 1628 | | xorps xmm0, xmm0 |
1629 | | movsd qword [RA+8], xmm0 | ||
1630 | } else { | ||
1631 | | fldz | ||
1632 | | fstp qword [RA+8] | ||
1633 | } | ||
1577 | | mov RD, 1+3 | 1634 | | mov RD, 1+3 |
1578 | | jmp ->fff_res | 1635 | | jmp ->fff_res |
1579 | | | 1636 | | |
@@ -1804,11 +1861,25 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
1804 | | | 1861 | | |
1805 | |//-- Math library ------------------------------------------------------- | 1862 | |//-- Math library ------------------------------------------------------- |
1806 | | | 1863 | | |
1807 | |.ffunc_n math_abs | 1864 | if (sse) { |
1808 | | fabs | 1865 | |->fff_resn: |
1809 | | // fallthrough | 1866 | | fstp qword [RA-8] |
1810 | |->fff_resn: | 1867 | | jmp ->fff_res1 |
1811 | | fstp qword [RA-8] | 1868 | | |
1869 | |.ffunc_nsse math_abs | ||
1870 | | sseconst_abs xmm1, RDa | ||
1871 | | andps xmm0, xmm1 | ||
1872 | |->fff_resxmm0: | ||
1873 | | movsd qword [RA-8], xmm0 | ||
1874 | | // fallthrough | ||
1875 | } else { | ||
1876 | |.ffunc_n math_abs | ||
1877 | | fabs | ||
1878 | | // fallthrough | ||
1879 | |->fff_resxmm0: // Dummy. | ||
1880 | |->fff_resn: | ||
1881 | | fstp qword [RA-8] | ||
1882 | } | ||
1812 | |->fff_res1: | 1883 | |->fff_res1: |
1813 | | mov RD, 1+1 | 1884 | | mov RD, 1+1 |
1814 | |->fff_res: | 1885 | |->fff_res: |
@@ -1832,10 +1903,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
1832 | | mov RA, -8 // Results start at BASE+RA = BASE-8. | 1903 | | mov RA, -8 // Results start at BASE+RA = BASE-8. |
1833 | | jmp ->vm_return | 1904 | | jmp ->vm_return |
1834 | | | 1905 | | |
1835 | |.ffunc_n math_floor; call ->vm_floor; jmp ->fff_resn | 1906 | if (sse) { |
1836 | |.ffunc_n math_ceil; call ->vm_ceil; jmp ->fff_resn | 1907 | |.ffunc_nsse math_sqrt, sqrtsd; jmp ->fff_resxmm0 |
1837 | | | 1908 | |.ffunc_nsse math_floor; call ->vm_floor; jmp ->fff_resxmm0 |
1838 | |.ffunc_n math_sqrt; fsqrt; jmp ->fff_resn | 1909 | |.ffunc_nsse math_ceil; call ->vm_ceil; jmp ->fff_resxmm0 |
1910 | } else { | ||
1911 | |.ffunc_n math_sqrt; fsqrt; jmp ->fff_resn | ||
1912 | |.ffunc_n math_floor; call ->vm_floor; jmp ->fff_resn | ||
1913 | |.ffunc_n math_ceil; call ->vm_ceil; jmp ->fff_resn | ||
1914 | } | ||
1839 | | | 1915 | | |
1840 | |.ffunc_n math_log, fldln2; fyl2x; jmp ->fff_resn | 1916 | |.ffunc_n math_log, fldln2; fyl2x; jmp ->fff_resn |
1841 | |.ffunc_n math_log10, fldlg2; fyl2x; jmp ->fff_resn | 1917 | |.ffunc_n math_log10, fldlg2; fyl2x; jmp ->fff_resn |
@@ -1854,14 +1930,27 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
1854 | |.ffunc_n math_atan; fld1; fpatan; jmp ->fff_resn | 1930 | |.ffunc_n math_atan; fld1; fpatan; jmp ->fff_resn |
1855 | | | 1931 | | |
1856 | |.macro math_extern, func | 1932 | |.macro math_extern, func |
1857 | |.ffunc_n math_ .. func | 1933 | ||if (sse) { |
1934 | | .ffunc_nsse math_ .. func | ||
1935 | | .if not X64 | ||
1936 | | movsd FPARG1, xmm0 | ||
1937 | | .endif | ||
1938 | ||} else { | ||
1939 | | .if not X64 | ||
1940 | | .ffunc_n math_ .. func | ||
1941 | | fstp FPARG1 | ||
1942 | | .endif | ||
1943 | ||} | ||
1858 | | mov TMP1, RA | 1944 | | mov TMP1, RA |
1859 | | fstp FPARG1 | ||
1860 | | mov RB, BASE | 1945 | | mov RB, BASE |
1861 | | call extern lj_wrapper_ .. func | 1946 | | call extern lj_wrapper_ .. func |
1862 | | mov RA, TMP1 | 1947 | | mov RA, TMP1 |
1863 | | mov BASE, RB | 1948 | | mov BASE, RB |
1864 | | jmp ->fff_resn | 1949 | | .if X64 |
1950 | | jmp ->fff_resxmm0 | ||
1951 | | .else | ||
1952 | | jmp ->fff_resn | ||
1953 | | .endif | ||
1865 | |.endmacro | 1954 | |.endmacro |
1866 | | | 1955 | | |
1867 | | math_extern sinh | 1956 | | math_extern sinh |
@@ -1869,7 +1958,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
1869 | | math_extern tanh | 1958 | | math_extern tanh |
1870 | | | 1959 | | |
1871 | |->ff_math_deg: | 1960 | |->ff_math_deg: |
1872 | |.ffunc_n math_rad; fmul qword CFUNC:RB->upvalue[0]; jmp ->fff_resn | 1961 | if (sse) { |
1962 | |.ffunc_nsse math_rad | ||
1963 | | mulsd xmm0, qword CFUNC:RB->upvalue[0] | ||
1964 | | jmp ->fff_resxmm0 | ||
1965 | } else { | ||
1966 | |.ffunc_n math_rad | ||
1967 | | fmul qword CFUNC:RB->upvalue[0] | ||
1968 | | jmp ->fff_resn | ||
1969 | } | ||
1873 | | | 1970 | | |
1874 | |.ffunc_nn math_atan2; fpatan; jmp ->fff_resn | 1971 | |.ffunc_nn math_atan2; fpatan; jmp ->fff_resn |
1875 | |.ffunc_nnr math_ldexp; fscale; fpop1; jmp ->fff_resn | 1972 | |.ffunc_nnr math_ldexp; fscale; fpop1; jmp ->fff_resn |
@@ -1885,31 +1982,64 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
1885 | | cmp RB, 0x00200000; jb >4 | 1982 | | cmp RB, 0x00200000; jb >4 |
1886 | |1: | 1983 | |1: |
1887 | | shr RB, 21; sub RB, RC // Extract and unbias exponent. | 1984 | | shr RB, 21; sub RB, RC // Extract and unbias exponent. |
1888 | | mov TMP1, RB; fild TMP1 | 1985 | if (sse) { |
1986 | | cvtsi2sd xmm0, RB | ||
1987 | } else { | ||
1988 | | mov TMP1, RB; fild TMP1 | ||
1989 | } | ||
1889 | | mov RB, [RA-4] | 1990 | | mov RB, [RA-4] |
1890 | | and RB, 0x800fffff // Mask off exponent. | 1991 | | and RB, 0x800fffff // Mask off exponent. |
1891 | | or RB, 0x3fe00000 // Put mantissa in range [0.5,1) or 0. | 1992 | | or RB, 0x3fe00000 // Put mantissa in range [0.5,1) or 0. |
1892 | | mov [RA-4], RB | 1993 | | mov [RA-4], RB |
1893 | |2: | 1994 | |2: |
1894 | | fstp qword [RA] | 1995 | if (sse) { |
1996 | | movsd qword [RA], xmm0 | ||
1997 | } else { | ||
1998 | | fstp qword [RA] | ||
1999 | } | ||
1895 | | mov RD, 1+2 | 2000 | | mov RD, 1+2 |
1896 | | jmp ->fff_res | 2001 | | jmp ->fff_res |
1897 | |3: // Return +-0, +-Inf, NaN unmodified and an exponent of 0. | 2002 | |3: // Return +-0, +-Inf, NaN unmodified and an exponent of 0. |
1898 | | fldz; jmp <2 | 2003 | if (sse) { |
2004 | | xorps xmm0, xmm0; jmp <2 | ||
2005 | } else { | ||
2006 | | fldz; jmp <2 | ||
2007 | } | ||
1899 | |4: // Handle denormals by multiplying with 2^54 and adjusting the bias. | 2008 | |4: // Handle denormals by multiplying with 2^54 and adjusting the bias. |
1900 | | fld qword [RA] | 2009 | if (sse) { |
1901 | | mov TMP1, 0x5a800000; fmul TMP1 // x = x*2^54 | 2010 | | movsd xmm0, qword [RA] |
1902 | | fstp qword [RA-8] | 2011 | | sseconst_hi xmm1, RBa, 43500000 // 2^54. |
2012 | | mulsd xmm0, xmm1 | ||
2013 | | movsd qword [RA-8], xmm0 | ||
2014 | } else { | ||
2015 | | fld qword [RA] | ||
2016 | | mov TMP1, 0x5a800000; fmul TMP1 // x = x*2^54 | ||
2017 | | fstp qword [RA-8] | ||
2018 | } | ||
1903 | | mov RB, [RA-4]; mov RC, 1076; shl RB, 1; jmp <1 | 2019 | | mov RB, [RA-4]; mov RC, 1076; shl RB, 1; jmp <1 |
1904 | | | 2020 | | |
1905 | |.ffunc_n math_modf | 2021 | if (sse) { |
2022 | |.ffunc_nsse math_modf | ||
2023 | } else { | ||
2024 | |.ffunc_n math_modf | ||
2025 | } | ||
1906 | | mov RB, [RA+4] | 2026 | | mov RB, [RA+4] |
1907 | | shl RB, 1; cmp RB, 0xffe00000; je >4 // +-Inf? | 2027 | | shl RB, 1; cmp RB, 0xffe00000; je >4 // +-Inf? |
1908 | | fdup | 2028 | if (sse) { |
1909 | | call ->vm_trunc | 2029 | | movaps xmm4, xmm0 |
1910 | | fsub st1, st0 | 2030 | | call ->vm_trunc |
1911 | |1: | 2031 | | subsd xmm4, xmm0 |
1912 | | fstp qword [RA-8]; fstp qword [RA] | 2032 | |1: |
2033 | | movsd qword [RA-8], xmm0 | ||
2034 | | movsd qword [RA], xmm4 | ||
2035 | } else { | ||
2036 | | fdup | ||
2037 | | call ->vm_trunc | ||
2038 | | fsub st1, st0 | ||
2039 | |1: | ||
2040 | | fstp qword [RA-8] | ||
2041 | | fstp qword [RA] | ||
2042 | } | ||
1913 | | mov RC, [RA-4]; mov RB, [RA+4] | 2043 | | mov RC, [RA-4]; mov RB, [RA+4] |
1914 | | xor RC, RB; js >3 // Need to adjust sign? | 2044 | | xor RC, RB; js >3 // Need to adjust sign? |
1915 | |2: | 2045 | |2: |
@@ -1918,20 +2048,41 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
1918 | |3: | 2048 | |3: |
1919 | | xor RB, 0x80000000; mov [RA+4], RB; jmp <2 // Flip sign of fraction. | 2049 | | xor RB, 0x80000000; mov [RA+4], RB; jmp <2 // Flip sign of fraction. |
1920 | |4: | 2050 | |4: |
1921 | | fldz; fxch; jmp <1 // Return +-Inf and +-0. | 2051 | if (sse) { |
2052 | | xorps xmm4, xmm4; jmp <1 // Return +-Inf and +-0. | ||
2053 | } else { | ||
2054 | | fldz; fxch; jmp <1 // Return +-Inf and +-0. | ||
2055 | } | ||
1922 | | | 2056 | | |
1923 | |.ffunc_nnr math_fmod | 2057 | |.ffunc_nnr math_fmod |
1924 | |1: ; fprem; fnstsw ax; sahf; jp <1 | 2058 | |1: ; fprem; fnstsw ax; sahf; jp <1 |
1925 | | fpop1 | 2059 | | fpop1 |
1926 | | jmp ->fff_resn | 2060 | | jmp ->fff_resn |
1927 | | | 2061 | | |
1928 | |.ffunc_nn math_pow; call ->vm_pow; jmp ->fff_resn | 2062 | if (0 && sse) { // NYI |
2063 | |.ffunc_nnsse math_pow; call ->vm_pow; jmp ->fff_resxmm0 | ||
2064 | } else { | ||
2065 | |.ffunc_nn math_pow; call ->vm_pow; jmp ->fff_resn | ||
2066 | } | ||
1929 | | | 2067 | | |
1930 | |.macro math_minmax, name, cmovop, nocmovop | 2068 | |.macro math_minmax, name, cmovop, nocmovop, sseop |
2069 | ||if (sse) { | ||
2070 | |.ffunc_nsse name | ||
2071 | | mov RB, 2 | ||
2072 | |1: | ||
2073 | | cmp RB, RD | ||
2074 | | jae ->fff_resxmm0 | ||
2075 | | cmp dword [RA+RB*8-4], LJ_TISNUM; ja ->fff_fallback | ||
2076 | | movsd xmm1, qword [RA+RB*8-8] | ||
2077 | | sseop xmm0, xmm1 | ||
2078 | | add RB, 1 | ||
2079 | | jmp <1 | ||
2080 | ||} else { | ||
1931 | |.ffunc_n name | 2081 | |.ffunc_n name |
1932 | | mov RB, 2 | 2082 | | mov RB, 2 |
1933 | |1: | 2083 | |1: |
1934 | | cmp RB, RD; jae ->fff_resn | 2084 | | cmp RB, RD |
2085 | | jae ->fff_resn | ||
1935 | | cmp dword [RA+RB*8-4], LJ_TISNUM; ja >5 | 2086 | | cmp dword [RA+RB*8-4], LJ_TISNUM; ja >5 |
1936 | | fld qword [RA+RB*8-8] | 2087 | | fld qword [RA+RB*8-8] |
1937 | ||if (cmov) { | 2088 | ||if (cmov) { |
@@ -1943,20 +2094,26 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
1943 | ||} | 2094 | ||} |
1944 | | add RB, 1 | 2095 | | add RB, 1 |
1945 | | jmp <1 | 2096 | | jmp <1 |
2097 | ||} | ||
1946 | |.endmacro | 2098 | |.endmacro |
1947 | | | 2099 | | |
1948 | | math_minmax math_min, fcmovnbe, jz | 2100 | | math_minmax math_min, fcmovnbe, jz, minsd |
1949 | | math_minmax math_max, fcmovbe, jnz | 2101 | | math_minmax math_max, fcmovbe, jnz, maxsd |
1950 | |5: | 2102 | if (!sse) { |
1951 | | fpop; jmp ->fff_fallback | 2103 | |5: |
2104 | | fpop; jmp ->fff_fallback | ||
2105 | } | ||
1952 | | | 2106 | | |
1953 | |//-- String library ----------------------------------------------------- | 2107 | |//-- String library ----------------------------------------------------- |
1954 | | | 2108 | | |
1955 | |.ffunc_1 string_len | 2109 | |.ffunc_1 string_len |
1956 | | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback | 2110 | | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback |
1957 | | mov STR:RB, [RA] | 2111 | | mov STR:RB, [RA] |
1958 | | fild dword STR:RB->len | 2112 | if (sse) { |
1959 | | jmp ->fff_resn | 2113 | | cvtsi2sd xmm0, dword STR:RB->len; jmp ->fff_resxmm0 |
2114 | } else { | ||
2115 | | fild dword STR:RB->len; jmp ->fff_resn | ||
2116 | } | ||
1960 | | | 2117 | | |
1961 | |.ffunc string_byte // Only handle the 1-arg case here. | 2118 | |.ffunc string_byte // Only handle the 1-arg case here. |
1962 | | cmp NARGS:RC, 1+1; jne ->fff_fallback | 2119 | | cmp NARGS:RC, 1+1; jne ->fff_fallback |
@@ -1965,17 +2122,25 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
1965 | | cmp dword STR:RB->len, 1 | 2122 | | cmp dword STR:RB->len, 1 |
1966 | | jb ->fff_res0 // Return no results for empty string. | 2123 | | jb ->fff_res0 // Return no results for empty string. |
1967 | | movzx RB, byte STR:RB[1] | 2124 | | movzx RB, byte STR:RB[1] |
1968 | | mov TMP1, RB | 2125 | if (sse) { |
1969 | | fild TMP1 | 2126 | | cvtsi2sd xmm0, RB; jmp ->fff_resxmm0 |
1970 | | jmp ->fff_resn | 2127 | } else { |
2128 | | mov TMP1, RB; fild TMP1; jmp ->fff_resn | ||
2129 | } | ||
1971 | | | 2130 | | |
1972 | |.ffunc string_char // Only handle the 1-arg case here. | 2131 | |.ffunc string_char // Only handle the 1-arg case here. |
1973 | | ffgccheck | 2132 | | ffgccheck |
1974 | | cmp NARGS:RC, 1+1; jne ->fff_fallback // *Exactly* 1 arg. | 2133 | | cmp NARGS:RC, 1+1; jne ->fff_fallback // *Exactly* 1 arg. |
1975 | | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback | 2134 | | cmp dword [RA+4], LJ_TISNUM; ja ->fff_fallback |
1976 | | fld qword [RA] | 2135 | if (sse) { |
1977 | | fistp TMP2 | 2136 | | cvtsd2si RC, qword [RA] |
1978 | | cmp TMP2, 255; ja ->fff_fallback | 2137 | | cmp RC, 255; ja ->fff_fallback |
2138 | | mov TMP2, RC | ||
2139 | } else { | ||
2140 | | fld qword [RA] | ||
2141 | | fistp TMP2 | ||
2142 | | cmp TMP2, 255; ja ->fff_fallback | ||
2143 | } | ||
1979 | | lea RC, TMP2 // Little-endian. | 2144 | | lea RC, TMP2 // Little-endian. |
1980 | | mov TMP1, RA // Save RA. | 2145 | | mov TMP1, RA // Save RA. |
1981 | | mov ARG3, 1 | 2146 | | mov ARG3, 1 |
@@ -2000,16 +2165,26 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
2000 | | cmp NARGS:RC, 1+2; jb ->fff_fallback | 2165 | | cmp NARGS:RC, 1+2; jb ->fff_fallback |
2001 | | jna >1 | 2166 | | jna >1 |
2002 | | cmp dword [RA+20], LJ_TISNUM; ja ->fff_fallback | 2167 | | cmp dword [RA+20], LJ_TISNUM; ja ->fff_fallback |
2003 | | fld qword [RA+16] | 2168 | if (sse) { |
2004 | | fistp TMP2 | 2169 | | cvtsd2si RB, qword [RA+16] |
2170 | | mov TMP2, RB | ||
2171 | } else { | ||
2172 | | fld qword [RA+16] | ||
2173 | | fistp TMP2 | ||
2174 | } | ||
2005 | |1: | 2175 | |1: |
2006 | | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback | 2176 | | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback |
2007 | | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback | 2177 | | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback |
2008 | | mov STR:RB, [RA] | 2178 | | mov STR:RB, [RA] |
2009 | | mov ARG2, STR:RB | 2179 | | mov ARG2, STR:RB |
2010 | | mov RB, STR:RB->len | 2180 | | mov RB, STR:RB->len |
2011 | | fld qword [RA+8] | 2181 | if (sse) { |
2012 | | fistp ARG3 | 2182 | | cvtsd2si RC, qword [RA+8] |
2183 | | mov ARG3, RC | ||
2184 | } else { | ||
2185 | | fld qword [RA+8] | ||
2186 | | fistp ARG3 | ||
2187 | } | ||
2013 | | mov RC, TMP2 | 2188 | | mov RC, TMP2 |
2014 | | cmp RB, RC // len < end? (unsigned compare) | 2189 | | cmp RB, RC // len < end? (unsigned compare) |
2015 | | jb >5 | 2190 | | jb >5 |
@@ -2055,9 +2230,13 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
2055 | | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback | 2230 | | cmp dword [RA+4], LJ_TSTR; jne ->fff_fallback |
2056 | | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback | 2231 | | cmp dword [RA+12], LJ_TISNUM; ja ->fff_fallback |
2057 | | mov STR:RB, [RA] | 2232 | | mov STR:RB, [RA] |
2058 | | fld qword [RA+8] | 2233 | if (sse) { |
2059 | | fistp TMP2 | 2234 | | cvtsd2si RC, qword [RA+8] |
2060 | | mov RC, TMP2 | 2235 | } else { |
2236 | | fld qword [RA+8] | ||
2237 | | fistp TMP2 | ||
2238 | | mov RC, TMP2 | ||
2239 | } | ||
2061 | | test RC, RC | 2240 | | test RC, RC |
2062 | | jle ->fff_emptystr // Count <= 0? (or non-int) | 2241 | | jle ->fff_emptystr // Count <= 0? (or non-int) |
2063 | | cmp dword STR:RB->len, 1 | 2242 | | cmp dword STR:RB->len, 1 |
@@ -2140,43 +2319,73 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
2140 | | mov TAB:FCARG1, [RA] // Caveat: FCARG1 == RA | 2319 | | mov TAB:FCARG1, [RA] // Caveat: FCARG1 == RA |
2141 | | call extern lj_tab_len@4 // LJ_FASTCALL (GCtab *t) | 2320 | | call extern lj_tab_len@4 // LJ_FASTCALL (GCtab *t) |
2142 | | // Length of table returned in eax (RC). | 2321 | | // Length of table returned in eax (RC). |
2143 | | mov ARG1, RC | ||
2144 | | mov RA, RB // Restore RA and BASE. | 2322 | | mov RA, RB // Restore RA and BASE. |
2145 | | mov BASE, TMP1 | 2323 | | mov BASE, TMP1 |
2146 | | fild ARG1 | 2324 | if (sse) { |
2147 | | jmp ->fff_resn | 2325 | | cvtsi2sd xmm0, RC; jmp ->fff_resxmm0 |
2326 | } else { | ||
2327 | | mov ARG1, RC; fild ARG1; jmp ->fff_resn | ||
2328 | } | ||
2148 | | | 2329 | | |
2149 | |//-- Bit library -------------------------------------------------------- | 2330 | |//-- Bit library -------------------------------------------------------- |
2150 | | | 2331 | | |
2151 | |.define TOBIT_BIAS, 0x59c00000 // 2^52 + 2^51 (float, not double!). | 2332 | |.define TOBIT_BIAS, 0x59c00000 // 2^52 + 2^51 (float, not double!). |
2152 | | | 2333 | | |
2153 | |.ffunc_n bit_tobit | 2334 | if (sse) { |
2154 | | mov TMP1, TOBIT_BIAS | 2335 | |.ffunc_nsse bit_tobit |
2155 | | fadd TMP1 | 2336 | | sseconst_tobit xmm1, RBa |
2156 | | fstp FPARG1 // 64 bit FP store. | 2337 | | addsd xmm0, xmm1 |
2157 | | fild ARG1 // 32 bit integer load (s2lfwd ok). | 2338 | | movd RB, xmm0 |
2158 | | jmp ->fff_resn | 2339 | | cvtsi2sd xmm0, RB |
2340 | | jmp ->fff_resxmm0 | ||
2341 | } else { | ||
2342 | |.ffunc_n bit_tobit | ||
2343 | | mov TMP1, TOBIT_BIAS | ||
2344 | | fadd TMP1 | ||
2345 | | fstp FPARG1 // 64 bit FP store. | ||
2346 | | fild ARG1 // 32 bit integer load (s2lfwd ok). | ||
2347 | | jmp ->fff_resn | ||
2348 | } | ||
2159 | | | 2349 | | |
2160 | |.macro .ffunc_bit, name | 2350 | |.macro .ffunc_bit, name |
2351 | ||if (sse) { | ||
2352 | | .ffunc_nsse name | ||
2353 | | sseconst_tobit xmm1, RBa | ||
2354 | | addsd xmm0, xmm1 | ||
2355 | | movd RB, xmm0 | ||
2356 | ||} else { | ||
2161 | | .ffunc_n name | 2357 | | .ffunc_n name |
2162 | | mov TMP1, TOBIT_BIAS | 2358 | | mov TMP1, TOBIT_BIAS |
2163 | | fadd TMP1 | 2359 | | fadd TMP1 |
2164 | | fstp FPARG1 | 2360 | | fstp FPARG1 |
2165 | | mov RB, ARG1 | 2361 | | mov RB, ARG1 |
2362 | ||} | ||
2166 | |.endmacro | 2363 | |.endmacro |
2167 | | | 2364 | | |
2168 | |.macro .ffunc_bit_op, name, ins | 2365 | |.macro .ffunc_bit_op, name, ins |
2169 | | .ffunc_bit name | 2366 | | .ffunc_bit name |
2170 | | mov NRESULTS, NARGS:RC // Save for fallback. | 2367 | | mov TMP2, NARGS:RC // Save for fallback. |
2171 | | lea RC, [RA+NARGS:RC*8-16] | 2368 | | lea RC, [RA+NARGS:RC*8-16] |
2369 | ||if (sse) { | ||
2370 | | mov TMP1, BASE // Need BASE as a scratch register. | ||
2371 | ||} | ||
2172 | |1: | 2372 | |1: |
2173 | | cmp RC, RA | 2373 | | cmp RC, RA |
2174 | | jbe ->fff_resbit | 2374 | | jbe ->fff_resbit_op |
2175 | | cmp dword [RC+4], LJ_TISNUM; ja ->fff_fallback_bit_op | 2375 | | cmp dword [RC+4], LJ_TISNUM; ja ->fff_fallback_bit_op |
2376 | ||if (sse) { | ||
2377 | | movsd xmm0, qword [RC] | ||
2378 | | addsd xmm0, xmm1 | ||
2379 | | movd BASE, xmm0 | ||
2380 | | ins RB, BASE | ||
2381 | ||} else { | ||
2382 | |.if not X64 | ||
2176 | | fld qword [RC] | 2383 | | fld qword [RC] |
2177 | | fadd TMP1 | 2384 | | fadd TMP1 |
2178 | | fstp FPARG1 | 2385 | | fstp FPARG1 |
2179 | | ins RB, ARG1 | 2386 | | ins RB, ARG1 |
2387 | |.endif | ||
2388 | ||} | ||
2180 | | sub RC, 8 | 2389 | | sub RC, 8 |
2181 | | jmp <1 | 2390 | | jmp <1 |
2182 | |.endmacro | 2391 | |.endmacro |
@@ -2191,16 +2400,39 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
2191 | | | 2400 | | |
2192 | |.ffunc_bit bit_bnot | 2401 | |.ffunc_bit bit_bnot |
2193 | | not RB | 2402 | | not RB |
2194 | |->fff_resbit: | 2403 | if (sse) { |
2195 | | mov ARG1, RB | 2404 | |->fff_resbit: |
2196 | | fild ARG1 | 2405 | | cvtsi2sd xmm0, RB |
2197 | | jmp ->fff_resn | 2406 | | jmp ->fff_resxmm0 |
2407 | |->fff_resbit_op: | ||
2408 | | cvtsi2sd xmm0, RB | ||
2409 | | mov BASE, TMP1 | ||
2410 | | jmp ->fff_resxmm0 | ||
2411 | } else { | ||
2412 | |->fff_resbit: | ||
2413 | |->fff_resbit_op: | ||
2414 | | mov ARG1, RB | ||
2415 | | fild ARG1 | ||
2416 | | jmp ->fff_resn | ||
2417 | } | ||
2198 | | | 2418 | | |
2199 | |->fff_fallback_bit_op: | 2419 | |->fff_fallback_bit_op: |
2200 | | mov NARGS:RC, NRESULTS // Restore for fallback | 2420 | if (sse) { |
2421 | | mov BASE, TMP1 | ||
2422 | } | ||
2423 | | mov NARGS:RC, TMP2 // Restore for fallback | ||
2201 | | jmp ->fff_fallback | 2424 | | jmp ->fff_fallback |
2202 | | | 2425 | | |
2203 | |.macro .ffunc_bit_sh, name, ins | 2426 | |.macro .ffunc_bit_sh, name, ins |
2427 | ||if (sse) { | ||
2428 | | .ffunc_nnsse name | ||
2429 | | sseconst_tobit xmm2, RBa | ||
2430 | | addsd xmm0, xmm2 | ||
2431 | | addsd xmm1, xmm2 | ||
2432 | | mov RC, RA // Assumes RA is ecx. | ||
2433 | | movd RB, xmm0 | ||
2434 | | movd RA, xmm1 | ||
2435 | ||} else { | ||
2204 | | .ffunc_nn name | 2436 | | .ffunc_nn name |
2205 | | mov TMP1, TOBIT_BIAS | 2437 | | mov TMP1, TOBIT_BIAS |
2206 | | fadd TMP1 | 2438 | | fadd TMP1 |
@@ -2210,6 +2442,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
2210 | | mov RC, RA // Assumes RA is ecx. | 2442 | | mov RC, RA // Assumes RA is ecx. |
2211 | | mov RA, ARG3 | 2443 | | mov RA, ARG3 |
2212 | | mov RB, ARG1 | 2444 | | mov RB, ARG1 |
2445 | ||} | ||
2213 | | ins RB, cl | 2446 | | ins RB, cl |
2214 | | mov RA, RC | 2447 | | mov RA, RC |
2215 | | jmp ->fff_resbit | 2448 | | jmp ->fff_resbit |
@@ -2461,8 +2694,10 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
2461 | |//----------------------------------------------------------------------- | 2694 | |//----------------------------------------------------------------------- |
2462 | | | 2695 | | |
2463 | |// FP value rounding. Called by math.floor/math.ceil fast functions | 2696 | |// FP value rounding. Called by math.floor/math.ceil fast functions |
2464 | |// and from JIT code. Arg/ret on x87 stack. No int/xmm registers modified. | 2697 | |// and from JIT code. |
2465 | |.macro vm_round, mode1, mode2 | 2698 | | |
2699 | |// x87 variant: Arg/ret on x87 stack. No int/xmm registers modified. | ||
2700 | |.macro vm_round_x87, mode1, mode2 | ||
2466 | | fnstcw word [esp+4] // Caveat: overwrites ARG1 and ARG2. | 2701 | | fnstcw word [esp+4] // Caveat: overwrites ARG1 and ARG2. |
2467 | | mov [esp+8], eax | 2702 | | mov [esp+8], eax |
2468 | | mov ax, mode1 | 2703 | | mov ax, mode1 |
@@ -2478,14 +2713,55 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
2478 | | ret | 2713 | | ret |
2479 | |.endmacro | 2714 | |.endmacro |
2480 | | | 2715 | | |
2481 | |->vm_floor: | 2716 | |// SSE variant: arg/ret is xmm0. xmm0-xmm3 and RD (eax) modified. |
2482 | | vm_round 0x0400, 0xf7ff | 2717 | |.macro vm_round_sse, mode |
2718 | | sseconst_abs xmm2, RDa | ||
2719 | | sseconst_2p52 xmm3, RDa | ||
2720 | | movaps xmm1, xmm0 | ||
2721 | | andpd xmm1, xmm2 // |x| | ||
2722 | | ucomisd xmm3, xmm1 // No truncation if 2^52 <= |x|. | ||
2723 | | jbe >1 | ||
2724 | | andnpd xmm2, xmm0 // Isolate sign bit. | ||
2725 | |.if mode == 2 // trunc(x)? | ||
2726 | | movaps xmm0, xmm1 | ||
2727 | | addsd xmm1, xmm3 // (|x| + 2^52) - 2^52 | ||
2728 | | subsd xmm1, xmm3 | ||
2729 | | sseconst_1 xmm3, RDa | ||
2730 | | cmpsd xmm0, xmm1, 1 // |x| < result? | ||
2731 | | andpd xmm0, xmm3 | ||
2732 | | subsd xmm1, xmm0 // If yes, subtract -1. | ||
2733 | | orpd xmm1, xmm2 // Merge sign bit back in. | ||
2734 | |.else | ||
2735 | | addsd xmm1, xmm3 // (|x| + 2^52) - 2^52 | ||
2736 | | subsd xmm1, xmm3 | ||
2737 | | orpd xmm1, xmm2 // Merge sign bit back in. | ||
2738 | | .if mode == 1 // ceil(x)? | ||
2739 | | sseconst_m1 xmm2, RDa // Must subtract -1 to preserve -0. | ||
2740 | | cmpsd xmm0, xmm1, 6 // x > result? | ||
2741 | | .else // floor(x)? | ||
2742 | | sseconst_1 xmm2, RDa | ||
2743 | | cmpsd xmm0, xmm1, 1 // x < result? | ||
2744 | | .endif | ||
2745 | | andpd xmm0, xmm2 | ||
2746 | | subsd xmm1, xmm0 // If yes, subtract +-1. | ||
2747 | |.endif | ||
2748 | | movaps xmm0, xmm1 | ||
2749 | |1: | ||
2750 | | ret | ||
2751 | |.endmacro | ||
2483 | | | 2752 | | |
2484 | |->vm_ceil: | 2753 | |.macro vm_round, name, ssemode, mode1, mode2 |
2485 | | vm_round 0x0800, 0xfbff | 2754 | |->name: |
2755 | ||if (!sse) { | ||
2756 | | vm_round_x87 mode1, mode2 | ||
2757 | ||} | ||
2758 | |->name .. _sse: | ||
2759 | | vm_round_sse ssemode | ||
2760 | |.endmacro | ||
2486 | | | 2761 | | |
2487 | |->vm_trunc: | 2762 | | vm_round vm_floor, 0, 0x0400, 0xf7ff |
2488 | | vm_round 0x0c00, 0xffff | 2763 | | vm_round vm_ceil, 1, 0x0800, 0xfbff |
2764 | | vm_round vm_trunc, 2, 0x0c00, 0xffff | ||
2489 | | | 2765 | | |
2490 | |// FP modulo x%y. Called by BC_MOD* and vm_arith. | 2766 | |// FP modulo x%y. Called by BC_MOD* and vm_arith. |
2491 | |->vm_mod: | 2767 | |->vm_mod: |
@@ -2532,8 +2808,8 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
2532 | | fldcw word [esp+4] | 2808 | | fldcw word [esp+4] |
2533 | | fmulp st1 | 2809 | | fmulp st1 |
2534 | | fsubp st1 | 2810 | | fsubp st1 |
2811 | | ret | ||
2535 | } | 2812 | } |
2536 | | ret | ||
2537 | | | 2813 | | |
2538 | |// FP exponentiation e^x and 2^x. Called by math.exp fast function and | 2814 | |// FP exponentiation e^x and 2^x. Called by math.exp fast function and |
2539 | |// from JIT code. Arg/ret on x87 stack. No int/xmm regs modified. | 2815 | |// from JIT code. Arg/ret on x87 stack. No int/xmm regs modified. |
@@ -2662,19 +2938,51 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
2662 | |// Callable from C: double lj_vm_foldfpm(double x, int fpm) | 2938 | |// Callable from C: double lj_vm_foldfpm(double x, int fpm) |
2663 | |// Computes fpm(x) for extended math functions. ORDER FPM. | 2939 | |// Computes fpm(x) for extended math functions. ORDER FPM. |
2664 | |->vm_foldfpm: | 2940 | |->vm_foldfpm: |
2665 | | mov eax, [esp+12] | 2941 | if (sse) { |
2666 | | fld qword [esp+4] | 2942 | |.if X64WIN |
2667 | | cmp eax, 1; jb ->vm_floor; je ->vm_ceil | 2943 | | .define fpmop, CARG2d |
2668 | | cmp eax, 3; jb ->vm_trunc; ja >1 | 2944 | |.elif X64 |
2669 | | fsqrt; ret | 2945 | | .define fpmop, CARG1d |
2670 | |1: ; cmp eax, 5; jb ->vm_exp; je ->vm_exp2 | 2946 | |.else |
2671 | | cmp eax, 7; je >1; ja >2 | 2947 | | .define fpmop, eax |
2948 | | mov fpmop, [esp+12] | ||
2949 | | movsd xmm0, qword [esp+4] | ||
2950 | |.endif | ||
2951 | |.if X64 | ||
2952 | | cmp fpmop, 1; jb ->vm_floor; je ->vm_ceil | ||
2953 | | cmp fpmop, 3; jb ->vm_trunc; ja >2 | ||
2954 | | sqrtsd xmm0, xmm0; ret | ||
2955 | |.else | ||
2956 | | cmp fpmop, 1; je >1; ja >2 | ||
2957 | | call ->vm_floor; jmp >7 | ||
2958 | |1: ; call ->vm_ceil; jmp >7 | ||
2959 | |2: ; cmp fpmop, 3; je >1; ja >2 | ||
2960 | | call ->vm_trunc; jmp >7 | ||
2961 | |1: | ||
2962 | | sqrtsd xmm0, xmm0 | ||
2963 | |7: | ||
2964 | | movsd qword [esp+4], xmm0 // Overwrite callee-owned args. | ||
2965 | | fld qword [esp+4] | ||
2966 | | ret | ||
2967 | |.endif | ||
2968 | |2: | ||
2969 | | fld qword [esp+4] | ||
2970 | } else { | ||
2971 | | mov fpmop, [esp+12] | ||
2972 | | fld qword [esp+4] | ||
2973 | | cmp fpmop, 1; jb ->vm_floor; je ->vm_ceil | ||
2974 | | cmp fpmop, 3; jb ->vm_trunc; ja >2 | ||
2975 | | fsqrt; ret | ||
2976 | |2: | ||
2977 | } | ||
2978 | | cmp fpmop, 5; jb ->vm_exp; je ->vm_exp2 | ||
2979 | | cmp fpmop, 7; je >1; ja >2 | ||
2672 | | fldln2; fxch; fyl2x; ret | 2980 | | fldln2; fxch; fyl2x; ret |
2673 | |1: ; fld1; fxch; fyl2x; ret | 2981 | |1: ; fld1; fxch; fyl2x; ret |
2674 | |2: ; cmp eax, 9; je >1; ja >2 | 2982 | |2: ; cmp fpmop, 9; je >1; ja >2 |
2675 | | fldlg2; fxch; fyl2x; ret | 2983 | | fldlg2; fxch; fyl2x; ret |
2676 | |1: ; fsin; ret | 2984 | |1: ; fsin; ret |
2677 | |2: ; cmp eax, 11; je >1; ja >9 | 2985 | |2: ; cmp fpmop, 11; je >1; ja >9 |
2678 | | fcos; ret | 2986 | | fcos; ret |
2679 | |1: ; fptan; fpop; ret | 2987 | |1: ; fptan; fpop; ret |
2680 | |9: ; int3 // Bad fpm. | 2988 | |9: ; int3 // Bad fpm. |
@@ -3198,14 +3506,25 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
3198 | break; | 3506 | break; |
3199 | case BC_KSHORT: | 3507 | case BC_KSHORT: |
3200 | | ins_AD // RA = dst, RD = signed int16 literal | 3508 | | ins_AD // RA = dst, RD = signed int16 literal |
3201 | | fild PC_RD // Refetch signed RD from instruction. | 3509 | if (sse) { |
3202 | | fstp qword [BASE+RA*8] | 3510 | | movsx RD, RDW // Sign-extend literal. |
3511 | | cvtsi2sd xmm0, RD | ||
3512 | | movsd qword [BASE+RA*8], xmm0 | ||
3513 | } else { | ||
3514 | | fild PC_RD // Refetch signed RD from instruction. | ||
3515 | | fstp qword [BASE+RA*8] | ||
3516 | } | ||
3203 | | ins_next | 3517 | | ins_next |
3204 | break; | 3518 | break; |
3205 | case BC_KNUM: | 3519 | case BC_KNUM: |
3206 | | ins_AD // RA = dst, RD = num const | 3520 | | ins_AD // RA = dst, RD = num const |
3207 | | fld qword [KBASE+RD*8] | 3521 | if (sse) { |
3208 | | fstp qword [BASE+RA*8] | 3522 | | movsd xmm0, qword [KBASE+RD*8] |
3523 | | movsd qword [BASE+RA*8], xmm0 | ||
3524 | } else { | ||
3525 | | fld qword [KBASE+RD*8] | ||
3526 | | fstp qword [BASE+RA*8] | ||
3527 | } | ||
3209 | | ins_next | 3528 | | ins_next |
3210 | break; | 3529 | break; |
3211 | case BC_KPRI: | 3530 | case BC_KPRI: |
@@ -3307,10 +3626,18 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
3307 | case BC_USETN: | 3626 | case BC_USETN: |
3308 | | ins_AD // RA = upvalue #, RD = num const | 3627 | | ins_AD // RA = upvalue #, RD = num const |
3309 | | mov LFUNC:RB, [BASE-8] | 3628 | | mov LFUNC:RB, [BASE-8] |
3310 | | fld qword [KBASE+RD*8] | 3629 | if (sse) { |
3630 | | movsd xmm0, qword [KBASE+RD*8] | ||
3631 | } else { | ||
3632 | | fld qword [KBASE+RD*8] | ||
3633 | } | ||
3311 | | mov UPVAL:RB, [LFUNC:RB+RA*4+offsetof(GCfuncL, uvptr)] | 3634 | | mov UPVAL:RB, [LFUNC:RB+RA*4+offsetof(GCfuncL, uvptr)] |
3312 | | mov RA, UPVAL:RB->v | 3635 | | mov RA, UPVAL:RB->v |
3313 | | fstp qword [RA] | 3636 | if (sse) { |
3637 | | movsd qword [RA], xmm0 | ||
3638 | } else { | ||
3639 | | fstp qword [RA] | ||
3640 | } | ||
3314 | | ins_next | 3641 | | ins_next |
3315 | break; | 3642 | break; |
3316 | case BC_USETP: | 3643 | case BC_USETP: |
@@ -3438,11 +3765,20 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
3438 | | | 3765 | | |
3439 | | // Integer key? Convert number to int and back and compare. | 3766 | | // Integer key? Convert number to int and back and compare. |
3440 | | checknum RC, >5 | 3767 | | checknum RC, >5 |
3441 | | fld qword [BASE+RC*8] | 3768 | if (sse) { |
3442 | | fist ARG1 | 3769 | | movsd xmm0, qword [BASE+RC*8] |
3443 | | fild ARG1 | 3770 | | cvtsd2si RC, xmm0 |
3444 | | fcomparepp // eax (RC) modified! | 3771 | | cvtsi2sd xmm1, RC |
3445 | | mov RC, ARG1 | 3772 | | ucomisd xmm0, xmm1 |
3773 | } else { | ||
3774 | |.if not X64 | ||
3775 | | fld qword [BASE+RC*8] | ||
3776 | | fist ARG1 | ||
3777 | | fild ARG1 | ||
3778 | | fcomparepp // eax (RC) modified! | ||
3779 | | mov RC, ARG1 | ||
3780 | |.endif | ||
3781 | } | ||
3446 | | jne ->vmeta_tgetv // Generic numeric key? Use fallback. | 3782 | | jne ->vmeta_tgetv // Generic numeric key? Use fallback. |
3447 | | cmp RC, TAB:RB->asize // Takes care of unordered, too. | 3783 | | cmp RC, TAB:RB->asize // Takes care of unordered, too. |
3448 | | jae ->vmeta_tgetv // Not in array part? Use fallback. | 3784 | | jae ->vmeta_tgetv // Not in array part? Use fallback. |
@@ -3551,11 +3887,20 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
3551 | | | 3887 | | |
3552 | | // Integer key? Convert number to int and back and compare. | 3888 | | // Integer key? Convert number to int and back and compare. |
3553 | | checknum RC, >5 | 3889 | | checknum RC, >5 |
3554 | | fld qword [BASE+RC*8] | 3890 | if (sse) { |
3555 | | fist ARG1 | 3891 | | movsd xmm0, qword [BASE+RC*8] |
3556 | | fild ARG1 | 3892 | | cvtsd2si RC, xmm0 |
3557 | | fcomparepp // eax (RC) modified! | 3893 | | cvtsi2sd xmm1, RC |
3558 | | mov RC, ARG1 | 3894 | | ucomisd xmm0, xmm1 |
3895 | } else { | ||
3896 | |.if not X64 | ||
3897 | | fld qword [BASE+RC*8] | ||
3898 | | fist ARG1 | ||
3899 | | fild ARG1 | ||
3900 | | fcomparepp // eax (RC) modified! | ||
3901 | | mov RC, ARG1 | ||
3902 | |.endif | ||
3903 | } | ||
3559 | | jne ->vmeta_tsetv // Generic numeric key? Use fallback. | 3904 | | jne ->vmeta_tsetv // Generic numeric key? Use fallback. |
3560 | | cmp RC, TAB:RB->asize // Takes care of unordered, too. | 3905 | | cmp RC, TAB:RB->asize // Takes care of unordered, too. |
3561 | | jae ->vmeta_tsetv | 3906 | | jae ->vmeta_tsetv |
@@ -3626,11 +3971,11 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
3626 | |4: // Check for __newindex if previous value is nil. | 3971 | |4: // Check for __newindex if previous value is nil. |
3627 | | cmp dword TAB:RB->metatable, 0 // Shouldn't overwrite RA for fastpath. | 3972 | | cmp dword TAB:RB->metatable, 0 // Shouldn't overwrite RA for fastpath. |
3628 | | jz <2 | 3973 | | jz <2 |
3629 | | mov ARG1, RA // Save RA. | 3974 | | mov TMP1, RA // Save RA. |
3630 | | mov TAB:RA, TAB:RB->metatable | 3975 | | mov TAB:RA, TAB:RB->metatable |
3631 | | test byte TAB:RA->nomm, 1<<MM_newindex | 3976 | | test byte TAB:RA->nomm, 1<<MM_newindex |
3632 | | jz ->vmeta_tsets // 'no __newindex' flag NOT set: check. | 3977 | | jz ->vmeta_tsets // 'no __newindex' flag NOT set: check. |
3633 | | mov RA, ARG1 // Restore RA. | 3978 | | mov RA, TMP1 // Restore RA. |
3634 | | jmp <2 | 3979 | | jmp <2 |
3635 | | | 3980 | | |
3636 | |5: // Follow hash chain. | 3981 | |5: // Follow hash chain. |
@@ -3705,8 +4050,14 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
3705 | case BC_TSETM: | 4050 | case BC_TSETM: |
3706 | | ins_AD // RA = base (table at base-1), RD = num const (start index) | 4051 | | ins_AD // RA = base (table at base-1), RD = num const (start index) |
3707 | | mov TMP1, KBASE // Need one more free register. | 4052 | | mov TMP1, KBASE // Need one more free register. |
3708 | | fld qword [KBASE+RD*8] | 4053 | if (sse) { |
3709 | | fistp ARG4 // Const is guaranteed to be an int. | 4054 | | movsd xmm0, qword [KBASE+RD*8] |
4055 | } else { | ||
4056 | |.if not X64 | ||
4057 | | fld qword [KBASE+RD*8] | ||
4058 | | fistp ARG4 // Const is guaranteed to be an int. | ||
4059 | |.endif | ||
4060 | } | ||
3710 | |1: | 4061 | |1: |
3711 | | lea RA, [BASE+RA*8] | 4062 | | lea RA, [BASE+RA*8] |
3712 | | mov TAB:RB, [RA-8] // Guaranteed to be a table. | 4063 | | mov TAB:RB, [RA-8] // Guaranteed to be a table. |
@@ -3714,7 +4065,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
3714 | | jnz >7 | 4065 | | jnz >7 |
3715 | |2: | 4066 | |2: |
3716 | | mov RD, NRESULTS | 4067 | | mov RD, NRESULTS |
3717 | | mov KBASE, ARG4 | 4068 | if (sse) { |
4069 | | cvtsd2si KBASE, xmm0 // Const is guaranteed to be an int. | ||
4070 | } else { | ||
4071 | |.if not X64 | ||
4072 | | mov KBASE, ARG4 | ||
4073 | |.endif | ||
4074 | } | ||
3718 | | sub RD, 1 | 4075 | | sub RD, 1 |
3719 | | jz >4 // Nothing to copy? | 4076 | | jz >4 // Nothing to copy? |
3720 | | add RD, KBASE // Compute needed size. | 4077 | | add RD, KBASE // Compute needed size. |
@@ -4034,20 +4391,37 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
4034 | if (!vk) { | 4391 | if (!vk) { |
4035 | | cmp RB, LJ_TISNUM; ja ->vmeta_for | 4392 | | cmp RB, LJ_TISNUM; ja ->vmeta_for |
4036 | } | 4393 | } |
4037 | | fld FOR_STOP | 4394 | if (sse) { |
4038 | | fld FOR_IDX | 4395 | | movsd xmm0, FOR_IDX |
4039 | if (vk) { | 4396 | | movsd xmm1, FOR_STOP |
4040 | | fadd FOR_STEP // nidx = idx + step | 4397 | if (vk) { |
4041 | | fst FOR_IDX | 4398 | | addsd xmm0, FOR_STEP |
4042 | } | 4399 | | movsd FOR_IDX, xmm0 |
4043 | | fst FOR_EXT | 4400 | | test RB, RB; js >3 |
4044 | | test RB, RB // Swap lim/(n)idx if step non-negative. | 4401 | } else { |
4045 | | js >1 | 4402 | | jl >3 |
4046 | | fxch | 4403 | } |
4047 | |1: | 4404 | | ucomisd xmm1, xmm0 |
4048 | | fcomparepp // eax (RD) modified if !cmov. | 4405 | |1: |
4049 | if (!cmov) { | 4406 | | movsd FOR_EXT, xmm0 |
4050 | | movzx RD, PC_RD // Need to reload RD. | 4407 | } else { |
4408 | | fld FOR_STOP | ||
4409 | | fld FOR_IDX | ||
4410 | if (vk) { | ||
4411 | | fadd FOR_STEP // nidx = idx + step | ||
4412 | | fst FOR_IDX | ||
4413 | | fst FOR_EXT | ||
4414 | | test RB, RB; js >1 | ||
4415 | } else { | ||
4416 | | fst FOR_EXT | ||
4417 | | jl >1 | ||
4418 | } | ||
4419 | | fxch // Swap lim/(n)idx if step non-negative. | ||
4420 | |1: | ||
4421 | | fcomparepp // eax (RD) modified if !cmov. | ||
4422 | if (!cmov) { | ||
4423 | | movzx RD, PC_RD // Need to reload RD. | ||
4424 | } | ||
4051 | } | 4425 | } |
4052 | if (op == BC_FORI) { | 4426 | if (op == BC_FORI) { |
4053 | | jnb >2 | 4427 | | jnb >2 |
@@ -4064,6 +4438,11 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
4064 | } | 4438 | } |
4065 | |2: | 4439 | |2: |
4066 | | ins_next | 4440 | | ins_next |
4441 | if (sse) { | ||
4442 | |3: // Invert comparison if step is negative. | ||
4443 | | ucomisd xmm0, xmm1 | ||
4444 | | jmp <1 | ||
4445 | } | ||
4067 | break; | 4446 | break; |
4068 | 4447 | ||
4069 | case BC_ITERL: | 4448 | case BC_ITERL: |
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h index 1f990f09..feb94924 100644 --- a/src/buildvm_x86.h +++ b/src/buildvm_x86.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 |
15 | static const unsigned char build_actionlist[12791] = { | 15 | static const unsigned char build_actionlist[14716] = { |
16 | 254,1,248,10,137,202,139,173,233,137,114,252,252,15,182,141,233,139,181,233, | 16 | 254,1,248,10,137,202,139,173,233,137,114,252,252,15,182,141,233,139,181,233, |
17 | 139,189,233,139,108,36,48,141,12,202,141,68,194,252,252,59,141,233,15,135, | 17 | 139,189,233,139,108,36,48,141,12,202,141,68,194,252,252,59,141,233,15,135, |
18 | 244,11,248,9,189,237,248,1,137,40,137,104,8,131,192,16,57,200,15,130,244, | 18 | 244,11,248,9,189,237,248,1,137,40,137,104,8,131,192,16,57,200,15,130,244, |
@@ -70,428 +70,515 @@ static const unsigned char build_actionlist[12791] = { | |||
70 | 233,15,132,244,32,252,247,217,193,252,233,3,137,76,36,8,139,72,4,139,0,137, | 70 | 233,15,132,244,32,252,247,217,193,252,233,3,137,76,36,8,139,72,4,139,0,137, |
71 | 77,4,137,69,0,137,108,36,4,252,233,244,33,248,34,137,68,36,16,199,68,36,20, | 71 | 77,4,137,69,0,137,108,36,4,252,233,244,33,248,34,137,68,36,16,199,68,36,20, |
72 | 237,255,141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,137,41, | 72 | 237,255,141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,137,41, |
73 | 199,65,4,237,137,205,252,233,244,248,248,35,15,182,70,252,254,137,68,36,12, | 73 | 199,65,4,237,137,205,252,233,244,248,248,35,15,182,70,252,254,255,252,242, |
74 | 219,68,36,12,221,92,36,16,141,68,36,16,252,233,244,247,248,36,15,182,70,252, | 74 | 15,42,192,252,242,15,17,68,36,16,255,137,68,36,12,219,68,36,12,221,92,36, |
75 | 254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4, | 75 | 16,255,141,68,36,16,252,233,244,247,248,36,15,182,70,252,254,141,4,194,248, |
76 | 139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,1, | 76 | 1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,137, |
77 | 139,149,233,133,192,15,132,244,249,248,32,15,182,78,252,253,139,104,4,139, | 77 | 68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,1,139,149,233,133,192, |
78 | 0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16, | 78 | 15,132,244,249,248,32,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137, |
79 | 252,255,36,171,248,3,139,141,233,255,137,113,252,244,141,177,233,41,214,139, | 79 | 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, |
80 | 105,252,248,184,3,0,0,0,252,255,165,233,248,37,137,68,36,16,199,68,36,20, | 80 | 3,139,141,233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,3,0, |
81 | 237,141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199, | 81 | 0,0,252,255,165,233,248,37,137,68,36,16,199,68,36,20,237,141,68,36,16,128, |
82 | 65,4,237,137,205,252,233,244,248,248,38,15,182,70,252,254,137,68,36,12,219, | 82 | 126,252,252,235,15,133,244,247,141,139,233,255,137,41,199,65,4,237,137,205, |
83 | 68,36,12,221,92,36,16,141,68,36,16,252,233,244,247,248,39,15,182,70,252,254, | 83 | 252,233,244,248,248,38,15,182,70,252,254,255,141,68,36,16,252,233,244,247, |
84 | 141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,4,139, | 84 | 248,39,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234, |
85 | 108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,2,139, | 85 | 248,2,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116, |
86 | 149,233,133,192,15,132,244,249,255,15,182,78,252,253,139,108,202,4,139,12, | 86 | 36,24,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139, |
87 | 202,137,104,4,137,8,248,40,139,6,15,182,204,15,182,232,131,198,4,193,232, | 87 | 108,202,4,139,12,202,137,104,4,137,8,248,40,139,6,15,182,204,15,182,232,131, |
88 | 16,252,255,36,171,248,3,139,141,233,137,113,252,244,15,182,70,252,253,139, | 88 | 198,4,193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,15,182, |
89 | 108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,214,139,105,252,248, | 89 | 70,252,253,139,108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,214, |
90 | 184,4,0,0,0,252,255,165,233,248,41,15,182,110,252,252,141,4,194,141,12,202, | 90 | 139,105,252,248,184,4,0,0,0,252,255,165,233,248,41,15,182,110,252,252,141, |
91 | 137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233, | 91 | 4,194,141,12,202,137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137, |
92 | 137,116,36,24,232,251,1,3,248,3,139,149,233,131,252,248,1,15,135,244,42,248, | 92 | 44,36,137,149,233,137,116,36,24,232,251,1,3,248,3,139,149,233,131,252,248, |
93 | 4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248, | 93 | 1,15,135,244,42,248,4,255,141,118,4,15,130,244,252,248,5,15,183,70,252,254, |
94 | 6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,43, | 94 | 141,180,253,134,233,248,6,139,6,15,182,204,15,182,232,131,198,4,193,232,16, |
95 | 131,198,4,129,120,253,4,239,15,130,244,5,255,252,233,244,6,248,44,129,120, | 95 | 252,255,36,171,248,43,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244, |
96 | 253,4,239,252,233,244,4,248,45,131,252,238,4,137,108,36,12,139,108,36,48, | 96 | 6,248,44,129,120,253,4,239,252,233,244,4,248,45,131,252,238,4,137,108,36, |
97 | 137,68,36,8,137,76,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,4,252, | 97 | 12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,137,116,36, |
98 | 233,244,3,248,46,141,4,199,252,233,244,247,248,47,141,4,199,141,44,252,234, | 98 | 24,232,251,1,4,252,233,244,3,248,46,255,141,4,199,252,233,244,247,248,47, |
99 | 149,252,233,244,248,248,48,141,4,194,137,197,252,233,244,248,248,49,255,141, | 99 | 141,4,199,141,44,252,234,149,252,233,244,248,248,48,141,4,194,137,197,252, |
100 | 4,194,248,1,141,44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137, | 100 | 233,244,248,248,49,141,4,194,248,1,141,44,252,234,248,2,141,12,202,137,108, |
101 | 68,36,12,15,182,70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233, | 101 | 36,8,139,108,36,48,137,68,36,12,15,182,70,252,252,137,76,36,4,137,68,36,16, |
102 | 137,116,36,24,232,251,1,5,139,149,233,133,192,15,132,244,40,248,42,137,193, | 102 | 137,44,36,137,149,233,137,116,36,24,232,251,1,5,139,149,233,133,192,15,132, |
103 | 41,208,137,113,252,244,141,176,233,139,105,252,248,184,3,0,0,0,129,121,253, | 103 | 244,40,248,42,137,193,41,208,137,113,252,244,141,176,233,139,105,252,248, |
104 | 252,252,239,15,133,244,29,252,255,165,233,248,50,141,4,194,139,108,36,48, | 104 | 184,3,0,0,0,129,121,253,252,252,239,15,133,244,29,255,252,255,165,233,248, |
105 | 137,68,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,6,139,149,233,252, | 105 | 50,141,4,194,139,108,36,48,137,68,36,4,137,44,36,137,149,233,137,116,36,24, |
106 | 233,244,42,248,29,137,76,36,20,137,68,36,16,131,252,233,8,141,4,193,139,108, | 106 | 232,251,1,6,139,149,233,252,233,244,42,248,29,137,76,36,20,137,68,36,16,131, |
107 | 36,48,137,76,36,4,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251, | 107 | 252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,68,36,8,137,44,36,137,149, |
108 | 1,7,139,149,233,255,139,76,36,20,139,68,36,16,139,105,252,248,131,192,1,57, | 108 | 233,137,116,36,24,232,251,1,7,139,149,233,139,76,36,20,139,68,36,16,139,105, |
109 | 215,15,132,244,51,252,255,165,233,248,52,139,108,36,48,137,76,36,4,137,44, | 109 | 252,248,131,192,1,57,215,15,132,244,51,252,255,165,233,248,52,139,108,36, |
110 | 36,137,149,233,137,116,36,24,232,251,1,8,139,149,233,139,70,252,252,15,182, | 110 | 48,137,76,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,8,139,149,233, |
111 | 204,15,182,232,193,232,16,252,255,164,253,171,233,248,53,129,252,248,239, | 111 | 139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,171,233,248, |
112 | 15,130,244,54,139,105,4,129,252,253,239,15,131,244,54,137,68,36,20,137,105, | 112 | 53,129,252,248,239,15,130,244,54,255,139,105,4,129,252,253,239,15,131,244, |
113 | 252,252,139,41,137,105,252,248,131,232,2,15,132,244,248,137,76,36,16,248, | 113 | 54,137,68,36,20,137,105,252,252,139,41,137,105,252,248,131,232,2,15,132,244, |
114 | 1,131,193,8,139,105,4,137,105,252,252,139,41,137,105,252,248,131,232,1,15, | 114 | 248,137,76,36,16,248,1,131,193,8,139,105,4,137,105,252,252,139,41,137,105, |
115 | 133,244,1,139,76,36,16,248,2,255,139,68,36,20,252,233,244,55,248,56,129,252, | 115 | 252,248,131,232,1,15,133,244,1,139,76,36,16,248,2,139,68,36,20,252,233,244, |
116 | 248,239,15,130,244,54,139,105,4,184,237,252,247,213,57,232,255,15,71,197, | 116 | 55,248,56,129,252,248,239,15,130,244,54,139,105,4,184,237,252,247,213,57, |
117 | 255,15,134,244,247,137,232,248,1,255,139,105,252,248,139,132,253,197,233, | 117 | 232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,139,105,252,248,139, |
118 | 199,65,252,252,237,137,65,252,248,252,233,244,57,248,58,129,252,248,239,15, | 118 | 132,253,197,233,199,65,252,252,237,137,65,252,248,252,233,244,57,248,58,129, |
119 | 130,244,54,139,105,4,129,252,253,239,15,133,244,252,248,1,139,41,139,173, | 119 | 252,248,239,15,130,244,54,139,105,4,129,252,253,239,15,133,244,252,248,1, |
120 | 233,248,2,133,252,237,199,65,252,252,237,15,132,244,57,139,65,252,248,139, | 120 | 139,41,139,173,233,248,2,133,252,237,199,65,252,252,237,15,132,244,57,139, |
121 | 131,233,199,65,252,252,237,137,105,252,248,137,76,36,16,139,141,233,255,35, | 121 | 65,252,248,139,131,233,199,65,252,252,237,137,105,252,248,137,76,36,16,139, |
122 | 136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129, | 122 | 141,233,255,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,133, |
123 | 233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,3,252,233,244,57, | 123 | 244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,3, |
124 | 248,5,139,105,4,129,252,253,239,15,132,244,57,255,139,1,139,76,36,16,137, | 124 | 252,233,244,57,248,5,139,105,4,129,252,253,239,15,132,244,57,255,139,1,139, |
125 | 105,252,252,137,65,252,248,252,233,244,57,248,6,129,252,253,239,15,132,244, | 125 | 76,36,16,137,105,252,252,137,65,252,248,252,233,244,57,248,6,129,252,253, |
126 | 1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,253,171, | 126 | 239,15,132,244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213, |
127 | 233,252,233,244,2,248,59,129,252,248,239,15,130,244,54,129,121,253,4,239, | 127 | 139,172,253,171,233,252,233,244,2,248,59,129,252,248,239,15,130,244,54,129, |
128 | 15,133,244,54,255,139,41,131,189,233,0,15,133,244,54,129,121,253,12,239,15, | 128 | 121,253,4,239,15,133,244,54,255,139,41,131,189,233,0,15,133,244,54,129,121, |
129 | 133,244,54,139,65,8,137,133,233,199,65,252,252,237,137,105,252,248,252,246, | 129 | 253,12,239,15,133,244,54,139,65,8,137,133,233,199,65,252,252,237,137,105, |
130 | 133,233,235,15,132,244,247,128,165,233,235,139,131,233,137,171,233,137,133, | 130 | 252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,139,131,233,137, |
131 | 233,248,1,252,233,244,57,248,60,255,129,252,248,239,15,130,244,54,129,121, | 131 | 171,233,137,133,233,248,1,252,233,244,57,248,60,255,129,252,248,239,15,130, |
132 | 253,4,239,15,133,244,54,139,1,139,108,36,48,137,68,36,4,137,44,36,137,205, | 132 | 244,54,129,121,253,4,239,15,133,244,54,139,1,139,108,36,48,137,68,36,4,137, |
133 | 137,84,36,16,131,193,8,137,76,36,8,232,251,1,9,137,252,233,139,84,36,16,139, | 133 | 44,36,137,205,137,84,36,16,131,193,8,137,76,36,8,232,251,1,9,137,252,233, |
134 | 40,139,64,4,137,105,252,248,137,65,252,252,252,233,244,57,248,61,129,252, | 134 | 139,84,36,16,139,40,139,64,4,137,105,252,248,137,65,252,252,252,233,244,57, |
135 | 248,239,15,133,244,54,129,121,253,4,239,15,135,244,54,221,1,252,233,244,62, | 135 | 248,61,129,252,248,239,15,133,244,54,129,121,253,4,239,15,135,244,54,255, |
136 | 248,63,129,252,248,239,15,130,244,54,255,129,121,253,4,239,15,133,244,249, | 136 | 252,242,15,16,1,252,233,244,62,255,221,1,252,233,244,63,255,248,64,129,252, |
137 | 139,1,248,2,199,65,252,252,237,137,65,252,248,252,233,244,57,248,3,129,121, | 137 | 248,239,15,130,244,54,129,121,253,4,239,15,133,244,249,139,1,248,2,199,65, |
138 | 253,4,239,15,135,244,54,131,187,233,0,15,133,244,54,139,171,233,59,171,233, | 138 | 252,252,237,137,65,252,248,252,233,244,57,248,3,129,121,253,4,239,15,135, |
139 | 15,130,244,247,232,244,64,248,1,255,139,108,36,48,137,141,233,137,113,252, | 139 | 244,54,131,187,233,0,15,133,244,54,139,171,233,59,171,233,255,15,130,244, |
140 | 252,137,116,36,24,137,84,36,16,137,202,137,252,233,232,251,1,10,139,141,233, | 140 | 247,232,244,65,248,1,139,108,36,48,137,141,233,137,113,252,252,137,116,36, |
141 | 139,84,36,16,252,233,244,2,248,65,129,252,248,239,15,130,244,54,15,132,244, | 141 | 24,137,84,36,16,137,202,137,252,233,232,251,1,10,139,141,233,139,84,36,16, |
142 | 248,248,1,129,121,253,4,239,15,133,244,54,139,41,137,108,36,4,139,108,36, | 142 | 252,233,244,2,248,66,129,252,248,239,15,130,244,54,15,132,244,248,248,1,129, |
143 | 48,137,44,36,137,141,233,137,113,252,252,137,84,36,16,131,193,8,137,76,36, | 143 | 121,253,4,239,15,133,244,54,139,41,137,108,36,4,139,108,36,48,137,44,36,137, |
144 | 8,137,116,36,24,232,251,1,11,139,141,233,139,84,36,16,133,192,15,132,244, | 144 | 141,233,255,137,113,252,252,137,84,36,16,131,193,8,137,76,36,8,137,116,36, |
145 | 249,139,105,8,139,65,12,137,105,252,248,137,65,252,252,139,105,16,139,65, | 145 | 24,232,251,1,11,139,141,233,139,84,36,16,133,192,15,132,244,249,139,105,8, |
146 | 20,137,41,137,65,4,248,66,184,237,255,252,233,244,67,248,2,199,65,12,237, | 146 | 139,65,12,137,105,252,248,137,65,252,252,139,105,16,139,65,20,137,41,137, |
147 | 252,233,244,1,248,3,199,65,252,252,237,252,233,244,57,248,68,129,252,248, | 147 | 65,4,248,67,184,237,252,233,244,68,248,2,199,65,12,237,252,233,244,1,248, |
148 | 239,15,130,244,54,129,121,253,4,239,15,133,244,54,139,133,233,199,65,252, | 148 | 3,199,65,252,252,237,252,233,244,57,248,69,129,252,248,239,15,130,244,54, |
149 | 252,237,137,65,252,248,199,65,12,237,255,184,237,252,233,244,67,248,69,129, | 149 | 129,121,253,4,239,255,15,133,244,54,139,133,233,199,65,252,252,237,137,65, |
150 | 252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,129,121,253,12, | 150 | 252,248,199,65,12,237,184,237,252,233,244,68,248,70,129,252,248,239,15,130, |
151 | 239,15,135,244,54,221,65,8,217,232,222,193,219,84,36,4,221,89,252,248,139, | 151 | 244,54,129,121,253,4,239,15,133,244,54,129,121,253,12,239,15,135,244,54,255, |
152 | 41,139,68,36,4,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120, | 152 | 252,242,15,16,65,8,189,0,0,252,240,63,102,15,110,205,102,15,112,201,81,252, |
153 | 253,4,239,15,132,244,70,255,139,40,139,64,4,137,41,137,65,4,252,233,244,66, | 153 | 242,15,88,193,252,242,15,45,192,252,242,15,17,65,252,248,137,68,36,4,255, |
154 | 248,2,131,189,233,0,15,132,244,70,137,44,36,137,84,36,16,137,205,232,251, | 154 | 221,65,8,217,232,222,193,219,84,36,4,221,89,252,248,139,68,36,4,255,139,41, |
155 | 1,12,137,252,233,139,84,36,16,133,192,15,133,244,1,248,70,184,237,252,233, | 155 | 59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,15, |
156 | 244,67,248,71,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244, | 156 | 132,244,71,139,40,139,64,4,137,41,137,65,4,252,233,244,67,248,2,131,189,233, |
157 | 54,139,133,233,255,199,65,252,252,237,137,65,252,248,217,252,238,221,89,8, | 157 | 0,15,132,244,71,137,44,36,137,84,36,16,137,205,232,251,1,12,137,252,233,139, |
158 | 184,237,252,233,244,67,248,72,129,252,248,239,15,130,244,54,137,113,252,252, | 158 | 84,36,16,133,192,15,133,244,1,248,71,184,237,252,233,244,68,248,72,255,129, |
159 | 190,237,137,202,131,193,8,131,232,1,139,105,252,248,248,1,252,246,131,233, | 159 | 252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,139,133,233,199, |
160 | 235,15,133,244,249,248,2,129,121,253,252,252,239,15,133,244,29,252,255,165, | 160 | 65,252,252,237,137,65,252,248,255,15,87,192,252,242,15,17,65,8,255,217,252, |
161 | 233,248,3,255,131,198,1,252,233,244,2,248,73,129,252,248,239,15,130,244,54, | 161 | 238,221,89,8,255,184,237,252,233,244,68,248,73,129,252,248,239,15,130,244, |
162 | 129,121,253,12,239,15,133,244,54,137,113,252,252,139,105,4,137,105,12,199, | 162 | 54,137,113,252,252,190,237,137,202,131,193,8,131,232,1,139,105,252,248,248, |
163 | 65,4,237,139,41,139,113,8,137,105,8,137,49,190,237,137,202,129,193,239,131, | 163 | 1,252,246,131,233,235,15,133,244,249,248,2,129,121,253,252,252,239,15,133, |
164 | 232,2,252,233,244,1,248,9,139,116,36,24,252,233,244,54,248,74,129,252,248, | 164 | 244,29,252,255,165,233,248,3,131,198,1,252,233,244,2,248,74,255,129,252,248, |
165 | 239,15,130,244,54,255,139,41,137,113,252,252,137,116,36,24,137,44,36,129, | 165 | 239,15,130,244,54,129,121,253,12,239,15,133,244,54,137,113,252,252,139,105, |
166 | 121,253,4,239,15,133,244,9,131,189,233,0,15,133,244,9,128,189,233,235,15, | 166 | 4,137,105,12,199,65,4,237,139,41,139,113,8,137,105,8,137,49,190,237,137,202, |
167 | 135,244,9,139,181,233,137,116,36,4,15,132,244,247,59,181,233,15,132,244,9, | 167 | 129,193,239,131,232,2,252,233,244,1,248,9,139,116,36,24,252,233,244,54,248, |
168 | 248,1,141,116,198,252,240,59,181,233,15,135,244,9,255,137,181,233,139,108, | 168 | 75,129,252,248,239,15,130,244,54,139,41,137,113,252,252,137,116,36,24,137, |
169 | 36,48,137,141,233,131,193,8,137,141,233,139,108,36,4,141,76,193,232,41,252, | 169 | 44,36,129,121,253,4,239,15,133,244,9,255,131,189,233,0,15,133,244,9,128,189, |
170 | 241,57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137, | 170 | 233,235,15,135,244,9,139,181,233,137,116,36,4,15,132,244,247,59,181,233,15, |
171 | 70,252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12, | 171 | 132,244,9,248,1,141,116,198,252,240,59,181,233,15,135,244,9,137,181,233,139, |
172 | 137,76,36,8,232,244,26,199,131,233,237,139,108,36,48,139,52,36,139,149,233, | 172 | 108,36,48,137,141,233,131,193,8,137,141,233,255,139,108,36,4,141,76,193,232, |
173 | 129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,255,137,142, | 173 | 41,252,241,57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139, |
174 | 233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15, | 174 | 4,14,137,70,252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,49,201,137, |
175 | 135,244,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131, | 175 | 76,36,12,137,76,36,8,232,244,26,199,131,233,237,139,108,36,48,139,52,36,139, |
176 | 193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139, | 176 | 149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137, |
177 | 116,36,24,137,68,36,20,185,252,248,252,255,252,255,252,255,252,247,198,237, | 177 | 142,233,137,252,254,41,206,15,132,244,252,255,141,4,50,193,252,238,3,59,133, |
178 | 15,132,244,17,252,233,244,18,248,8,199,66,252,252,237,139,142,233,255,131, | 178 | 233,15,135,244,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41, |
179 | 252,233,8,137,142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7, | 179 | 4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248, |
180 | 248,9,139,12,36,137,185,233,137,116,36,4,137,44,36,232,251,1,0,139,149,233, | 180 | 7,139,116,36,24,137,68,36,20,185,252,248,252,255,252,255,252,255,252,247, |
181 | 252,233,244,4,248,9,139,116,36,24,252,233,244,54,248,75,139,173,233,137,113, | 181 | 198,237,15,132,244,17,252,233,244,18,248,8,199,66,252,252,237,139,142,233, |
182 | 252,252,137,116,36,24,137,44,36,131,189,233,0,15,133,244,9,128,189,233,235, | 182 | 131,252,233,8,137,142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244, |
183 | 15,135,244,9,255,139,181,233,137,116,36,4,15,132,244,247,59,181,233,15,132, | 183 | 7,248,9,255,139,12,36,137,185,233,137,116,36,4,137,44,36,232,251,1,0,139, |
184 | 244,9,248,1,141,116,198,252,248,59,181,233,15,135,244,9,137,181,233,139,108, | 184 | 149,233,252,233,244,4,248,9,139,116,36,24,252,233,244,54,248,76,139,173,233, |
185 | 36,48,137,141,233,137,141,233,139,108,36,4,141,76,193,252,240,41,252,241, | 185 | 137,113,252,252,137,116,36,24,137,44,36,131,189,233,0,15,133,244,9,128,189, |
186 | 57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139,4,14,137,70, | 186 | 233,235,15,135,244,9,139,181,233,137,116,36,4,15,132,244,247,59,181,233,255, |
187 | 252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,49,201,137,76,36,12,137, | 187 | 15,132,244,9,248,1,141,116,198,252,248,59,181,233,15,135,244,9,137,181,233, |
188 | 76,36,8,232,244,26,255,199,131,233,237,139,108,36,48,139,52,36,139,149,233, | 188 | 139,108,36,48,137,141,233,137,141,233,139,108,36,4,141,76,193,252,240,41, |
189 | 129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233, | 189 | 252,241,57,252,238,15,132,244,249,248,2,139,68,14,4,137,70,252,252,139,4, |
190 | 137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135, | 190 | 14,137,70,252,248,131,252,238,8,57,252,238,15,133,244,2,248,3,49,201,137, |
191 | 244,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193, | 191 | 76,36,12,137,76,36,8,232,244,26,199,131,233,237,139,108,36,48,139,52,36,139, |
192 | 8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,255,139,116,36,24,137,68,36, | 192 | 149,233,255,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233, |
193 | 20,49,201,252,247,198,237,15,132,244,17,252,233,244,18,248,8,137,116,36,4, | 193 | 137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133, |
194 | 137,44,36,232,251,1,13,248,9,139,12,36,137,185,233,137,116,36,4,137,44,36, | 194 | 233,15,135,244,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41, |
195 | 232,251,1,0,139,149,233,252,233,244,4,248,76,139,108,36,48,137,113,252,252, | 195 | 4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116,36,24,137, |
196 | 252,247,133,233,237,15,132,244,54,137,141,233,141,68,193,252,248,137,133, | 196 | 68,36,20,49,201,252,247,198,237,15,132,244,17,255,252,233,244,18,248,8,137, |
197 | 233,49,192,137,133,233,176,235,255,136,133,233,252,233,244,22,248,77,129, | 197 | 116,36,4,137,44,36,232,251,1,13,248,9,139,12,36,137,185,233,137,116,36,4, |
198 | 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,225,248, | 198 | 137,44,36,232,251,1,0,139,149,233,252,233,244,4,248,77,139,108,36,48,137, |
199 | 62,221,89,252,248,248,57,184,237,248,67,137,68,36,20,248,55,252,247,198,237, | 199 | 113,252,252,252,247,133,233,237,15,132,244,54,137,141,233,141,68,193,252, |
200 | 15,133,244,253,248,5,56,70,252,255,15,135,244,252,255,139,6,15,182,204,15, | 200 | 248,137,133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,22,255, |
201 | 182,232,131,198,4,193,232,16,252,255,36,171,248,6,199,68,193,252,244,237, | 201 | 248,63,221,89,252,248,252,233,244,57,248,78,129,252,248,239,15,130,244,54, |
202 | 131,192,1,252,233,244,5,248,7,137,202,185,252,248,252,255,252,255,252,255, | 202 | 129,121,253,4,239,15,135,244,54,252,242,15,16,1,102,15,252,239,201,102,15, |
203 | 252,233,244,18,248,78,129,252,248,239,15,130,244,54,129,121,253,4,239,15, | 203 | 118,201,102,15,115,209,1,15,84,193,248,62,252,242,15,17,65,252,248,255,248, |
204 | 135,244,54,221,1,232,244,79,252,233,244,62,248,80,129,252,248,239,255,15, | 204 | 78,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217, |
205 | 130,244,54,129,121,253,4,239,15,135,244,54,221,1,232,244,81,252,233,244,62, | 205 | 225,248,62,248,63,221,89,252,248,255,248,57,184,237,248,68,137,68,36,20,248, |
206 | 248,82,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221, | 206 | 55,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,139, |
207 | 1,217,252,250,252,233,244,62,248,83,129,252,248,239,255,15,130,244,54,129, | 207 | 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,199,68, |
208 | 121,253,4,239,15,135,244,54,217,252,237,221,1,217,252,241,252,233,244,62, | 208 | 193,252,244,237,131,192,1,252,233,244,5,248,7,137,202,185,252,248,252,255, |
209 | 248,84,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,217, | 209 | 252,255,252,255,252,233,244,18,255,248,79,129,252,248,239,15,130,244,54,129, |
210 | 252,236,221,1,217,252,241,252,233,244,62,248,85,129,252,248,239,15,130,244, | 210 | 121,253,4,239,15,135,244,54,252,242,15,81,1,252,233,244,62,248,80,129,252, |
211 | 54,255,129,121,253,4,239,15,135,244,54,221,1,232,244,86,252,233,244,62,248, | 211 | 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,232, |
212 | 87,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217, | 212 | 244,81,252,233,244,62,248,82,255,129,252,248,239,15,130,244,54,129,121,253, |
213 | 252,254,252,233,244,62,248,88,129,252,248,239,15,130,244,54,255,129,121,253, | 213 | 4,239,15,135,244,54,252,242,15,16,1,232,244,83,252,233,244,62,255,248,79, |
214 | 4,239,15,135,244,54,221,1,217,252,255,252,233,244,62,248,89,129,252,248,239, | 214 | 129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,252, |
215 | 15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,252,242,221,216,252, | 215 | 250,252,233,244,63,248,80,129,252,248,239,15,130,244,54,129,121,253,4,239, |
216 | 233,244,62,248,90,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135, | 216 | 15,135,244,54,221,1,232,244,81,252,233,244,63,248,82,255,129,252,248,239, |
217 | 244,54,255,221,1,217,192,216,200,217,232,222,225,217,252,250,217,252,243, | 217 | 15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,232,244,83,252,233,244, |
218 | 252,233,244,62,248,91,129,252,248,239,15,130,244,54,129,121,253,4,239,15, | 218 | 63,255,248,84,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244, |
219 | 135,244,54,221,1,217,192,216,200,217,232,222,225,217,252,250,217,201,217, | 219 | 54,217,252,237,221,1,217,252,241,252,233,244,63,248,85,129,252,248,239,15, |
220 | 252,243,252,233,244,62,248,92,129,252,248,239,15,130,244,54,129,121,253,4, | 220 | 130,244,54,129,121,253,4,239,15,135,244,54,217,252,236,221,1,217,252,241, |
221 | 239,15,135,244,54,221,1,217,232,217,252,243,252,233,244,62,248,93,255,129, | 221 | 252,233,244,63,248,86,129,252,248,239,255,15,130,244,54,129,121,253,4,239, |
222 | 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,137,76,36, | 222 | 15,135,244,54,221,1,232,244,87,252,233,244,63,248,88,129,252,248,239,15,130, |
223 | 16,221,28,36,137,213,232,251,1,14,139,76,36,16,137,252,234,252,233,244,62, | 223 | 244,54,129,121,253,4,239,15,135,244,54,221,1,217,252,254,252,233,244,63,248, |
224 | 248,94,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221, | 224 | 89,129,252,248,239,255,15,130,244,54,129,121,253,4,239,15,135,244,54,221, |
225 | 1,137,76,36,16,221,28,36,137,213,232,251,1,15,139,76,36,16,137,252,234,252, | 225 | 1,217,252,255,252,233,244,63,248,90,129,252,248,239,15,130,244,54,129,121, |
226 | 233,244,62,248,95,129,252,248,239,15,130,244,54,255,129,121,253,4,239,15, | 226 | 253,4,239,15,135,244,54,221,1,217,252,242,221,216,252,233,244,63,248,91,129, |
227 | 135,244,54,221,1,137,76,36,16,221,28,36,137,213,232,251,1,16,139,76,36,16, | 227 | 252,248,239,15,130,244,54,255,129,121,253,4,239,15,135,244,54,221,1,217,192, |
228 | 137,252,234,252,233,244,62,248,96,248,97,129,252,248,239,15,130,244,54,129, | 228 | 216,200,217,232,222,225,217,252,250,217,252,243,252,233,244,63,248,92,129, |
229 | 121,253,4,239,15,135,244,54,221,1,220,141,233,252,233,244,62,248,98,129,252, | 229 | 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,217,192,216, |
230 | 248,239,15,130,244,54,255,129,121,253,4,239,15,135,244,54,129,121,253,12, | 230 | 200,217,232,222,225,217,252,250,217,201,217,252,243,252,233,244,63,248,93, |
231 | 239,15,135,244,54,221,1,221,65,8,217,252,243,252,233,244,62,248,99,129,252, | 231 | 129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,255,221,1,217, |
232 | 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239, | 232 | 232,217,252,243,252,233,244,63,255,248,94,129,252,248,239,15,130,244,54,129, |
233 | 15,135,244,54,221,65,8,221,1,217,252,253,221,217,252,233,244,62,248,100,255, | 233 | 121,253,4,239,15,135,244,54,252,242,15,16,1,252,242,15,17,4,36,255,248,94, |
234 | 129,252,248,239,15,130,244,54,139,105,4,129,252,253,239,15,135,244,54,139, | 234 | 129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,221,28, |
235 | 1,137,105,252,252,137,65,252,248,209,229,129,252,253,0,0,224,252,255,15,131, | 235 | 36,255,137,76,36,16,137,213,232,251,1,14,139,76,36,16,137,252,234,252,233, |
236 | 244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130, | 236 | 244,63,255,248,95,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135, |
237 | 244,250,248,1,193,252,237,21,41,197,137,108,36,16,219,68,36,16,139,105,252, | 237 | 244,54,252,242,15,16,1,252,242,15,17,4,36,255,248,95,129,252,248,239,15,130, |
238 | 252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,105,252,252,248, | 238 | 244,54,129,121,253,4,239,15,135,244,54,221,1,221,28,36,255,137,76,36,16,137, |
239 | 2,221,25,184,237,252,233,244,67,248,3,217,252,238,252,233,244,2,248,4,255, | 239 | 213,232,251,1,15,139,76,36,16,137,252,234,252,233,244,63,255,248,96,129,252, |
240 | 221,1,199,68,36,16,0,0,128,90,216,76,36,16,221,89,252,248,139,105,252,252, | 240 | 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,252, |
241 | 184,52,4,0,0,209,229,252,233,244,1,248,101,129,252,248,239,15,130,244,54, | 241 | 242,15,17,4,36,255,248,96,129,252,248,239,15,130,244,54,129,121,253,4,239, |
242 | 129,121,253,4,239,15,135,244,54,221,1,139,105,4,209,229,129,252,253,0,0,224, | 242 | 15,135,244,54,221,1,221,28,36,255,137,76,36,16,137,213,232,251,1,16,139,76, |
243 | 252,255,15,132,244,250,217,192,232,244,102,220,252,233,248,1,221,89,252,248, | 243 | 36,16,137,252,234,252,233,244,63,248,97,255,248,98,129,252,248,239,15,130, |
244 | 221,25,139,65,252,252,139,105,4,49,232,15,136,244,249,248,2,184,237,252,233, | 244 | 244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,252,242,15,89,133, |
245 | 244,67,248,3,255,129,252,245,0,0,0,128,137,105,4,252,233,244,2,248,4,217, | 245 | 233,252,233,244,62,255,248,98,129,252,248,239,15,130,244,54,129,121,253,4, |
246 | 252,238,217,201,252,233,244,1,248,103,129,252,248,239,15,130,244,54,129,121, | 246 | 239,15,135,244,54,221,1,220,141,233,252,233,244,63,255,248,99,129,252,248, |
247 | 253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,65,8,221,1,248, | 247 | 239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135, |
248 | 1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,62,248,104,255, | 248 | 244,54,221,1,221,65,8,217,252,243,252,233,244,63,248,100,129,252,248,239, |
249 | 129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253, | 249 | 15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,255,15,135, |
250 | 12,239,15,135,244,54,221,1,221,65,8,232,244,105,252,233,244,62,248,106,129, | 250 | 244,54,221,65,8,221,1,217,252,253,221,217,252,233,244,63,248,101,129,252, |
251 | 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,255,221,1,189,2, | 251 | 248,239,15,130,244,54,139,105,4,129,252,253,239,15,135,244,54,139,1,137,105, |
252 | 0,0,0,248,1,57,197,15,131,244,62,129,124,253,252,233,252,252,239,15,135,244, | 252 | 252,252,137,65,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,249, |
253 | 251,221,68,252,233,252,248,255,219,252,233,219,209,221,217,255,80,221,225, | 253 | 9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250, |
254 | 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,88,255,131,197, | 254 | 248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,108,36,16,219,68, |
255 | 1,252,233,244,1,248,107,129,252,248,239,15,130,244,54,129,121,253,4,239,15, | 255 | 36,16,255,139,105,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224, |
256 | 135,244,54,221,1,189,2,0,0,0,248,1,57,197,15,131,244,62,129,124,253,252,233, | 256 | 63,137,105,252,252,248,2,255,252,242,15,17,1,255,221,25,255,184,237,252,233, |
257 | 252,252,239,15,135,244,251,221,68,252,233,252,248,255,219,252,233,218,209, | 257 | 244,68,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255, |
258 | 221,217,255,80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2, | 258 | 252,242,15,16,1,189,0,0,80,67,102,15,110,205,102,15,112,201,81,252,242,15, |
259 | 221,216,88,255,131,197,1,252,233,244,1,248,5,221,216,252,233,244,54,248,108, | 259 | 89,193,252,242,15,17,65,252,248,255,221,1,199,68,36,16,0,0,128,90,216,76, |
260 | 129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,139,41,219, | 260 | 36,16,221,89,252,248,255,139,105,252,252,184,52,4,0,0,209,229,252,233,244, |
261 | 133,233,252,233,244,62,248,109,129,252,248,239,15,133,244,54,129,121,253, | 261 | 1,255,248,102,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244, |
262 | 4,239,255,15,133,244,54,139,41,131,189,233,1,15,130,244,70,15,182,173,233, | 262 | 54,252,242,15,16,1,255,248,102,129,252,248,239,15,130,244,54,129,121,253, |
263 | 137,108,36,16,219,68,36,16,252,233,244,62,248,110,139,171,233,59,171,233, | 263 | 4,239,15,135,244,54,221,1,255,139,105,4,209,229,129,252,253,0,0,224,252,255, |
264 | 15,130,244,247,232,244,64,248,1,129,252,248,239,15,133,244,54,129,121,253, | 264 | 15,132,244,250,255,15,40,224,232,244,103,252,242,15,92,224,248,1,252,242, |
265 | 4,239,255,15,135,244,54,221,1,219,92,36,20,129,124,36,20,252,255,0,0,0,15, | 265 | 15,17,65,252,248,252,242,15,17,33,255,217,192,232,244,103,220,252,233,248, |
266 | 135,244,54,141,68,36,20,137,76,36,16,199,68,36,8,1,0,0,0,137,68,36,4,248, | 266 | 1,221,89,252,248,221,25,255,139,65,252,252,139,105,4,49,232,15,136,244,249, |
267 | 111,139,108,36,48,137,44,36,137,116,36,24,137,149,233,232,251,1,17,139,76, | 267 | 248,2,184,237,252,233,244,68,248,3,129,252,245,0,0,0,128,137,105,4,252,233, |
268 | 36,16,139,149,233,199,65,252,252,237,137,65,252,248,252,233,244,57,248,112, | 268 | 244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244, |
269 | 139,171,233,59,171,233,15,130,244,247,232,244,64,248,1,137,76,36,16,199,68, | 269 | 1,255,248,104,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244, |
270 | 36,20,252,255,252,255,252,255,252,255,129,252,248,239,15,130,244,54,255,15, | 270 | 54,129,121,253,12,239,15,135,244,54,221,65,8,221,1,248,1,217,252,248,223, |
271 | 134,244,247,129,121,253,20,239,15,135,244,54,221,65,16,219,92,36,20,248,1, | 271 | 224,158,15,138,244,1,221,217,252,233,244,63,255,248,105,129,252,248,239,15, |
272 | 129,121,253,4,239,15,133,244,54,129,121,253,12,239,15,135,244,54,139,41,137, | 272 | 130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244, |
273 | 108,36,4,139,173,233,221,65,8,219,92,36,8,139,68,36,20,57,197,15,130,244, | 273 | 54,252,242,15,16,1,252,242,15,16,73,8,232,244,106,252,233,244,62,255,248, |
274 | 251,248,2,139,76,36,8,133,201,15,142,244,253,248,3,139,108,36,4,41,200,15, | 274 | 105,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121, |
275 | 140,244,113,255,141,172,253,13,233,131,192,1,248,4,137,108,36,4,137,68,36, | 275 | 253,12,239,15,135,244,54,221,1,221,65,8,232,244,106,252,233,244,63,255,248, |
276 | 8,252,233,244,111,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137, | 276 | 107,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242, |
277 | 232,252,233,244,2,248,7,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248, | 277 | 15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,62,129,124,253,252,233,252,252, |
278 | 8,185,1,0,0,0,252,233,244,3,248,113,255,49,192,252,233,244,4,248,114,129, | 278 | 239,15,135,244,54,252,242,15,16,76,252,233,252,248,252,242,15,93,193,131, |
279 | 252,248,239,15,130,244,54,139,171,233,59,171,233,15,130,244,247,232,244,64, | 279 | 197,1,252,233,244,1,255,248,107,129,252,248,239,15,130,244,54,129,121,253, |
280 | 248,1,137,76,36,16,129,121,253,4,239,15,133,244,54,129,121,253,12,239,15, | 280 | 4,239,15,135,244,54,221,1,189,2,0,0,0,248,1,57,197,15,131,244,63,129,124, |
281 | 135,244,54,139,41,221,65,8,219,92,36,20,139,68,36,20,133,192,15,142,244,113, | 281 | 253,252,233,252,252,239,15,135,244,251,221,68,252,233,252,248,255,219,252, |
282 | 255,131,189,233,1,15,130,244,113,15,133,244,115,57,131,233,15,130,244,115, | 282 | 233,219,209,221,217,255,80,221,225,223,224,252,246,196,1,15,132,244,248,217, |
283 | 15,182,141,233,139,171,233,137,68,36,8,137,108,36,4,248,1,136,77,0,131,197, | 283 | 201,248,2,221,216,88,255,248,108,129,252,248,239,15,130,244,54,129,121,253, |
284 | 1,131,232,1,15,133,244,1,252,233,244,111,248,116,129,252,248,239,15,130,244, | 284 | 4,239,15,135,244,54,252,242,15,16,1,189,2,0,0,0,248,1,57,197,15,131,244,62, |
285 | 54,139,171,233,255,59,171,233,15,130,244,247,232,244,64,248,1,137,76,36,16, | 285 | 129,124,253,252,233,252,252,239,15,135,244,54,252,242,15,16,76,252,233,252, |
286 | 129,121,253,4,239,15,133,244,54,139,41,139,133,233,133,192,15,132,244,113, | 286 | 248,252,242,15,95,193,131,197,1,252,233,244,1,255,248,108,129,252,248,239, |
287 | 57,131,233,15,130,244,117,129,197,239,137,116,36,20,137,68,36,8,139,179,233, | 287 | 15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,189,2,0,0,0,248,1,57, |
288 | 137,116,36,4,248,1,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1, | 288 | 197,15,131,244,63,129,124,253,252,233,252,252,239,15,135,244,251,221,68,252, |
289 | 255,139,116,36,20,252,233,244,111,248,118,129,252,248,239,15,130,244,54,139, | 289 | 233,252,248,255,219,252,233,218,209,221,217,255,80,221,225,223,224,252,246, |
290 | 171,233,59,171,233,15,130,244,247,232,244,64,248,1,137,76,36,16,129,121,253, | 290 | 196,1,15,133,244,248,217,201,248,2,221,216,88,255,248,5,221,216,252,233,244, |
291 | 4,239,15,133,244,54,139,41,139,133,233,57,131,233,15,130,244,117,255,129, | 291 | 54,255,248,109,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244, |
292 | 197,239,137,116,36,20,137,68,36,8,139,179,233,137,116,36,4,252,233,244,249, | 292 | 54,139,41,255,252,242,15,42,133,233,252,233,244,62,255,219,133,233,252,233, |
293 | 248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244, | 293 | 244,63,255,248,110,129,252,248,239,15,133,244,54,129,121,253,4,239,15,133, |
294 | 248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,139,116,36, | 294 | 244,54,139,41,131,189,233,1,15,130,244,71,15,182,173,233,255,252,242,15,42, |
295 | 20,252,233,244,111,248,119,129,252,248,239,15,130,244,54,139,171,233,255, | 295 | 197,252,233,244,62,255,137,108,36,16,219,68,36,16,252,233,244,63,255,248, |
296 | 59,171,233,15,130,244,247,232,244,64,248,1,137,76,36,16,129,121,253,4,239, | 296 | 111,139,171,233,59,171,233,15,130,244,247,232,244,65,248,1,129,252,248,239, |
297 | 15,133,244,54,139,41,139,133,233,57,131,233,15,130,244,117,129,197,239,137, | 297 | 15,133,244,54,129,121,253,4,239,15,135,244,54,255,252,242,15,45,1,61,252, |
298 | 116,36,20,137,68,36,8,139,179,233,137,116,36,4,252,233,244,249,248,1,15,182, | 298 | 255,0,0,0,15,135,244,54,137,68,36,20,255,221,1,219,92,36,20,129,124,36,20, |
299 | 76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131, | 299 | 252,255,0,0,0,15,135,244,54,255,141,68,36,20,137,76,36,16,199,68,36,8,1,0, |
300 | 252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,139,116,36,20,252, | 300 | 0,0,137,68,36,4,248,112,139,108,36,48,137,44,36,137,116,36,24,137,149,233, |
301 | 233,244,111,248,120,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133, | 301 | 232,251,1,17,139,76,36,16,139,149,233,199,65,252,252,237,137,65,252,248,252, |
302 | 244,54,137,84,36,16,137,205,139,9,232,251,1,18,137,4,36,137,252,233,139,84, | 302 | 233,244,57,248,113,139,171,233,59,171,233,15,130,244,247,232,244,65,248,1, |
303 | 36,16,219,4,36,252,233,244,62,248,121,129,252,248,239,15,130,244,54,255,129, | 303 | 137,76,36,16,199,68,36,20,252,255,252,255,252,255,252,255,129,252,248,239, |
304 | 121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221, | 304 | 15,130,244,54,15,134,244,247,129,121,253,20,239,255,252,242,15,45,105,16, |
305 | 28,36,219,4,36,252,233,244,62,248,122,129,252,248,239,15,130,244,54,129,121, | 305 | 137,108,36,20,255,221,65,16,219,92,36,20,255,248,1,129,121,253,4,239,15,133, |
306 | 253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28, | 306 | 244,54,129,121,253,12,239,15,135,244,54,139,41,137,108,36,4,139,173,233,255, |
307 | 36,139,44,36,137,68,36,20,141,68,193,252,240,248,1,57,200,15,134,244,123, | 307 | 252,242,15,45,65,8,137,68,36,8,255,221,65,8,219,92,36,8,255,139,68,36,20, |
308 | 129,120,253,4,239,15,135,244,124,221,0,216,68,36,16,221,28,36,35,44,36,131, | 308 | 57,197,15,130,244,251,248,2,139,76,36,8,133,201,15,142,244,253,248,3,139, |
309 | 232,8,252,233,244,1,248,125,255,129,252,248,239,15,130,244,54,129,121,253, | 309 | 108,36,4,41,200,15,140,244,114,141,172,253,13,233,131,192,1,248,4,137,108, |
310 | 4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36, | 310 | 36,4,137,68,36,8,252,233,244,112,248,5,15,140,244,252,141,68,40,1,252,233, |
311 | 139,44,36,137,68,36,20,141,68,193,252,240,248,1,57,200,15,134,244,123,129, | 311 | 244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,131, |
312 | 120,253,4,239,15,135,244,124,221,0,216,68,36,16,221,28,36,11,44,36,131,232, | 312 | 193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,114,49,192,252,233, |
313 | 8,252,233,244,1,248,126,129,252,248,239,15,130,244,54,129,121,253,4,239,15, | 313 | 244,4,248,115,129,252,248,239,15,130,244,54,139,171,233,59,171,233,15,130, |
314 | 135,244,54,255,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44, | 314 | 244,247,232,244,65,248,1,255,137,76,36,16,129,121,253,4,239,15,133,244,54, |
315 | 36,137,68,36,20,141,68,193,252,240,248,1,57,200,15,134,244,123,129,120,253, | 315 | 129,121,253,12,239,15,135,244,54,139,41,255,252,242,15,45,65,8,255,221,65, |
316 | 4,239,15,135,244,124,221,0,216,68,36,16,221,28,36,51,44,36,131,232,8,252, | 316 | 8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,114,131,189,233,1,15,130, |
317 | 233,244,1,248,127,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135, | 317 | 244,114,15,133,244,116,57,131,233,15,130,244,116,15,182,141,233,139,171,233, |
318 | 244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,15, | 318 | 137,68,36,8,137,108,36,4,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1, |
319 | 205,252,233,244,123,248,128,129,252,248,239,15,130,244,54,255,129,121,253, | 319 | 252,233,244,112,248,117,129,252,248,239,15,130,244,54,255,139,171,233,59, |
320 | 4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36, | 320 | 171,233,15,130,244,247,232,244,65,248,1,137,76,36,16,129,121,253,4,239,15, |
321 | 139,44,36,252,247,213,248,123,137,44,36,219,4,36,252,233,244,62,248,124,139, | 321 | 133,244,54,139,41,139,133,233,133,192,15,132,244,114,57,131,233,15,130,244, |
322 | 68,36,20,252,233,244,54,248,129,129,252,248,239,15,130,244,54,129,121,253, | 322 | 118,129,197,239,137,116,36,20,137,68,36,8,139,179,233,137,116,36,4,248,1, |
323 | 4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68, | 323 | 15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,255,139,116,36,20,252, |
324 | 36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200, | 324 | 233,244,112,248,119,129,252,248,239,15,130,244,54,139,171,233,59,171,233, |
325 | 139,76,36,8,139,44,36,211,229,137,193,252,233,244,123,248,130,255,129,252, | 325 | 15,130,244,247,232,244,65,248,1,137,76,36,16,129,121,253,4,239,15,133,244, |
326 | 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239, | 326 | 54,139,41,139,133,233,57,131,233,15,130,244,118,255,129,197,239,137,116,36, |
327 | 15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92, | 327 | 20,137,68,36,8,139,179,233,137,116,36,4,252,233,244,249,248,1,15,182,76,5, |
328 | 36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,211,252,237,137, | 328 | 0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241, |
329 | 193,252,233,244,123,248,131,129,252,248,239,15,130,244,54,129,121,253,4,239, | 329 | 32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,139,116,36,20,252,233,244, |
330 | 15,135,244,54,129,121,253,12,239,15,135,244,54,255,221,1,221,65,8,199,68, | 330 | 112,248,120,129,252,248,239,15,130,244,54,139,171,233,255,59,171,233,15,130, |
331 | 36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200, | 331 | 244,247,232,244,65,248,1,137,76,36,16,129,121,253,4,239,15,133,244,54,139, |
332 | 139,76,36,8,139,44,36,211,252,253,137,193,252,233,244,123,248,132,129,252, | 332 | 41,139,133,233,57,131,233,15,130,244,118,129,197,239,137,116,36,20,137,68, |
333 | 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239, | 333 | 36,8,139,179,233,137,116,36,4,252,233,244,249,248,1,15,182,76,5,0,131,252, |
334 | 15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92, | 334 | 249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248, |
335 | 36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,211,197,137,193, | 335 | 2,136,12,6,248,3,131,232,1,15,137,244,1,139,116,36,20,252,233,244,112,248, |
336 | 252,233,244,123,248,133,129,252,248,239,15,130,244,54,129,121,253,4,239,15, | 336 | 121,129,252,248,239,15,130,244,54,129,121,253,4,239,15,133,244,54,137,84, |
337 | 135,244,54,255,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36, | 337 | 36,16,137,205,139,9,232,251,1,18,137,252,233,139,84,36,16,255,252,242,15, |
338 | 16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139, | 338 | 42,192,252,233,244,62,255,137,4,36,219,4,36,252,233,244,63,255,248,122,129, |
339 | 76,36,8,139,44,36,211,205,137,193,252,233,244,123,248,115,184,237,252,233, | 339 | 252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242,15,16,1, |
340 | 244,54,248,117,184,237,248,54,139,108,36,48,41,202,137,113,252,252,137,116, | 340 | 189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193,102,15,126, |
341 | 36,24,137,84,36,8,137,141,233,141,68,193,252,248,137,44,36,141,144,233,137, | 341 | 197,252,242,15,42,197,252,233,244,62,255,248,122,129,252,248,239,15,130,244, |
342 | 133,233,139,73,252,248,59,149,233,15,135,244,251,252,255,145,233,133,192, | 342 | 54,129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36, |
343 | 15,133,244,249,248,1,255,139,141,233,139,133,233,41,200,193,232,3,131,192, | 343 | 16,221,28,36,219,4,36,252,233,244,63,255,248,123,129,252,248,239,15,130,244, |
344 | 1,139,105,252,248,139,84,36,8,1,202,57,113,252,252,15,133,244,248,252,255, | 344 | 54,129,121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110, |
345 | 165,233,248,2,129,121,253,252,252,239,15,133,244,29,252,255,165,233,248,3, | 345 | 205,102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,123,129,252, |
346 | 139,141,233,139,84,36,8,1,202,252,233,244,67,248,5,199,68,36,4,237,232,251, | 346 | 248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,199,68,36,16, |
347 | 1,0,252,233,244,1,248,64,93,137,108,36,8,139,108,36,48,41,202,137,84,36,4, | 347 | 0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,137,68,36,20,141,68,193,252, |
348 | 137,113,252,252,137,116,36,24,137,141,233,255,141,68,193,252,248,137,44,36, | 348 | 240,255,137,84,36,16,255,248,1,57,200,15,134,244,124,129,120,253,4,239,15, |
349 | 137,133,233,232,251,1,19,139,141,233,139,133,233,41,200,193,232,3,131,192, | 349 | 135,244,125,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,33,213,255, |
350 | 1,139,113,252,252,139,84,36,4,1,202,139,108,36,8,85,139,105,252,248,195,248, | 350 | 221,0,216,68,36,16,221,28,36,35,44,36,255,131,232,8,252,233,244,1,255,248, |
351 | 134,255,15,182,131,233,168,235,15,133,244,251,168,235,15,133,244,247,168, | 351 | 126,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242, |
352 | 235,15,132,244,247,252,255,139,233,252,233,244,247,255,248,135,15,182,131, | 352 | 15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193, |
353 | 233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132, | 353 | 102,15,126,197,255,248,126,129,252,248,239,15,130,244,54,129,121,253,4,239, |
354 | 244,247,168,235,15,132,244,251,248,1,139,108,36,48,139,68,36,20,137,68,36, | 354 | 15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44, |
355 | 8,137,149,233,137,116,36,4,137,44,36,232,251,1,20,248,4,139,149,233,15,182, | 355 | 36,255,252,242,15,16,0,252,242,15,88,193,102,15,126,194,9,213,255,221,0,216, |
356 | 78,252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,171, | 356 | 68,36,16,221,28,36,11,44,36,255,248,127,129,252,248,239,15,130,244,54,129, |
357 | 233,248,136,255,139,108,36,48,137,149,233,141,139,233,137,116,36,4,137,12, | 357 | 121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205, |
358 | 36,137,171,233,137,116,36,24,232,251,1,21,252,233,244,4,255,248,137,255,139, | 358 | 102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,127,129,252,248, |
359 | 108,36,48,137,149,233,141,139,233,137,116,36,4,137,12,36,137,171,233,137, | 359 | 239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0, |
360 | 116,36,24,232,251,1,21,139,149,233,139,6,15,182,204,15,182,232,131,198,4, | 360 | 192,89,216,68,36,16,221,28,36,139,44,36,255,252,242,15,16,0,252,242,15,88, |
361 | 193,232,16,252,255,36,171,255,248,138,255,85,141,108,36,12,85,83,82,81,80, | 361 | 193,102,15,126,194,49,213,255,221,0,216,68,36,16,221,28,36,51,44,36,255,248, |
362 | 15,182,69,252,252,138,101,252,248,137,125,252,252,137,117,252,248,139,93, | 362 | 128,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,252,242, |
363 | 0,139,139,233,199,131,233,237,137,131,233,137,139,233,129,252,236,239,252, | 363 | 15,16,1,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,15,88,193, |
364 | 247,131,233,237,15,132,244,247,252,242,15,17,125,216,252,242,15,17,117,208, | 364 | 102,15,126,197,255,248,128,129,252,248,239,15,130,244,54,129,121,253,4,239, |
365 | 252,242,15,17,109,200,252,242,15,17,101,192,252,242,15,17,93,184,252,242, | 365 | 15,135,244,54,221,1,199,68,36,16,0,0,192,89,216,68,36,16,221,28,36,139,44, |
366 | 15,17,85,176,252,242,15,17,77,168,252,242,15,17,69,160,248,1,139,171,233, | 366 | 36,255,15,205,252,233,244,129,255,248,130,129,252,248,239,15,130,244,54,129, |
367 | 139,147,233,137,171,233,141,68,36,16,137,149,233,141,139,233,137,68,36,4, | 367 | 121,253,4,239,15,135,244,54,252,242,15,16,1,189,0,0,56,67,102,15,110,205, |
368 | 137,12,36,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108,36,48,255, | 368 | 102,15,112,201,81,252,242,15,88,193,102,15,126,197,255,248,130,129,252,248, |
369 | 248,139,255,139,122,252,248,139,191,233,139,191,233,199,131,233,0,0,0,0,199, | 369 | 239,15,130,244,54,129,121,253,4,239,15,135,244,54,221,1,199,68,36,16,0,0, |
370 | 131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, | 370 | 192,89,216,68,36,16,221,28,36,139,44,36,255,252,247,213,255,248,129,252,242, |
371 | 255,248,79,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252, | 371 | 15,42,197,252,233,244,62,248,124,252,242,15,42,197,139,84,36,16,252,233,244, |
372 | 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68, | 372 | 62,255,248,129,248,124,137,44,36,219,4,36,252,233,244,63,255,248,125,255, |
373 | 36,8,195,248,81,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37, | 373 | 139,68,36,20,252,233,244,54,255,248,131,129,252,248,239,15,130,244,54,129, |
374 | 252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139, | 374 | 121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16, |
375 | 68,36,8,195,248,102,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4, | 375 | 1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242, |
376 | 102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,248, | 376 | 15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248, |
377 | 140,255,15,40,232,252,242,15,94,193,102,15,252,239,210,102,15,118,210,102, | 377 | 131,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121, |
378 | 15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,224,102, | 378 | 253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36, |
379 | 15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252, | 379 | 16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211, |
380 | 242,15,92,227,102,15,86,226,184,0,0,252,240,63,102,15,110,208,102,15,112, | 380 | 229,137,193,252,233,244,129,255,248,132,129,252,248,239,15,130,244,54,129, |
381 | 210,81,252,242,15,194,196,1,102,15,84,194,252,242,15,92,224,15,40,197,252, | 381 | 121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,252,242,15,16, |
382 | 242,15,89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40,197,252, | 382 | 1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242, |
383 | 242,15,92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,0,4,102,11, | 383 | 15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201,255,248, |
384 | 68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217, | 384 | 132,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54,129,121, |
385 | 108,36,4,222,201,222,252,233,255,195,248,86,217,252,234,222,201,248,141,217, | 385 | 253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216,68,36, |
386 | 84,36,4,129,124,36,4,0,0,128,127,15,132,244,247,129,124,36,4,0,0,128,252, | 386 | 16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36,255,211, |
387 | 255,15,132,244,248,248,142,217,192,217,252,252,220,252,233,217,201,217,252, | 387 | 252,237,137,193,252,233,244,129,255,248,133,129,252,248,239,15,130,244,54, |
388 | 240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,217,252,238, | 388 | 129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,252,242, |
389 | 195,248,105,219,84,36,4,219,68,36,4,255,223,252,233,255,80,221,252,233,223, | 389 | 15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81, |
390 | 224,158,88,255,15,133,244,254,15,138,244,255,221,216,248,143,80,139,68,36, | 390 | 252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126,201, |
391 | 8,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,216,200,209, | 391 | 255,248,133,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244,54, |
392 | 232,252,233,244,1,248,2,209,232,15,132,244,251,217,192,248,3,216,200,209, | 392 | 129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89,216, |
393 | 232,15,132,244,250,15,131,244,3,255,220,201,252,233,244,3,248,4,222,201,248, | 393 | 68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44,36, |
394 | 5,88,195,248,6,15,132,244,5,15,130,244,253,217,232,222,252,241,252,247,216, | 394 | 255,211,252,253,137,193,252,233,244,129,255,248,134,129,252,248,239,15,130, |
395 | 131,252,248,1,15,132,244,5,252,233,244,1,248,7,221,216,217,232,88,195,248, | 395 | 244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,252, |
396 | 8,80,217,84,36,8,217,201,217,84,36,12,139,68,36,8,209,224,61,0,0,0,252,255, | 396 | 242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210, |
397 | 15,132,244,248,139,68,36,12,209,224,15,132,244,250,61,0,0,0,252,255,15,132, | 397 | 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126, |
398 | 244,250,255,88,217,252,241,252,233,244,142,248,9,217,232,255,223,252,234, | 398 | 201,255,248,134,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244, |
399 | 255,80,221,252,234,223,224,158,88,255,15,132,244,247,217,201,248,1,221,216, | 399 | 54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89, |
400 | 195,248,2,217,225,217,232,255,221,252,233,223,224,158,255,15,132,244,249, | 400 | 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44, |
401 | 221,216,217,225,217,252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,8,15, | 401 | 36,255,211,197,137,193,252,233,244,129,255,248,135,129,252,248,239,15,130, |
402 | 137,244,249,217,201,248,3,221,217,217,225,88,195,248,4,131,124,36,8,0,15, | 402 | 244,54,129,121,253,4,239,15,135,244,54,129,121,253,12,239,15,135,244,54,252, |
403 | 141,244,3,221,216,221,216,133,192,88,15,132,244,251,217,252,238,195,248,5, | 403 | 242,15,16,1,252,242,15,16,73,8,189,0,0,56,67,102,15,110,213,102,15,112,210, |
404 | 199,68,36,8,0,0,128,127,217,68,36,8,195,248,144,139,68,36,12,221,68,36,4, | 404 | 81,252,242,15,88,194,252,242,15,88,202,137,200,102,15,126,197,102,15,126, |
405 | 131,252,248,1,15,130,244,79,15,132,244,81,131,252,248,3,15,130,244,102,15, | 405 | 201,255,248,135,129,252,248,239,15,130,244,54,129,121,253,4,239,15,135,244, |
406 | 135,244,247,255,217,252,250,195,248,1,131,252,248,5,15,130,244,86,15,132, | 406 | 54,129,121,253,12,239,15,135,244,54,221,1,221,65,8,199,68,36,16,0,0,192,89, |
407 | 244,141,131,252,248,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217, | 407 | 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,137,200,139,76,36,8,139,44, |
408 | 252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,248,9,15, | 408 | 36,255,211,205,137,193,252,233,244,129,248,116,184,237,252,233,244,54,248, |
409 | 132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217, | 409 | 118,184,237,248,54,139,108,36,48,41,202,137,113,252,252,137,116,36,24,137, |
410 | 252,254,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,217,252, | 410 | 84,36,8,137,141,233,141,68,193,252,248,137,44,36,141,144,233,137,133,233, |
411 | 255,195,248,1,217,252,242,221,216,195,248,9,204,248,145,255,139,68,36,20, | 411 | 139,73,252,248,59,149,233,15,135,244,251,252,255,145,233,133,192,15,133,244, |
412 | 252,242,15,16,68,36,4,252,242,15,16,76,36,12,131,252,248,1,15,132,244,247, | 412 | 249,248,1,139,141,233,255,139,133,233,41,200,193,232,3,131,192,1,139,105, |
413 | 15,135,244,248,252,242,15,88,193,252,233,244,253,248,1,252,242,15,92,193, | 413 | 252,248,139,84,36,8,1,202,57,113,252,252,15,133,244,248,252,255,165,233,248, |
414 | 252,233,244,253,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242, | 414 | 2,129,121,253,252,252,239,15,133,244,29,252,255,165,233,248,3,139,141,233, |
415 | 15,89,193,252,233,244,253,248,1,252,242,15,94,193,252,233,244,253,248,2,255, | 415 | 139,84,36,8,1,202,252,233,244,68,248,5,199,68,36,4,237,232,251,1,0,252,233, |
416 | 131,252,248,5,15,132,244,247,15,135,244,248,232,244,140,252,233,244,253,248, | 416 | 244,1,248,65,93,137,108,36,8,139,108,36,48,41,202,137,84,36,4,137,113,252, |
417 | 1,221,68,36,4,221,68,36,12,252,233,244,105,248,2,131,252,248,7,15,132,244, | 417 | 252,137,116,36,24,137,141,233,141,68,193,252,248,137,44,36,137,133,233,255, |
418 | 247,15,135,244,248,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193, | 418 | 232,251,1,19,139,141,233,139,133,233,41,200,193,232,3,131,192,1,139,113,252, |
419 | 252,233,244,253,248,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1, | 419 | 252,139,84,36,4,1,202,139,108,36,8,85,139,105,252,248,195,248,136,255,15, |
420 | 15,84,193,252,233,244,253,248,2,255,131,252,248,9,15,135,244,248,221,68,36, | 420 | 182,131,233,168,235,15,133,244,251,168,235,15,133,244,247,168,235,15,132, |
421 | 4,221,68,36,12,15,132,244,247,217,252,243,195,248,1,217,201,217,252,253,221, | 421 | 244,247,252,255,139,233,252,233,244,247,255,248,137,15,182,131,233,168,235, |
422 | 217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,252,242,15,93, | 422 | 15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,244,247,168, |
423 | 193,252,233,244,253,248,1,252,242,15,95,193,252,233,244,253,248,9,204,248, | 423 | 235,15,132,244,251,248,1,139,108,36,48,139,68,36,20,137,68,36,8,137,149,233, |
424 | 7,252,242,15,17,68,36,4,221,68,36,4,195,255,139,68,36,20,221,68,36,4,221, | 424 | 137,116,36,4,137,44,36,232,251,1,20,248,4,139,149,233,15,182,78,252,253,248, |
425 | 68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222, | 425 | 5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,171,233,248,138,255, |
426 | 252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195, | 426 | 139,108,36,48,137,149,233,141,139,233,137,116,36,4,137,12,36,137,171,233, |
427 | 248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,140,15,132,244,105,131, | 427 | 137,116,36,24,232,251,1,21,252,233,244,4,255,248,139,255,139,108,36,48,137, |
428 | 252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,221, | 428 | 149,233,141,139,233,137,116,36,4,137,12,36,137,171,233,137,116,36,24,232, |
429 | 216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252, | 429 | 251,1,21,139,149,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, |
430 | 255,36,171,255,248,140,255,85,141,108,36,12,85,83,82,81,80,15,182,69,252, | ||
431 | 252,138,101,252,248,137,125,252,252,137,117,252,248,139,93,0,139,139,233, | ||
432 | 199,131,233,237,137,131,233,137,139,233,129,252,236,239,252,247,131,233,237, | ||
433 | 15,132,244,247,252,242,15,17,125,216,252,242,15,17,117,208,252,242,15,17, | ||
434 | 109,200,252,242,15,17,101,192,252,242,15,17,93,184,252,242,15,17,85,176,252, | ||
435 | 242,15,17,77,168,252,242,15,17,69,160,248,1,139,171,233,139,147,233,137,171, | ||
436 | 233,141,68,36,16,137,149,233,141,139,233,137,68,36,4,137,12,36,232,251,1, | ||
437 | 22,137,196,139,149,233,139,116,36,24,137,108,36,48,255,248,141,255,139,122, | ||
438 | 252,248,139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6, | ||
439 | 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,81,255, | ||
440 | 217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247, | ||
441 | 102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255, | ||
442 | 248,142,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67, | ||
443 | 102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15, | ||
444 | 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202, | ||
445 | 184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,242,15,194,193,1, | ||
446 | 102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,83,255,217,124,36, | ||
447 | 4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68, | ||
448 | 36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,143,102, | ||
449 | 15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216, | ||
450 | 102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102, | ||
451 | 15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,184,0,0,252,240, | ||
452 | 191,102,15,110,208,102,15,112,210,81,252,242,15,194,193,6,102,15,84,194,252, | ||
453 | 242,15,92,200,15,40,193,248,1,195,248,103,255,217,124,36,4,137,68,36,8,102, | ||
454 | 184,0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108, | ||
455 | 36,4,139,68,36,8,195,255,248,144,102,15,252,239,210,102,15,118,210,102,15, | ||
456 | 115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15, | ||
457 | 84,202,102,15,46,217,15,134,244,247,102,15,85,208,15,40,193,252,242,15,88, | ||
458 | 203,252,242,15,92,203,184,0,0,252,240,63,102,15,110,216,102,15,112,219,81, | ||
459 | 252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40, | ||
460 | 193,248,1,195,248,145,255,15,40,232,252,242,15,94,193,102,15,252,239,210, | ||
461 | 102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219, | ||
462 | 81,15,40,224,102,15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252, | ||
463 | 242,15,88,227,252,242,15,92,227,102,15,86,226,184,0,0,252,240,63,102,15,110, | ||
464 | 208,102,15,112,210,81,252,242,15,194,196,1,102,15,84,194,252,242,15,92,224, | ||
465 | 15,40,197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,242,15,89,200, | ||
466 | 15,40,197,252,242,15,92,193,195,255,217,193,216,252,241,217,124,36,4,102, | ||
467 | 184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36, | ||
468 | 6,217,252,252,217,108,36,4,222,201,222,252,233,195,255,248,87,217,252,234, | ||
469 | 222,201,248,146,217,84,36,4,129,124,36,4,0,0,128,127,15,132,244,247,129,124, | ||
470 | 36,4,0,0,128,252,255,15,132,244,248,248,147,217,192,217,252,252,220,252,233, | ||
471 | 217,201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221, | ||
472 | 216,217,252,238,195,248,106,219,84,36,4,219,68,36,4,255,223,252,233,255,80, | ||
473 | 221,252,233,223,224,158,88,255,15,133,244,254,15,138,244,255,221,216,248, | ||
474 | 148,80,139,68,36,8,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133, | ||
475 | 244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251,217,192, | ||
476 | 248,3,216,200,209,232,15,132,244,250,15,131,244,3,255,220,201,252,233,244, | ||
477 | 3,248,4,222,201,248,5,88,195,248,6,15,132,244,5,15,130,244,253,217,232,222, | ||
478 | 252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221,216, | ||
479 | 217,232,88,195,248,8,80,217,84,36,8,217,201,217,84,36,12,139,68,36,8,209, | ||
480 | 224,61,0,0,0,252,255,15,132,244,248,139,68,36,12,209,224,15,132,244,250,61, | ||
481 | 0,0,0,252,255,15,132,244,250,255,88,217,252,241,252,233,244,147,248,9,217, | ||
482 | 232,255,223,252,234,255,80,221,252,234,223,224,158,88,255,15,132,244,247, | ||
483 | 217,201,248,1,221,216,195,248,2,217,225,217,232,255,221,252,233,223,224,158, | ||
484 | 255,15,132,244,249,221,216,217,225,217,252,238,184,0,0,0,0,15,146,208,209, | ||
485 | 200,51,68,36,8,15,137,244,249,217,201,248,3,221,217,217,225,88,195,248,4, | ||
486 | 131,124,36,8,0,15,141,244,3,221,216,221,216,133,192,88,15,132,244,251,217, | ||
487 | 252,238,195,248,5,199,68,36,8,0,0,128,127,217,68,36,8,195,248,149,255,139, | ||
488 | 68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,244,248, | ||
489 | 232,244,81,252,233,244,253,248,1,232,244,83,252,233,244,253,248,2,131,252, | ||
490 | 248,3,15,132,244,247,15,135,244,248,232,244,103,255,252,233,244,253,248,1, | ||
491 | 252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,221,68, | ||
492 | 36,4,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,81,15,132,244, | ||
493 | 83,131,252,248,3,15,130,244,103,15,135,244,248,217,252,250,195,248,2,255, | ||
494 | 131,252,248,5,15,130,244,87,15,132,244,146,131,252,248,7,15,132,244,247,15, | ||
495 | 135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217, | ||
496 | 252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252,236, | ||
497 | 217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,248,11,15,132, | ||
498 | 244,247,15,135,244,255,255,217,252,255,195,248,1,217,252,242,221,216,195, | ||
499 | 248,9,204,248,150,255,139,68,36,20,252,242,15,16,68,36,4,252,242,15,16,76, | ||
500 | 36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,252,233, | ||
501 | 244,253,248,1,252,242,15,92,193,252,233,244,253,248,2,131,252,248,3,15,132, | ||
502 | 244,247,15,135,244,248,252,242,15,89,193,252,233,244,253,248,1,252,242,15, | ||
503 | 94,193,252,233,244,253,248,2,255,131,252,248,5,15,132,244,247,15,135,244, | ||
504 | 248,232,244,145,252,233,244,253,248,1,221,68,36,4,221,68,36,12,252,233,244, | ||
505 | 106,248,2,131,252,248,7,15,132,244,247,15,135,244,248,184,0,0,0,128,102,15, | ||
506 | 110,200,102,15,112,201,81,15,87,193,252,233,244,253,248,1,102,15,252,239, | ||
507 | 201,102,15,118,201,102,15,115,209,1,15,84,193,252,233,244,253,248,2,255,131, | ||
508 | 252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,15,132,244,247,217,252, | ||
430 | 243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132, | 509 | 243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132, |
431 | 244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,252, | 510 | 244,247,15,135,244,255,252,242,15,93,193,252,233,244,253,248,1,252,242,15, |
432 | 233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248, | 511 | 95,193,252,233,244,253,248,9,204,248,7,252,242,15,17,68,36,4,221,68,36,4, |
433 | 217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244, | 512 | 195,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247, |
434 | 248,217,201,248,2,221,216,195,255,248,9,204,255,248,146,156,90,137,209,129, | 513 | 15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132, |
435 | 252,242,0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87, | 514 | 244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131,252,248, |
436 | 83,15,162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195, | 515 | 5,15,130,244,145,15,132,244,106,131,252,248,7,15,132,244,247,15,135,244,248, |
437 | 255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244, | 516 | 255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15, |
438 | 41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4, | 517 | 132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,221, |
439 | 194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15, | 518 | 217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,233, |
440 | 134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,253,134, | 519 | 219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,223, |
441 | 233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, | 520 | 224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,225, |
442 | 255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251,129,124,253,202, | 521 | 223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,9, |
443 | 4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202, | 522 | 204,255,248,151,156,90,137,209,129,252,242,0,0,32,0,82,157,156,90,49,192, |
444 | 221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,244, | 523 | 57,209,15,132,244,247,139,68,36,4,87,83,15,162,139,124,36,16,137,7,137,95, |
445 | 247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183, | 524 | 4,137,79,8,137,87,12,91,95,248,1,195,255,249,255,129,124,253,202,4,239,15, |
446 | 70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2, | 525 | 135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242,15,16,4,194,131, |
447 | 129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129, | 526 | 198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,223,252,233,221, |
448 | 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133, | 527 | 216,255,218,252,233,223,224,158,255,15,134,244,248,255,15,131,244,248,255, |
449 | 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255, | 528 | 248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,182, |
450 | 252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59, | 529 | 232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,131,198,4,129,252, |
451 | 12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,252,242,15, | 530 | 253,239,15,135,244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15, |
452 | 16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252,247,208,131,198, | 531 | 16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133, |
453 | 4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15,131,244, | 532 | 244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,183,70,252,254,141, |
454 | 247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,15,183, | 533 | 180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,180,253,134,233,248, |
455 | 70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198, | 534 | 1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12, |
456 | 4,193,232,16,252,255,36,171,255,139,108,194,4,139,4,194,137,108,202,4,137, | 535 | 202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233, |
457 | 4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, | 536 | 133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237, |
458 | 49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,204, | 537 | 255,189,1,0,0,0,255,252,233,244,45,255,252,247,208,131,198,4,129,124,253, |
459 | 15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,253,194,4,239, | 538 | 202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198,4,129,124,253,202, |
460 | 15,135,244,48,255,252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15, | 539 | 4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,46,4,202,255,221,4,202, |
461 | 112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202, | 540 | 221,4,199,255,252,247,208,131,198,4,57,68,202,4,255,139,108,194,4,131,198, |
462 | 255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,242, | 541 | 4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4, |
463 | 15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202, | 542 | 139,44,194,137,44,202,255,15,183,70,252,254,141,180,253,134,233,248,1,139, |
464 | 255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2, | 543 | 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194, |
465 | 129,124,253,194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,252, | 544 | 4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4, |
466 | 242,15,42,192,137,252,234,255,137,4,36,137,252,234,219,4,36,255,15,182,78, | 545 | 193,232,16,252,255,36,171,255,49,252,237,129,124,253,194,4,239,129,213,239, |
467 | 252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234, | 546 | 137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, |
468 | 4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221, | 547 | 171,255,129,124,253,194,4,239,15,135,244,48,255,252,242,15,16,4,194,184,0, |
469 | 4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252,242, | 548 | 0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,242,15,17,4,202,255, |
470 | 15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124, | 549 | 221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139, |
471 | 253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,244,49,255,252, | 550 | 4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219, |
472 | 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252, | 551 | 128,233,248,1,221,28,202,255,139,6,15,182,204,15,182,232,131,198,4,193,232, |
473 | 242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255, | 552 | 16,252,255,36,171,248,2,129,124,253,194,4,239,15,133,244,50,139,12,194,137, |
474 | 252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234, | 553 | 213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,137,4,36,137,252,234, |
475 | 255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234,220,36, | 554 | 219,4,36,255,15,182,78,252,253,252,233,244,1,255,15,182,252,236,15,182,192, |
476 | 194,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,4,252,234,220, | 555 | 255,129,124,253,252,234,4,239,15,135,244,46,255,252,242,15,16,4,252,234,252, |
477 | 12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,221,4,199,220, | 556 | 242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234,4,239, |
478 | 12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252, | 557 | 15,135,244,47,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,221,4,199, |
479 | 234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,199,255,221,4, | 558 | 220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,194, |
480 | 252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,252,234,255,221, | 559 | 4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221, |
481 | 4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,255, | 560 | 4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221, |
482 | 221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199, | 561 | 4,252,234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255, |
483 | 255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252, | 562 | 221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194, |
484 | 234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16, | 563 | 255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,15,89,4, |
485 | 12,194,255,221,4,252,234,221,4,194,255,248,147,232,244,140,255,252,233,244, | 564 | 199,255,221,4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4, |
486 | 147,255,232,244,105,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76, | 565 | 252,234,255,221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242, |
487 | 36,4,137,68,36,8,248,33,139,108,36,48,137,44,36,137,116,36,24,137,149,233, | 566 | 15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252, |
488 | 232,251,1,23,139,149,233,133,192,15,133,244,42,15,182,110,252,255,15,182, | 567 | 242,15,94,4,199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252, |
489 | 78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6, | 568 | 242,15,94,4,252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252, |
490 | 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208, | 569 | 234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4, |
491 | 139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198, | 570 | 252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16, |
492 | 4,193,232,16,252,255,36,171,255,223,70,252,254,221,28,202,139,6,15,182,204, | 571 | 4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15, |
493 | 15,182,232,131,198,4,193,232,16,252,255,36,171,255,221,4,199,221,28,202,139, | 572 | 16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,152, |
494 | 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208, | 573 | 232,244,145,255,252,233,244,152,255,232,244,106,255,15,182,252,236,15,182, |
574 | 192,141,12,194,41,232,137,76,36,4,137,68,36,8,248,33,139,108,36,48,137,44, | ||
575 | 36,137,116,36,24,137,149,233,232,251,1,23,139,149,233,133,192,15,133,244, | ||
576 | 42,15,182,110,252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,137, | ||
577 | 68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, | ||
578 | 255,36,171,255,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15, | ||
579 | 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,15,191,192,252, | ||
580 | 242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242, | ||
581 | 15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,252,247,208, | ||
495 | 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, | 582 | 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, |
496 | 171,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131, | 583 | 171,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131, |
497 | 193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16, | 584 | 193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16, |
@@ -507,127 +594,132 @@ static const unsigned char build_actionlist[12791] = { | |||
507 | 133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, | 594 | 133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, |
508 | 36,171,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1, | 595 | 36,171,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1, |
509 | 137,213,137,194,141,139,233,232,251,1,24,137,252,234,252,233,244,1,255,139, | 596 | 137,213,137,194,141,139,233,232,251,1,24,137,252,234,252,233,244,1,255,139, |
510 | 106,252,248,221,4,199,139,172,253,141,233,139,141,233,221,25,139,6,15,182, | 597 | 106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,255, |
511 | 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,106, | 598 | 252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139, |
512 | 252,248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182, | 599 | 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,180,253, |
513 | 232,131,198,4,193,232,16,252,255,36,171,255,141,180,253,134,233,139,108,36, | 600 | 134,233,139,108,36,48,131,189,233,0,15,132,244,247,141,12,202,137,76,36,4, |
514 | 48,131,189,233,0,15,132,244,247,141,12,202,137,76,36,4,137,44,36,137,149, | 601 | 137,44,36,137,149,233,232,251,1,25,139,149,233,248,1,139,6,15,182,204,15, |
515 | 233,232,251,1,25,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4, | 602 | 182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74,252,248, |
516 | 193,232,16,252,255,36,171,255,252,247,208,139,74,252,248,139,4,135,139,108, | 603 | 139,4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,116,36,24,137,44,36,137, |
517 | 36,48,137,76,36,8,137,68,36,4,137,116,36,24,137,44,36,137,149,233,232,251, | 604 | 149,233,232,251,1,26,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4, |
518 | 1,26,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182, | 605 | 237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,137, |
519 | 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,137,197,37,252,255, | 606 | 197,37,252,255,7,0,0,193,252,237,11,61,252,255,7,0,0,15,148,209,137,108,36, |
520 | 7,0,0,193,252,237,11,61,252,255,7,0,0,15,148,209,137,108,36,8,1,200,139,108, | 607 | 8,1,200,139,108,36,48,1,200,137,68,36,4,137,116,36,24,139,139,233,137,44, |
521 | 36,48,1,200,137,68,36,4,137,116,36,24,139,139,233,137,44,36,59,139,233,137, | 608 | 36,59,139,233,137,149,233,15,131,244,248,248,1,232,251,1,27,139,149,233,15, |
522 | 149,233,15,131,244,248,248,1,232,251,1,27,139,149,233,15,182,78,252,253,137, | 609 | 182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131, |
523 | 4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, | 610 | 198,4,193,232,16,252,255,36,171,248,2,137,252,233,232,251,1,28,252,233,244, |
524 | 255,36,171,248,2,137,252,233,232,251,1,28,252,233,244,1,255,252,247,208,139, | 611 | 1,255,252,247,208,139,108,36,48,139,139,233,137,116,36,24,59,139,233,137, |
525 | 108,36,48,139,139,233,137,116,36,24,59,139,233,137,149,233,15,131,244,249, | 612 | 149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,29,139,149, |
526 | 248,2,139,20,135,137,252,233,232,251,1,29,139,149,233,15,182,78,252,253,137, | 613 | 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182, |
527 | 4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, | 614 | 232,131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,1,28,15, |
528 | 255,36,171,248,3,137,252,233,232,251,1,28,15,183,70,252,254,252,247,208,252, | 615 | 183,70,252,254,252,247,208,252,233,244,2,255,252,247,208,139,106,252,248, |
529 | 233,244,2,255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244, | 616 | 139,173,233,139,4,135,252,233,244,153,255,252,247,208,139,106,252,248,139, |
530 | 148,255,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,149, | 617 | 173,233,139,4,135,252,233,244,154,255,15,182,252,236,15,182,192,129,124,253, |
531 | 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139, | 618 | 252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244, |
532 | 44,252,234,129,124,253,194,4,239,15,135,244,251,221,4,194,219,20,36,219,4, | 619 | 251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46, |
533 | 36,255,139,4,36,15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233, | 620 | 193,255,221,4,194,219,20,36,219,4,36,255,139,4,36,255,15,133,244,36,59,133, |
534 | 129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68, | 621 | 233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248, |
535 | 202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, | 622 | 1,139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131, |
536 | 2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,36, | 623 | 198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139,141, |
537 | 15,182,78,252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244, | 624 | 233,252,246,129,233,235,15,132,244,36,15,182,78,252,253,252,233,244,1,248, |
538 | 36,139,4,194,252,233,244,148,255,15,182,252,236,15,182,192,252,247,208,139, | 625 | 5,255,129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,153,255,15, |
539 | 4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,148,139, | 626 | 182,252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15, |
540 | 141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244, | 627 | 133,244,34,139,44,252,234,248,153,139,141,233,35,136,233,105,201,239,3,141, |
541 | 250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,70, | 628 | 233,248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121, |
542 | 252,253,139,41,139,73,4,137,44,194,248,2,255,137,76,194,4,139,6,15,182,204, | 629 | 253,4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248, |
543 | 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,15,182,70,252,253,185, | 630 | 2,255,137,76,194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, |
544 | 237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,233, | 631 | 36,171,248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133, |
545 | 133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,34,255, | 632 | 201,15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235, |
546 | 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,44, | 633 | 15,133,244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252, |
547 | 252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,15, | 634 | 234,4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3, |
548 | 132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204, | 635 | 3,133,233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202, |
549 | 15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132, | 636 | 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, |
550 | 244,1,139,141,233,252,246,129,233,235,15,132,244,35,255,15,182,252,236,15, | 637 | 171,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132, |
551 | 182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,129,124,253, | 638 | 244,35,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244, |
552 | 194,4,239,15,135,244,251,221,4,194,219,20,36,219,4,36,255,139,4,36,15,133, | 639 | 39,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39, |
553 | 244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15, | 640 | 59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244, |
554 | 132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4, | 641 | 249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202, |
555 | 139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232, | 642 | 137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, |
556 | 16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246, | 643 | 36,171,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235, |
557 | 129,233,235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253, | 644 | 15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239, |
558 | 194,4,239,15,133,244,39,139,4,194,252,233,244,149,248,7,128,165,233,235,139, | 645 | 15,133,244,39,139,4,194,252,233,244,154,248,7,128,165,233,235,139,139,233, |
559 | 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182, | 646 | 137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236, |
560 | 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133, | 647 | 15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37, |
561 | 244,37,139,44,252,234,248,149,139,141,233,35,136,233,105,201,239,198,133, | 648 | 139,44,252,234,248,154,139,141,233,35,136,233,105,201,239,198,133,233,0,3, |
562 | 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244, | 649 | 141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129, |
563 | 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133, | 650 | 121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253, |
564 | 244,253,248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139, | 651 | 248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15, |
565 | 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189, | 652 | 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233, |
566 | 233,0,15,132,244,2,137,12,36,139,141,233,252,246,129,233,235,15,132,244,37, | 653 | 0,15,132,244,2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,37, |
567 | 139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141, | 654 | 139,76,36,16,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139, |
568 | 233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68, | 655 | 141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137, |
569 | 36,16,199,68,36,20,237,141,68,36,16,137,108,36,12,137,108,36,4,139,108,36, | 656 | 68,36,16,199,68,36,20,237,141,68,36,16,137,108,36,12,137,108,36,4,139,108, |
570 | 48,137,68,36,8,137,44,36,137,116,36,24,137,149,233,232,251,1,30,139,149,233, | 657 | 36,48,137,68,36,8,137,44,36,137,116,36,24,137,149,233,232,251,1,30,139,149, |
571 | 139,108,36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137, | 658 | 233,139,108,36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233, |
572 | 171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253, | 659 | 137,171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124, |
573 | 252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224, | 660 | 253,252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193, |
574 | 3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15, | 661 | 224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235, |
575 | 133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204, | 662 | 15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182, |
576 | 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132, | 663 | 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15, |
577 | 244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78,252,253, | 664 | 132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78,252, |
578 | 252,233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15, | 665 | 253,252,233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233, |
579 | 182,78,252,253,252,233,244,2,255,137,124,36,16,221,4,199,219,92,36,12,248, | 666 | 15,182,78,252,253,252,233,244,2,255,137,124,36,16,255,221,4,199,219,92,36, |
580 | 1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139, | 667 | 12,255,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253, |
581 | 68,36,20,139,124,36,12,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131, | 668 | 248,2,139,68,36,20,255,252,242,15,45,252,248,255,139,124,36,12,255,131,232, |
582 | 244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131, | 669 | 1,15,132,244,250,1,252,248,59,133,233,15,131,244,251,41,252,248,193,231,3, |
583 | 193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139, | 670 | 3,189,233,248,3,139,41,137,47,139,105,4,131,193,8,137,111,4,131,199,8,131, |
584 | 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,137,108, | 671 | 232,1,15,133,244,3,248,4,139,124,36,16,139,6,15,182,204,15,182,232,131,198, |
585 | 36,4,139,108,36,48,137,68,36,8,137,44,36,137,116,36,24,137,149,233,232,251, | 672 | 4,193,232,16,252,255,36,171,248,5,137,108,36,4,139,108,36,48,137,68,36,8, |
586 | 1,31,139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235, | 673 | 137,44,36,137,116,36,24,137,149,233,232,251,1,31,139,149,233,15,182,78,252, |
587 | 139,131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,20,255,141, | 674 | 253,252,233,244,1,248,7,128,165,233,235,139,131,233,137,171,233,255,137,133, |
588 | 76,202,8,139,105,252,248,129,121,253,252,252,239,15,133,244,29,252,255,165, | 675 | 233,252,233,244,2,255,3,68,36,20,255,141,76,202,8,139,105,252,248,129,121, |
589 | 233,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133, | 676 | 253,252,252,239,15,133,244,29,252,255,165,233,255,141,76,202,8,137,215,139, |
590 | 244,29,248,51,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106, | 677 | 105,252,248,129,121,253,252,252,239,15,133,244,29,248,51,139,114,252,252, |
591 | 252,248,137,68,36,20,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105, | 678 | 252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,232, |
592 | 4,137,111,4,131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248, | 679 | 1,15,132,244,249,248,2,139,41,137,47,139,105,4,137,111,4,131,199,8,131,193, |
593 | 3,137,209,128,189,233,1,15,135,244,251,248,4,139,68,36,20,252,255,165,233, | 680 | 8,131,232,1,15,133,244,2,139,106,252,248,248,3,137,209,128,189,233,1,15,135, |
594 | 248,5,255,252,247,198,237,15,133,244,4,15,182,70,252,253,252,247,208,141, | 681 | 244,251,248,4,139,68,36,20,252,255,165,233,248,5,255,252,247,198,237,15,133, |
595 | 20,194,139,122,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139, | 682 | 244,4,15,182,70,252,253,252,247,208,141,20,194,139,122,252,248,139,191,233, |
596 | 244,1,131,230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255, | 683 | 139,191,233,252,233,244,4,248,7,15,139,244,1,131,230,252,248,41,252,242,137, |
597 | 141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139, | 684 | 215,139,114,252,252,252,233,244,1,255,141,76,202,8,139,105,232,139,65,252, |
598 | 65,252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137, | 685 | 236,137,41,137,65,4,139,105,252,240,139,65,252,244,137,105,8,137,65,12,139, |
599 | 65,252,252,129,252,248,239,184,3,0,0,0,15,133,244,29,252,255,165,233,255, | 686 | 105,224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,3,0, |
600 | 15,182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124, | 687 | 0,0,15,133,244,29,252,255,165,233,255,15,182,252,236,139,66,252,248,141,12, |
601 | 36,8,141,188,253,194,233,43,122,252,252,133,252,237,15,132,244,251,141,108, | 688 | 202,139,128,233,15,182,128,233,137,124,36,8,141,188,253,194,233,43,122,252, |
602 | 252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252, | 689 | 252,133,252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,131,244, |
603 | 252,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130, | 690 | 248,248,1,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,131,193, |
604 | 244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124, | 691 | 8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,131,193, |
605 | 36,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, | 692 | 8,57,252,233,15,130,244,2,248,3,139,124,36,8,139,6,15,182,204,15,182,232, |
606 | 5,199,68,36,20,1,0,0,0,137,208,41,252,248,15,134,244,3,255,137,197,193,252, | 693 | 131,198,4,193,232,16,252,255,36,171,248,5,199,68,36,20,1,0,0,0,137,208,41, |
607 | 237,3,137,108,36,4,131,197,1,137,108,36,20,139,108,36,48,1,200,59,133,233, | 694 | 252,248,15,134,244,3,255,137,197,193,252,237,3,137,108,36,4,131,197,1,137, |
608 | 15,135,244,253,248,6,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65, | 695 | 108,36,20,139,108,36,48,1,200,59,133,233,15,135,244,253,248,6,139,71,252, |
609 | 4,131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233, | 696 | 248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6, |
610 | 137,116,36,24,41,215,137,44,36,232,251,1,0,139,149,233,139,141,233,1,215, | 697 | 252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24,41,215,137,44,36, |
611 | 252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,20,252,247, | 698 | 232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225,3,255, |
612 | 198,237,15,133,244,253,255,248,17,137,215,131,232,1,15,132,244,249,248,2, | 699 | 248,1,139,114,252,252,137,68,36,20,252,247,198,237,15,133,244,253,255,248, |
613 | 139,44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,199,8,131,232, | 700 | 17,137,215,131,232,1,15,132,244,249,248,2,139,44,15,137,111,252,248,139,108, |
614 | 1,15,133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5,57,197,15,135, | 701 | 15,4,137,111,252,252,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,20, |
615 | 244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,15, | 702 | 15,182,110,252,255,248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,252, |
616 | 182,78,252,253,252,247,209,141,20,202,139,122,252,248,139,191,233,139,191, | 703 | 252,139,44,10,137,106,252,248,255,248,5,56,70,252,255,15,135,244,252,255, |
617 | 233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,6, | 704 | 15,182,78,252,253,252,247,209,141,20,202,139,122,252,248,139,191,233,139, |
618 | 255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,237,255,131,192,1, | 705 | 191,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, |
619 | 252,233,244,5,248,7,15,139,244,18,131,230,252,248,41,252,242,255,1,252,241, | 706 | 6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,237,255,131,192, |
620 | 255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132,244, | 707 | 1,252,233,244,5,248,7,15,139,244,18,131,230,252,248,41,252,242,255,1,252, |
621 | 136,255,141,12,202,255,129,121,253,4,239,15,135,244,52,129,121,253,12,239, | 708 | 241,255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,15,132, |
622 | 15,135,244,52,255,139,105,20,255,129,252,253,239,15,135,244,52,255,221,65, | 709 | 244,138,255,141,12,202,255,129,121,253,4,239,15,135,244,52,129,121,253,12, |
623 | 8,221,1,255,220,65,16,221,17,255,221,81,24,133,252,237,15,136,244,247,217, | 710 | 239,15,135,244,52,255,139,105,20,255,129,252,253,239,15,135,244,52,255,252, |
624 | 201,248,1,255,15,183,70,252,254,255,15,131,244,248,141,180,253,134,233,255, | 711 | 242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133, |
625 | 141,180,253,134,233,15,183,70,252,254,15,131,245,255,15,130,244,248,141,180, | 712 | 252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242, |
626 | 253,134,233,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137, | 713 | 15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237, |
627 | 105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139, | 714 | 15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183, |
628 | 1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139, | 715 | 70,252,254,255,15,131,244,248,141,180,253,134,233,255,141,180,253,134,233, |
629 | 108,36,48,137,147,233,137,171,233,252,255,224,255,141,180,253,134,233,139, | 716 | 15,183,70,252,254,15,131,245,255,15,130,244,248,141,180,253,134,233,255,248, |
630 | 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,254,0 | 717 | 3,102,15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15, |
718 | 132,244,247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141, | ||
719 | 180,253,134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139, | ||
720 | 4,129,139,128,233,139,108,36,48,137,147,233,137,171,233,252,255,224,255,141, | ||
721 | 180,253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, | ||
722 | 36,171,255,254,0 | ||
631 | }; | 723 | }; |
632 | 724 | ||
633 | enum { | 725 | enum { |
@@ -683,6 +775,7 @@ enum { | |||
683 | GLOB_ff_setmetatable, | 775 | GLOB_ff_setmetatable, |
684 | GLOB_ff_rawget, | 776 | GLOB_ff_rawget, |
685 | GLOB_ff_tonumber, | 777 | GLOB_ff_tonumber, |
778 | GLOB_fff_resxmm0, | ||
686 | GLOB_fff_resn, | 779 | GLOB_fff_resn, |
687 | GLOB_ff_tostring, | 780 | GLOB_ff_tostring, |
688 | GLOB_fff_gcstep, | 781 | GLOB_fff_gcstep, |
@@ -699,11 +792,11 @@ enum { | |||
699 | GLOB_ff_coroutine_wrap_aux, | 792 | GLOB_ff_coroutine_wrap_aux, |
700 | GLOB_ff_coroutine_yield, | 793 | GLOB_ff_coroutine_yield, |
701 | GLOB_ff_math_abs, | 794 | GLOB_ff_math_abs, |
795 | GLOB_ff_math_sqrt, | ||
702 | GLOB_ff_math_floor, | 796 | GLOB_ff_math_floor, |
703 | GLOB_vm_floor, | 797 | GLOB_vm_floor, |
704 | GLOB_ff_math_ceil, | 798 | GLOB_ff_math_ceil, |
705 | GLOB_vm_ceil, | 799 | GLOB_vm_ceil, |
706 | GLOB_ff_math_sqrt, | ||
707 | GLOB_ff_math_log, | 800 | GLOB_ff_math_log, |
708 | GLOB_ff_math_log10, | 801 | GLOB_ff_math_log10, |
709 | GLOB_ff_math_exp, | 802 | GLOB_ff_math_exp, |
@@ -744,11 +837,12 @@ enum { | |||
744 | GLOB_ff_table_getn, | 837 | GLOB_ff_table_getn, |
745 | GLOB_ff_bit_tobit, | 838 | GLOB_ff_bit_tobit, |
746 | GLOB_ff_bit_band, | 839 | GLOB_ff_bit_band, |
747 | GLOB_fff_resbit, | 840 | GLOB_fff_resbit_op, |
748 | GLOB_fff_fallback_bit_op, | 841 | GLOB_fff_fallback_bit_op, |
749 | GLOB_ff_bit_bor, | 842 | GLOB_ff_bit_bor, |
750 | GLOB_ff_bit_bxor, | 843 | GLOB_ff_bit_bxor, |
751 | GLOB_ff_bit_bswap, | 844 | GLOB_ff_bit_bswap, |
845 | GLOB_fff_resbit, | ||
752 | GLOB_ff_bit_bnot, | 846 | GLOB_ff_bit_bnot, |
753 | GLOB_ff_bit_lshift, | 847 | GLOB_ff_bit_lshift, |
754 | GLOB_ff_bit_rshift, | 848 | GLOB_ff_bit_rshift, |
@@ -761,6 +855,9 @@ enum { | |||
761 | GLOB_vm_hotcall, | 855 | GLOB_vm_hotcall, |
762 | GLOB_vm_exit_handler, | 856 | GLOB_vm_exit_handler, |
763 | GLOB_vm_exit_interp, | 857 | GLOB_vm_exit_interp, |
858 | GLOB_vm_floor_sse, | ||
859 | GLOB_vm_ceil_sse, | ||
860 | GLOB_vm_trunc_sse, | ||
764 | GLOB_vm_mod, | 861 | GLOB_vm_mod, |
765 | GLOB_vm_exp2, | 862 | GLOB_vm_exp2, |
766 | GLOB_vm_exp2raw, | 863 | GLOB_vm_exp2raw, |
@@ -826,6 +923,7 @@ static const char *const globnames[] = { | |||
826 | "ff_setmetatable", | 923 | "ff_setmetatable", |
827 | "ff_rawget", | 924 | "ff_rawget", |
828 | "ff_tonumber", | 925 | "ff_tonumber", |
926 | "fff_resxmm0", | ||
829 | "fff_resn", | 927 | "fff_resn", |
830 | "ff_tostring", | 928 | "ff_tostring", |
831 | "fff_gcstep", | 929 | "fff_gcstep", |
@@ -842,11 +940,11 @@ static const char *const globnames[] = { | |||
842 | "ff_coroutine_wrap_aux", | 940 | "ff_coroutine_wrap_aux", |
843 | "ff_coroutine_yield", | 941 | "ff_coroutine_yield", |
844 | "ff_math_abs", | 942 | "ff_math_abs", |
943 | "ff_math_sqrt", | ||
845 | "ff_math_floor", | 944 | "ff_math_floor", |
846 | "vm_floor", | 945 | "vm_floor", |
847 | "ff_math_ceil", | 946 | "ff_math_ceil", |
848 | "vm_ceil", | 947 | "vm_ceil", |
849 | "ff_math_sqrt", | ||
850 | "ff_math_log", | 948 | "ff_math_log", |
851 | "ff_math_log10", | 949 | "ff_math_log10", |
852 | "ff_math_exp", | 950 | "ff_math_exp", |
@@ -887,11 +985,12 @@ static const char *const globnames[] = { | |||
887 | "ff_table_getn", | 985 | "ff_table_getn", |
888 | "ff_bit_tobit", | 986 | "ff_bit_tobit", |
889 | "ff_bit_band", | 987 | "ff_bit_band", |
890 | "fff_resbit", | 988 | "fff_resbit_op", |
891 | "fff_fallback_bit_op", | 989 | "fff_fallback_bit_op", |
892 | "ff_bit_bor", | 990 | "ff_bit_bor", |
893 | "ff_bit_bxor", | 991 | "ff_bit_bxor", |
894 | "ff_bit_bswap", | 992 | "ff_bit_bswap", |
993 | "fff_resbit", | ||
895 | "ff_bit_bnot", | 994 | "ff_bit_bnot", |
896 | "ff_bit_lshift", | 995 | "ff_bit_lshift", |
897 | "ff_bit_rshift", | 996 | "ff_bit_rshift", |
@@ -904,6 +1003,9 @@ static const char *const globnames[] = { | |||
904 | "vm_hotcall", | 1003 | "vm_hotcall", |
905 | "vm_exit_handler", | 1004 | "vm_exit_handler", |
906 | "vm_exit_interp", | 1005 | "vm_exit_interp", |
1006 | "vm_floor_sse", | ||
1007 | "vm_ceil_sse", | ||
1008 | "vm_trunc_sse", | ||
907 | "vm_mod", | 1009 | "vm_mod", |
908 | "vm_exp2", | 1010 | "vm_exp2", |
909 | "vm_exp2raw", | 1011 | "vm_exp2raw", |
@@ -986,154 +1088,424 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse) | |||
986 | dasm_put(Dst, 766, FRAME_C, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE, FRAME_CP); | 1088 | dasm_put(Dst, 766, FRAME_C, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE, FRAME_CP); |
987 | dasm_put(Dst, 871, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate)); | 1089 | dasm_put(Dst, 871, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), LJ_TFUNC, Dt7(->gate)); |
988 | dasm_put(Dst, 964, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pt), Dt9(->k), LJ_TSTR); | 1090 | dasm_put(Dst, 964, Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL, Dt7(->pt), Dt9(->k), LJ_TSTR); |
989 | dasm_put(Dst, 1153, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB, Dt1(->base), Dt1(->base), Dt1(->top)); | 1091 | dasm_put(Dst, 1153, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB); |
990 | dasm_put(Dst, 1309, FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv), LJ_TTAB, Dt1(->base), Dt1(->base)); | 1092 | if (sse) { |
991 | dasm_put(Dst, 1456, Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base), -BCBIAS_J*4, LJ_TISTRUECOND); | 1093 | dasm_put(Dst, 1189); |
992 | dasm_put(Dst, 1650, LJ_TISTRUECOND, Dt1(->base)); | 1094 | } else { |
993 | dasm_put(Dst, 1742, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base)); | 1095 | dasm_put(Dst, 1202); |
994 | dasm_put(Dst, 1921, Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*4, 1+1, LJ_TISTRUECOND); | 1096 | } |
995 | dasm_put(Dst, 2070, 1+1, ~LJ_TNUMX); | 1097 | dasm_put(Dst, 1215, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), LJ_TSTR, BC_GSET, DISPATCH_GL(tmptv)); |
1098 | dasm_put(Dst, 1373, LJ_TTAB); | ||
1099 | if (sse) { | ||
1100 | dasm_put(Dst, 1189); | ||
1101 | } else { | ||
1102 | dasm_put(Dst, 1202); | ||
1103 | } | ||
1104 | dasm_put(Dst, 1393, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, Dt7(->gate), Dt1(->base), Dt1(->base)); | ||
1105 | dasm_put(Dst, 1600, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base)); | ||
1106 | dasm_put(Dst, 1711, Dt1(->base), Dt1(->base), FRAME_CONT, LJ_TFUNC); | ||
1107 | dasm_put(Dst, 1840, Dt7(->gate), Dt1(->base), Dt1(->base), Dt1(->base), Dt1(->base), Dt7(->gate), Dt1(->base), Dt1(->base), GG_DISP_STATIC*4, 1+1); | ||
1108 | dasm_put(Dst, 2006, LJ_TISTRUECOND, 1+1, ~LJ_TNUMX); | ||
996 | if (cmov) { | 1109 | if (cmov) { |
997 | dasm_put(Dst, 2099); | 1110 | dasm_put(Dst, 2102); |
1111 | } else { | ||
1112 | dasm_put(Dst, 2106); | ||
1113 | } | ||
1114 | dasm_put(Dst, 2115, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); | ||
1115 | dasm_put(Dst, 2203, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); | ||
1116 | dasm_put(Dst, 2258, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); | ||
1117 | dasm_put(Dst, 2330, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); | ||
1118 | dasm_put(Dst, 2395, 2+1, LJ_TTAB, 1+1, LJ_TISNUM); | ||
1119 | if (sse) { | ||
1120 | dasm_put(Dst, 2486); | ||
1121 | } else { | ||
1122 | dasm_put(Dst, 2496); | ||
1123 | } | ||
1124 | dasm_put(Dst, 2503, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); | ||
1125 | dasm_put(Dst, 2565, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base)); | ||
1126 | dasm_put(Dst, 2655, Dt1(->base), 1+2, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB); | ||
1127 | dasm_put(Dst, 2761, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM); | ||
1128 | if (sse) { | ||
1129 | dasm_put(Dst, 2816); | ||
1130 | } else { | ||
1131 | dasm_put(Dst, 2859); | ||
1132 | } | ||
1133 | dasm_put(Dst, 2879, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0); | ||
1134 | dasm_put(Dst, 2966, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC); | ||
1135 | if (sse) { | ||
1136 | dasm_put(Dst, 2996); | ||
1137 | } else { | ||
1138 | dasm_put(Dst, 3006); | ||
1139 | } | ||
1140 | dasm_put(Dst, 3013, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); | ||
1141 | dasm_put(Dst, 3086, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1, LJ_TTHREAD); | ||
1142 | dasm_put(Dst, 3184, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); | ||
1143 | dasm_put(Dst, 3249, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top)); | ||
1144 | dasm_put(Dst, 3353, Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2); | ||
1145 | dasm_put(Dst, 3472, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base)); | ||
1146 | dasm_put(Dst, 3553, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base)); | ||
1147 | dasm_put(Dst, 3661, LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), FRAME_TYPE); | ||
1148 | dasm_put(Dst, 3757, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_CANYIELD, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status)); | ||
1149 | if (sse) { | ||
1150 | dasm_put(Dst, 3845, 1+1, LJ_TISNUM); | ||
998 | } else { | 1151 | } else { |
999 | dasm_put(Dst, 2103); | 1152 | dasm_put(Dst, 3906, 1+1, LJ_TISNUM); |
1000 | } | 1153 | } |
1001 | dasm_put(Dst, 2112, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(mmname)+4*MM_metatable, LJ_TTAB, Dt6(->hmask)); | 1154 | dasm_put(Dst, 3938, 1+1, FRAME_TYPE, LJ_TNIL); |
1002 | dasm_put(Dst, 2200, Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL); | 1155 | if (sse) { |
1003 | dasm_put(Dst, 2255, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB); | 1156 | dasm_put(Dst, 4019, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); |
1004 | dasm_put(Dst, 2327, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); | 1157 | dasm_put(Dst, 4081, 1+1, LJ_TISNUM); |
1005 | dasm_put(Dst, 2392, 2+1, LJ_TTAB, 1+1, LJ_TISNUM, 1+1); | 1158 | } else { |
1006 | dasm_put(Dst, 2499, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); | 1159 | dasm_put(Dst, 4111, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); |
1007 | dasm_put(Dst, 2560, Dt1(->base), Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->base), 1+2); | 1160 | dasm_put(Dst, 4170, 1+1, LJ_TISNUM); |
1008 | dasm_put(Dst, 2706, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL); | 1161 | } |
1009 | dasm_put(Dst, 2767, 1+3, 1+1, LJ_TTAB, LJ_TISNUM, Dt6(->asize), Dt6(->array), LJ_TNIL); | 1162 | dasm_put(Dst, 4197, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); |
1010 | dasm_put(Dst, 2847, Dt6(->hmask), 1+0, 1+1, LJ_TTAB, Dt8(->upvalue[0])); | 1163 | dasm_put(Dst, 4266, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); |
1011 | dasm_put(Dst, 2928, LJ_TFUNC, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE, LJ_TFUNC, Dt7(->gate)); | 1164 | dasm_put(Dst, 4323, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); |
1012 | dasm_put(Dst, 3007, 2+1, LJ_TFUNC, LJ_TFUNC, 2*8+FRAME_PCALL, 2*8, 1+1); | 1165 | dasm_put(Dst, 4386, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); |
1013 | dasm_put(Dst, 3092, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack)); | 1166 | dasm_put(Dst, 4476); |
1014 | dasm_put(Dst, 3163, Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top)); | 1167 | if (sse) { |
1015 | dasm_put(Dst, 3271, Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE, LJ_TFALSE, Dt1(->top)); | 1168 | dasm_put(Dst, 4488, 1+1, LJ_TISNUM); |
1016 | dasm_put(Dst, 3377, Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe), Dt1(->status), LUA_YIELD); | 1169 | } else { |
1017 | dasm_put(Dst, 3469, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top)); | 1170 | dasm_put(Dst, 4519, 1+1, LJ_TISNUM); |
1018 | dasm_put(Dst, 3577, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack)); | 1171 | } |
1019 | dasm_put(Dst, 3669, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_CANYIELD, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD); | 1172 | dasm_put(Dst, 4544); |
1020 | dasm_put(Dst, 3768, Dt1(->status), 1+1, LJ_TISNUM, 1+1, FRAME_TYPE); | 1173 | if (sse) { |
1021 | dasm_put(Dst, 3835, LJ_TNIL, 1+1, LJ_TISNUM, 1+1); | 1174 | dasm_put(Dst, 4566, 1+1, LJ_TISNUM); |
1022 | dasm_put(Dst, 3920, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); | 1175 | } else { |
1023 | dasm_put(Dst, 3977, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); | 1176 | dasm_put(Dst, 4597, 1+1, LJ_TISNUM); |
1024 | dasm_put(Dst, 4044, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); | 1177 | } |
1025 | dasm_put(Dst, 4101, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); | 1178 | dasm_put(Dst, 4622); |
1026 | dasm_put(Dst, 4169, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM); | 1179 | if (sse) { |
1027 | dasm_put(Dst, 4263, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); | 1180 | dasm_put(Dst, 4644, 1+1, LJ_TISNUM); |
1028 | dasm_put(Dst, 4362, LJ_TISNUM, 1+1, LJ_TISNUM, Dt8(->upvalue[0]), 2+1); | 1181 | } else { |
1029 | dasm_put(Dst, 4438, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); | 1182 | dasm_put(Dst, 4675, 1+1, LJ_TISNUM); |
1030 | dasm_put(Dst, 4513, 1+1, LJ_TISNUM, 1+2); | 1183 | } |
1031 | dasm_put(Dst, 4639, 1+1, LJ_TISNUM, 1+2); | 1184 | dasm_put(Dst, 4700); |
1032 | dasm_put(Dst, 4750, 2+1, LJ_TISNUM, LJ_TISNUM); | 1185 | if (sse) { |
1033 | dasm_put(Dst, 4829, 2+1, LJ_TISNUM, LJ_TISNUM, 1+1, LJ_TISNUM); | 1186 | dasm_put(Dst, 4724, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); |
1034 | dasm_put(Dst, 4887, LJ_TISNUM); | 1187 | } else { |
1188 | dasm_put(Dst, 4759, 1+1, LJ_TISNUM, Dt8(->upvalue[0])); | ||
1189 | } | ||
1190 | dasm_put(Dst, 4788, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); | ||
1191 | dasm_put(Dst, 4853, 1+1, LJ_TISNUM); | ||
1192 | if (sse) { | ||
1193 | dasm_put(Dst, 4948); | ||
1194 | } else { | ||
1195 | dasm_put(Dst, 4954); | ||
1196 | } | ||
1197 | dasm_put(Dst, 4963); | ||
1198 | if (sse) { | ||
1199 | dasm_put(Dst, 4988); | ||
1200 | } else { | ||
1201 | dasm_put(Dst, 4994); | ||
1202 | } | ||
1203 | dasm_put(Dst, 4997, 1+2); | ||
1204 | if (sse) { | ||
1205 | dasm_put(Dst, 5006); | ||
1206 | } else { | ||
1207 | dasm_put(Dst, 5014); | ||
1208 | } | ||
1209 | dasm_put(Dst, 1597); | ||
1210 | if (sse) { | ||
1211 | dasm_put(Dst, 5022); | ||
1212 | } else { | ||
1213 | dasm_put(Dst, 5054); | ||
1214 | } | ||
1215 | dasm_put(Dst, 5073); | ||
1216 | if (sse) { | ||
1217 | dasm_put(Dst, 5089, 1+1, LJ_TISNUM); | ||
1218 | } else { | ||
1219 | dasm_put(Dst, 5114, 1+1, LJ_TISNUM); | ||
1220 | } | ||
1221 | dasm_put(Dst, 5136); | ||
1222 | if (sse) { | ||
1223 | dasm_put(Dst, 5154); | ||
1224 | } else { | ||
1225 | dasm_put(Dst, 5180); | ||
1226 | } | ||
1227 | dasm_put(Dst, 5197, 1+2); | ||
1228 | if (sse) { | ||
1229 | dasm_put(Dst, 5237); | ||
1230 | } else { | ||
1231 | dasm_put(Dst, 5245); | ||
1232 | } | ||
1233 | dasm_put(Dst, 5255, 2+1, LJ_TISNUM, LJ_TISNUM); | ||
1234 | if (0 && sse) { // NYI | ||
1235 | dasm_put(Dst, 5307, 1+1, LJ_TISNUM, LJ_TISNUM); | ||
1236 | } else { | ||
1237 | dasm_put(Dst, 5354, 2+1, LJ_TISNUM, LJ_TISNUM); | ||
1238 | } | ||
1239 | if (sse) { | ||
1240 | dasm_put(Dst, 5395, 1+1, LJ_TISNUM, LJ_TISNUM); | ||
1241 | } else { | ||
1242 | dasm_put(Dst, 5466, 1+1, LJ_TISNUM, LJ_TISNUM); | ||
1035 | if (cmov) { | 1243 | if (cmov) { |
1036 | dasm_put(Dst, 4921); | 1244 | dasm_put(Dst, 5519); |
1037 | } else { | 1245 | } else { |
1038 | dasm_put(Dst, 4929); | 1246 | dasm_put(Dst, 5527); |
1247 | } | ||
1248 | dasm_put(Dst, 5458); | ||
1039 | } | 1249 | } |
1040 | dasm_put(Dst, 4950, 1+1, LJ_TISNUM, LJ_TISNUM); | 1250 | if (sse) { |
1251 | dasm_put(Dst, 5548, 1+1, LJ_TISNUM, LJ_TISNUM); | ||
1252 | } else { | ||
1253 | dasm_put(Dst, 5619, 1+1, LJ_TISNUM, LJ_TISNUM); | ||
1041 | if (cmov) { | 1254 | if (cmov) { |
1042 | dasm_put(Dst, 5010); | 1255 | dasm_put(Dst, 5672); |
1256 | } else { | ||
1257 | dasm_put(Dst, 5680); | ||
1258 | } | ||
1259 | dasm_put(Dst, 5458); | ||
1260 | } | ||
1261 | if (!sse) { | ||
1262 | dasm_put(Dst, 5701); | ||
1263 | } | ||
1264 | dasm_put(Dst, 5710, 1+1, LJ_TSTR); | ||
1265 | if (sse) { | ||
1266 | dasm_put(Dst, 5732, Dt5(->len)); | ||
1267 | } else { | ||
1268 | dasm_put(Dst, 5743, Dt5(->len)); | ||
1269 | } | ||
1270 | dasm_put(Dst, 5751, 1+1, LJ_TSTR, Dt5(->len), Dt5([1])); | ||
1271 | if (sse) { | ||
1272 | dasm_put(Dst, 5785); | ||
1273 | } else { | ||
1274 | dasm_put(Dst, 5795); | ||
1275 | } | ||
1276 | dasm_put(Dst, 5808, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); | ||
1277 | if (sse) { | ||
1278 | dasm_put(Dst, 5843); | ||
1279 | } else { | ||
1280 | dasm_put(Dst, 5863); | ||
1281 | } | ||
1282 | dasm_put(Dst, 5883, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM); | ||
1283 | dasm_put(Dst, 2481); | ||
1284 | if (sse) { | ||
1285 | dasm_put(Dst, 5994); | ||
1286 | } else { | ||
1287 | dasm_put(Dst, 6005); | ||
1288 | } | ||
1289 | dasm_put(Dst, 6013, LJ_TSTR, LJ_TISNUM, Dt5(->len)); | ||
1290 | if (sse) { | ||
1291 | dasm_put(Dst, 6043); | ||
1292 | } else { | ||
1293 | dasm_put(Dst, 6054); | ||
1294 | } | ||
1295 | dasm_put(Dst, 6062, sizeof(GCstr)-1); | ||
1296 | dasm_put(Dst, 6143, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); | ||
1297 | dasm_put(Dst, 6202, LJ_TSTR, LJ_TISNUM); | ||
1298 | if (sse) { | ||
1299 | dasm_put(Dst, 6227); | ||
1300 | } else { | ||
1301 | dasm_put(Dst, 6234); | ||
1302 | } | ||
1303 | dasm_put(Dst, 6246, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), 1+1); | ||
1304 | dasm_put(Dst, 6316, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); | ||
1305 | dasm_put(Dst, 6400, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); | ||
1306 | dasm_put(Dst, 6459, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1, DISPATCH_GL(gc.total)); | ||
1307 | dasm_put(Dst, 6544, DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); | ||
1308 | dasm_put(Dst, 6619, 1+1, LJ_TTAB); | ||
1309 | if (sse) { | ||
1310 | dasm_put(Dst, 6692); | ||
1311 | } else { | ||
1312 | dasm_put(Dst, 6702); | ||
1313 | } | ||
1314 | if (sse) { | ||
1315 | dasm_put(Dst, 6713, 1+1, LJ_TISNUM); | ||
1316 | } else { | ||
1317 | dasm_put(Dst, 6770, 1+1, LJ_TISNUM); | ||
1318 | } | ||
1319 | if (sse) { | ||
1320 | dasm_put(Dst, 6814, 1+1, LJ_TISNUM); | ||
1043 | } else { | 1321 | } else { |
1044 | dasm_put(Dst, 5018); | 1322 | dasm_put(Dst, 6862, 1+1, LJ_TISNUM); |
1045 | } | 1323 | } |
1046 | dasm_put(Dst, 5039, 1+1, LJ_TSTR, Dt5(->len), 1+1, LJ_TSTR); | 1324 | dasm_put(Dst, 6902); |
1047 | dasm_put(Dst, 5098, Dt5(->len), Dt5([1]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM); | 1325 | if (sse) { |
1048 | dasm_put(Dst, 5159, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2); | 1326 | dasm_put(Dst, 6912); |
1049 | dasm_put(Dst, 5284, LJ_TISNUM, LJ_TSTR, LJ_TISNUM, Dt5(->len)); | 1327 | } |
1050 | dasm_put(Dst, 5375, sizeof(GCstr)-1); | 1328 | dasm_put(Dst, 6917, LJ_TISNUM); |
1051 | dasm_put(Dst, 5449, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, LJ_TISNUM); | 1329 | if (sse) { |
1052 | dasm_put(Dst, 5522, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), 1+1, DISPATCH_GL(gc.total)); | 1330 | dasm_put(Dst, 6935); |
1053 | dasm_put(Dst, 5589, DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); | 1331 | } else { |
1054 | dasm_put(Dst, 5670, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz)); | 1332 | dasm_put(Dst, 6952); |
1055 | dasm_put(Dst, 5729, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1, DISPATCH_GL(gc.total)); | 1333 | } |
1056 | dasm_put(Dst, 5814, DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf)); | 1334 | dasm_put(Dst, 6965); |
1057 | dasm_put(Dst, 5889, 1+1, LJ_TTAB, 1+1); | 1335 | if (sse) { |
1058 | dasm_put(Dst, 5982, LJ_TISNUM, 1+1, LJ_TISNUM, LJ_TISNUM); | 1336 | dasm_put(Dst, 6973, 1+1, LJ_TISNUM); |
1059 | dasm_put(Dst, 6102, 1+1, LJ_TISNUM, LJ_TISNUM, 1+1, LJ_TISNUM); | 1337 | } else { |
1060 | dasm_put(Dst, 6204, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1); | 1338 | dasm_put(Dst, 7021, 1+1, LJ_TISNUM); |
1061 | dasm_put(Dst, 6325, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); | 1339 | } |
1062 | dasm_put(Dst, 6455, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM); | 1340 | dasm_put(Dst, 6902); |
1063 | dasm_put(Dst, 6556, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM); | 1341 | if (sse) { |
1064 | dasm_put(Dst, 6695, LJ_TISNUM, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f)); | 1342 | dasm_put(Dst, 6912); |
1065 | dasm_put(Dst, 6822, Dt1(->base), Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base)); | 1343 | } |
1066 | dasm_put(Dst, 6933, Dt1(->top), Dt1(->base), Dt1(->top)); | 1344 | dasm_put(Dst, 6917, LJ_TISNUM); |
1345 | if (sse) { | ||
1346 | dasm_put(Dst, 7061); | ||
1347 | } else { | ||
1348 | dasm_put(Dst, 7078); | ||
1349 | } | ||
1350 | dasm_put(Dst, 6965); | ||
1351 | if (sse) { | ||
1352 | dasm_put(Dst, 7091, 1+1, LJ_TISNUM); | ||
1353 | } else { | ||
1354 | dasm_put(Dst, 7139, 1+1, LJ_TISNUM); | ||
1355 | } | ||
1356 | dasm_put(Dst, 6902); | ||
1357 | if (sse) { | ||
1358 | dasm_put(Dst, 6912); | ||
1359 | } | ||
1360 | dasm_put(Dst, 6917, LJ_TISNUM); | ||
1361 | if (sse) { | ||
1362 | dasm_put(Dst, 7179); | ||
1363 | } else { | ||
1364 | dasm_put(Dst, 7196); | ||
1365 | } | ||
1366 | dasm_put(Dst, 6965); | ||
1367 | if (sse) { | ||
1368 | dasm_put(Dst, 7209, 1+1, LJ_TISNUM); | ||
1369 | } else { | ||
1370 | dasm_put(Dst, 7257, 1+1, LJ_TISNUM); | ||
1371 | } | ||
1372 | dasm_put(Dst, 7297); | ||
1373 | if (sse) { | ||
1374 | dasm_put(Dst, 7304, 1+1, LJ_TISNUM); | ||
1375 | } else { | ||
1376 | dasm_put(Dst, 7352, 1+1, LJ_TISNUM); | ||
1377 | } | ||
1378 | dasm_put(Dst, 7392); | ||
1379 | if (sse) { | ||
1380 | dasm_put(Dst, 7396); | ||
1381 | } else { | ||
1382 | dasm_put(Dst, 7423); | ||
1383 | } | ||
1384 | dasm_put(Dst, 7438); | ||
1385 | if (sse) { | ||
1386 | dasm_put(Dst, 6687); | ||
1387 | } | ||
1388 | dasm_put(Dst, 7441); | ||
1389 | if (sse) { | ||
1390 | dasm_put(Dst, 7450, 1+1, LJ_TISNUM, LJ_TISNUM); | ||
1391 | } else { | ||
1392 | dasm_put(Dst, 7524, 2+1, LJ_TISNUM, LJ_TISNUM); | ||
1393 | } | ||
1394 | dasm_put(Dst, 7590); | ||
1395 | if (sse) { | ||
1396 | dasm_put(Dst, 7599, 1+1, LJ_TISNUM, LJ_TISNUM); | ||
1397 | } else { | ||
1398 | dasm_put(Dst, 7673, 2+1, LJ_TISNUM, LJ_TISNUM); | ||
1399 | } | ||
1400 | dasm_put(Dst, 7739); | ||
1401 | if (sse) { | ||
1402 | dasm_put(Dst, 7749, 1+1, LJ_TISNUM, LJ_TISNUM); | ||
1403 | } else { | ||
1404 | dasm_put(Dst, 7823, 2+1, LJ_TISNUM, LJ_TISNUM); | ||
1405 | } | ||
1406 | dasm_put(Dst, 7889); | ||
1407 | if (sse) { | ||
1408 | dasm_put(Dst, 7899, 1+1, LJ_TISNUM, LJ_TISNUM); | ||
1409 | } else { | ||
1410 | dasm_put(Dst, 7973, 2+1, LJ_TISNUM, LJ_TISNUM); | ||
1411 | } | ||
1412 | dasm_put(Dst, 8039); | ||
1413 | if (sse) { | ||
1414 | dasm_put(Dst, 8048, 1+1, LJ_TISNUM, LJ_TISNUM); | ||
1415 | } else { | ||
1416 | dasm_put(Dst, 8122, 2+1, LJ_TISNUM, LJ_TISNUM); | ||
1417 | } | ||
1418 | dasm_put(Dst, 8188, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base)); | ||
1419 | dasm_put(Dst, 8272, Dt1(->top), Dt7(->gate), LJ_TFUNC, Dt7(->gate), Dt1(->base), LUA_MINSTACK, Dt1(->base), Dt1(->top)); | ||
1420 | dasm_put(Dst, 8391, Dt1(->base), Dt1(->top)); | ||
1067 | #if LJ_HASJIT | 1421 | #if LJ_HASJIT |
1068 | dasm_put(Dst, 6985, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); | 1422 | dasm_put(Dst, 8432, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); |
1069 | #endif | 1423 | #endif |
1070 | dasm_put(Dst, 7016, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base), GG_DISP_STATIC*4); | 1424 | dasm_put(Dst, 8463, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base), GG_DISP_STATIC*4); |
1071 | #if LJ_HASJIT | 1425 | #if LJ_HASJIT |
1072 | dasm_put(Dst, 7107, Dt1(->base), GG_DISP2J, DISPATCH_J(L)); | 1426 | dasm_put(Dst, 8554, Dt1(->base), GG_DISP2J, DISPATCH_J(L)); |
1073 | #endif | 1427 | #endif |
1074 | dasm_put(Dst, 7140); | 1428 | dasm_put(Dst, 8587); |
1075 | #if LJ_HASJIT | 1429 | #if LJ_HASJIT |
1076 | dasm_put(Dst, 7143, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base)); | 1430 | dasm_put(Dst, 8590, Dt1(->base), GG_DISP2J, DISPATCH_J(L), Dt1(->base)); |
1077 | #endif | 1431 | #endif |
1078 | dasm_put(Dst, 7193); | 1432 | dasm_put(Dst, 8640); |
1079 | #if LJ_HASJIT | 1433 | #if LJ_HASJIT |
1080 | dasm_put(Dst, 7196, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base)); | 1434 | dasm_put(Dst, 8643, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base)); |
1081 | #endif | 1435 | #endif |
1082 | dasm_put(Dst, 7346); | 1436 | dasm_put(Dst, 8793); |
1083 | #if LJ_HASJIT | 1437 | #if LJ_HASJIT |
1084 | dasm_put(Dst, 7349, Dt7(->pt), Dt9(->k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); | 1438 | dasm_put(Dst, 8796, Dt7(->pt), Dt9(->k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); |
1085 | #endif | 1439 | #endif |
1086 | dasm_put(Dst, 7389); | 1440 | dasm_put(Dst, 8836); |
1441 | if (!sse) { | ||
1442 | dasm_put(Dst, 8839); | ||
1443 | } | ||
1444 | dasm_put(Dst, 8884); | ||
1445 | if (!sse) { | ||
1446 | dasm_put(Dst, 8986); | ||
1447 | } | ||
1448 | dasm_put(Dst, 9031); | ||
1449 | if (!sse) { | ||
1450 | dasm_put(Dst, 9133); | ||
1451 | } | ||
1452 | dasm_put(Dst, 9172); | ||
1087 | if (sse) { | 1453 | if (sse) { |
1088 | dasm_put(Dst, 7524); | 1454 | dasm_put(Dst, 9277); |
1089 | } else { | 1455 | } else { |
1090 | dasm_put(Dst, 7654); | 1456 | dasm_put(Dst, 9407); |
1091 | } | 1457 | } |
1092 | dasm_put(Dst, 7700); | 1458 | dasm_put(Dst, 9454); |
1093 | if (cmov) { | 1459 | if (cmov) { |
1094 | dasm_put(Dst, 7785); | 1460 | dasm_put(Dst, 9538); |
1095 | } else { | 1461 | } else { |
1096 | dasm_put(Dst, 7789); | 1462 | dasm_put(Dst, 9542); |
1097 | } | 1463 | } |
1098 | dasm_put(Dst, 7798); | 1464 | dasm_put(Dst, 9551); |
1099 | dasm_put(Dst, 7867); | 1465 | dasm_put(Dst, 9620); |
1100 | dasm_put(Dst, 7969); | 1466 | dasm_put(Dst, 9722); |
1101 | if (cmov) { | 1467 | if (cmov) { |
1102 | dasm_put(Dst, 7982); | 1468 | dasm_put(Dst, 9735); |
1103 | } else { | 1469 | } else { |
1104 | dasm_put(Dst, 7986); | 1470 | dasm_put(Dst, 9739); |
1105 | } | 1471 | } |
1106 | dasm_put(Dst, 7995); | 1472 | dasm_put(Dst, 9748); |
1107 | if (cmov) { | 1473 | if (cmov) { |
1108 | dasm_put(Dst, 7785); | 1474 | dasm_put(Dst, 9538); |
1475 | } else { | ||
1476 | dasm_put(Dst, 9766); | ||
1477 | } | ||
1478 | dasm_put(Dst, 9773); | ||
1479 | if (sse) { | ||
1480 | dasm_put(Dst, 9856); | ||
1481 | dasm_put(Dst, 9913); | ||
1109 | } else { | 1482 | } else { |
1110 | dasm_put(Dst, 8013); | 1483 | dasm_put(Dst, 9945); |
1111 | } | 1484 | } |
1112 | dasm_put(Dst, 8020); | 1485 | dasm_put(Dst, 9984); |
1113 | dasm_put(Dst, 8135); | 1486 | dasm_put(Dst, 10071); |
1114 | dasm_put(Dst, 8228); | ||
1115 | if (sse) { | 1487 | if (sse) { |
1116 | dasm_put(Dst, 8246); | 1488 | dasm_put(Dst, 10089); |
1117 | dasm_put(Dst, 8333); | 1489 | dasm_put(Dst, 10176); |
1118 | dasm_put(Dst, 8427); | 1490 | dasm_put(Dst, 10270); |
1119 | } else { | 1491 | } else { |
1120 | dasm_put(Dst, 8513); | 1492 | dasm_put(Dst, 10356); |
1121 | dasm_put(Dst, 8596); | 1493 | dasm_put(Dst, 10439); |
1122 | if (cmov) { | 1494 | if (cmov) { |
1123 | dasm_put(Dst, 8651); | 1495 | dasm_put(Dst, 10494); |
1124 | } else { | 1496 | } else { |
1125 | dasm_put(Dst, 8670); | 1497 | dasm_put(Dst, 10513); |
1126 | } | 1498 | } |
1127 | dasm_put(Dst, 8711); | 1499 | dasm_put(Dst, 10554); |
1128 | } | 1500 | } |
1129 | dasm_put(Dst, 8715); | 1501 | dasm_put(Dst, 10558); |
1130 | } | 1502 | } |
1131 | 1503 | ||
1132 | /* Generate the code for a single instruction. */ | 1504 | /* Generate the code for a single instruction. */ |
1133 | static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | 1505 | static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) |
1134 | { | 1506 | { |
1135 | int vk = 0; | 1507 | int vk = 0; |
1136 | dasm_put(Dst, 1454, defop); | 1508 | dasm_put(Dst, 10612, defop); |
1137 | 1509 | ||
1138 | switch (op) { | 1510 | switch (op) { |
1139 | 1511 | ||
@@ -1142,612 +1514,658 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
1142 | /* Remember: all ops branch for a true comparison, fall through otherwise. */ | 1514 | /* Remember: all ops branch for a true comparison, fall through otherwise. */ |
1143 | 1515 | ||
1144 | case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: | 1516 | case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: |
1145 | dasm_put(Dst, 8769, LJ_TISNUM, LJ_TISNUM); | 1517 | dasm_put(Dst, 10614, LJ_TISNUM, LJ_TISNUM); |
1146 | if (sse) { | 1518 | if (sse) { |
1147 | dasm_put(Dst, 8790); | 1519 | dasm_put(Dst, 10635); |
1148 | } else { | 1520 | } else { |
1149 | dasm_put(Dst, 8805); | 1521 | dasm_put(Dst, 10650); |
1150 | if (cmov) { | 1522 | if (cmov) { |
1151 | dasm_put(Dst, 8815); | 1523 | dasm_put(Dst, 10660); |
1152 | } else { | 1524 | } else { |
1153 | dasm_put(Dst, 8821); | 1525 | dasm_put(Dst, 10666); |
1154 | } | 1526 | } |
1155 | } | 1527 | } |
1156 | switch (op) { | 1528 | switch (op) { |
1157 | case BC_ISLT: | 1529 | case BC_ISLT: |
1158 | dasm_put(Dst, 8828); | 1530 | dasm_put(Dst, 10673); |
1159 | break; | 1531 | break; |
1160 | case BC_ISGE: | 1532 | case BC_ISGE: |
1161 | dasm_put(Dst, 8591); | 1533 | dasm_put(Dst, 10434); |
1162 | break; | 1534 | break; |
1163 | case BC_ISLE: | 1535 | case BC_ISLE: |
1164 | dasm_put(Dst, 5884); | 1536 | dasm_put(Dst, 6614); |
1165 | break; | 1537 | break; |
1166 | case BC_ISGT: | 1538 | case BC_ISGT: |
1167 | dasm_put(Dst, 8833); | 1539 | dasm_put(Dst, 10678); |
1168 | break; | 1540 | break; |
1169 | default: break; /* Shut up GCC. */ | 1541 | default: break; /* Shut up GCC. */ |
1170 | } | 1542 | } |
1171 | dasm_put(Dst, 8838, -BCBIAS_J*4); | 1543 | dasm_put(Dst, 10683, -BCBIAS_J*4); |
1172 | break; | 1544 | break; |
1173 | 1545 | ||
1174 | case BC_ISEQV: case BC_ISNEV: | 1546 | case BC_ISEQV: case BC_ISNEV: |
1175 | vk = op == BC_ISEQV; | 1547 | vk = op == BC_ISEQV; |
1176 | dasm_put(Dst, 8871, LJ_TISNUM, LJ_TISNUM); | 1548 | dasm_put(Dst, 10716, LJ_TISNUM, LJ_TISNUM); |
1177 | if (sse) { | 1549 | if (sse) { |
1178 | dasm_put(Dst, 8897); | 1550 | dasm_put(Dst, 10742); |
1179 | } else { | 1551 | } else { |
1180 | dasm_put(Dst, 8909); | 1552 | dasm_put(Dst, 10754); |
1181 | if (cmov) { | 1553 | if (cmov) { |
1182 | dasm_put(Dst, 8815); | 1554 | dasm_put(Dst, 10660); |
1183 | } else { | 1555 | } else { |
1184 | dasm_put(Dst, 8821); | 1556 | dasm_put(Dst, 10666); |
1185 | } | 1557 | } |
1186 | } | 1558 | } |
1187 | iseqne_fp: | 1559 | iseqne_fp: |
1188 | if (vk) { | 1560 | if (vk) { |
1189 | dasm_put(Dst, 8916); | 1561 | dasm_put(Dst, 10761); |
1190 | } else { | 1562 | } else { |
1191 | dasm_put(Dst, 8925); | 1563 | dasm_put(Dst, 10770); |
1192 | } | 1564 | } |
1193 | iseqne_end: | 1565 | iseqne_end: |
1194 | if (vk) { | 1566 | if (vk) { |
1195 | dasm_put(Dst, 8934, -BCBIAS_J*4); | 1567 | dasm_put(Dst, 10779, -BCBIAS_J*4); |
1196 | } else { | 1568 | } else { |
1197 | dasm_put(Dst, 8949, -BCBIAS_J*4); | 1569 | dasm_put(Dst, 10794, -BCBIAS_J*4); |
1198 | } | 1570 | } |
1199 | dasm_put(Dst, 7174); | 1571 | dasm_put(Dst, 8621); |
1200 | if (op == BC_ISEQV || op == BC_ISNEV) { | 1572 | if (op == BC_ISEQV || op == BC_ISNEV) { |
1201 | dasm_put(Dst, 8964, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); | 1573 | dasm_put(Dst, 10809, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); |
1202 | if (vk) { | 1574 | if (vk) { |
1203 | dasm_put(Dst, 9022); | 1575 | dasm_put(Dst, 10867); |
1204 | } else { | 1576 | } else { |
1205 | dasm_put(Dst, 9026); | 1577 | dasm_put(Dst, 10871); |
1206 | } | 1578 | } |
1207 | dasm_put(Dst, 9032); | 1579 | dasm_put(Dst, 10877); |
1208 | } | 1580 | } |
1209 | break; | 1581 | break; |
1210 | case BC_ISEQS: case BC_ISNES: | 1582 | case BC_ISEQS: case BC_ISNES: |
1211 | vk = op == BC_ISEQS; | 1583 | vk = op == BC_ISEQS; |
1212 | dasm_put(Dst, 9037, LJ_TSTR); | 1584 | dasm_put(Dst, 10882, LJ_TSTR); |
1213 | iseqne_test: | 1585 | iseqne_test: |
1214 | if (vk) { | 1586 | if (vk) { |
1215 | dasm_put(Dst, 8920); | 1587 | dasm_put(Dst, 10765); |
1216 | } else { | 1588 | } else { |
1217 | dasm_put(Dst, 8929); | 1589 | dasm_put(Dst, 10774); |
1218 | } | 1590 | } |
1219 | goto iseqne_end; | 1591 | goto iseqne_end; |
1220 | case BC_ISEQN: case BC_ISNEN: | 1592 | case BC_ISEQN: case BC_ISNEN: |
1221 | vk = op == BC_ISEQN; | 1593 | vk = op == BC_ISEQN; |
1222 | dasm_put(Dst, 9060, LJ_TISNUM); | 1594 | dasm_put(Dst, 10905, LJ_TISNUM); |
1223 | if (sse) { | 1595 | if (sse) { |
1224 | dasm_put(Dst, 9074); | 1596 | dasm_put(Dst, 10919); |
1225 | } else { | 1597 | } else { |
1226 | dasm_put(Dst, 9086); | 1598 | dasm_put(Dst, 10931); |
1227 | if (cmov) { | 1599 | if (cmov) { |
1228 | dasm_put(Dst, 8815); | 1600 | dasm_put(Dst, 10660); |
1229 | } else { | 1601 | } else { |
1230 | dasm_put(Dst, 8821); | 1602 | dasm_put(Dst, 10666); |
1231 | } | 1603 | } |
1232 | } | 1604 | } |
1233 | goto iseqne_fp; | 1605 | goto iseqne_fp; |
1234 | case BC_ISEQP: case BC_ISNEP: | 1606 | case BC_ISEQP: case BC_ISNEP: |
1235 | vk = op == BC_ISEQP; | 1607 | vk = op == BC_ISEQP; |
1236 | dasm_put(Dst, 9093); | 1608 | dasm_put(Dst, 10938); |
1237 | goto iseqne_test; | 1609 | goto iseqne_test; |
1238 | 1610 | ||
1239 | /* -- Unary test and copy ops ------------------------------------------- */ | 1611 | /* -- Unary test and copy ops ------------------------------------------- */ |
1240 | 1612 | ||
1241 | case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: | 1613 | case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: |
1242 | dasm_put(Dst, 9104, LJ_TISTRUECOND); | 1614 | dasm_put(Dst, 10949, LJ_TISTRUECOND); |
1243 | if (op == BC_IST || op == BC_ISTC) { | 1615 | if (op == BC_IST || op == BC_ISTC) { |
1244 | dasm_put(Dst, 9116); | 1616 | dasm_put(Dst, 10961); |
1245 | } else { | 1617 | } else { |
1246 | dasm_put(Dst, 9121); | 1618 | dasm_put(Dst, 10966); |
1247 | } | 1619 | } |
1248 | if (op == BC_ISTC || op == BC_ISFC) { | 1620 | if (op == BC_ISTC || op == BC_ISFC) { |
1249 | dasm_put(Dst, 9126); | 1621 | dasm_put(Dst, 10971); |
1250 | } | 1622 | } |
1251 | dasm_put(Dst, 9137, -BCBIAS_J*4); | 1623 | dasm_put(Dst, 10982, -BCBIAS_J*4); |
1252 | break; | 1624 | break; |
1253 | 1625 | ||
1254 | /* -- Unary ops --------------------------------------------------------- */ | 1626 | /* -- Unary ops --------------------------------------------------------- */ |
1255 | 1627 | ||
1256 | case BC_MOV: | 1628 | case BC_MOV: |
1257 | dasm_put(Dst, 9168); | 1629 | dasm_put(Dst, 11013); |
1258 | break; | 1630 | break; |
1259 | case BC_NOT: | 1631 | case BC_NOT: |
1260 | dasm_put(Dst, 9201, LJ_TISTRUECOND, LJ_TTRUE); | 1632 | dasm_put(Dst, 11046, LJ_TISTRUECOND, LJ_TTRUE); |
1261 | break; | 1633 | break; |
1262 | case BC_UNM: | 1634 | case BC_UNM: |
1263 | dasm_put(Dst, 9236, LJ_TISNUM); | 1635 | dasm_put(Dst, 11081, LJ_TISNUM); |
1264 | if (sse) { | 1636 | if (sse) { |
1265 | dasm_put(Dst, 9247); | 1637 | dasm_put(Dst, 11092); |
1266 | } else { | 1638 | } else { |
1267 | dasm_put(Dst, 9277); | 1639 | dasm_put(Dst, 11122); |
1268 | } | 1640 | } |
1269 | dasm_put(Dst, 7174); | 1641 | dasm_put(Dst, 8621); |
1270 | break; | 1642 | break; |
1271 | case BC_LEN: | 1643 | case BC_LEN: |
1272 | dasm_put(Dst, 9286, LJ_TSTR); | 1644 | dasm_put(Dst, 11131, LJ_TSTR); |
1273 | if (sse) { | 1645 | if (sse) { |
1274 | dasm_put(Dst, 9300, Dt5(->len)); | 1646 | dasm_put(Dst, 11145, Dt5(->len)); |
1275 | } else { | 1647 | } else { |
1276 | dasm_put(Dst, 9318, Dt5(->len)); | 1648 | dasm_put(Dst, 11163, Dt5(->len)); |
1277 | } | 1649 | } |
1278 | dasm_put(Dst, 9327, LJ_TTAB); | 1650 | dasm_put(Dst, 11172, LJ_TTAB); |
1279 | if (sse) { | 1651 | if (sse) { |
1280 | dasm_put(Dst, 9367); | 1652 | dasm_put(Dst, 11212); |
1281 | } else { | 1653 | } else { |
1282 | dasm_put(Dst, 9376); | 1654 | dasm_put(Dst, 11221); |
1283 | } | 1655 | } |
1284 | dasm_put(Dst, 9386); | 1656 | dasm_put(Dst, 11231); |
1285 | break; | 1657 | break; |
1286 | 1658 | ||
1287 | /* -- Binary ops -------------------------------------------------------- */ | 1659 | /* -- Binary ops -------------------------------------------------------- */ |
1288 | 1660 | ||
1289 | 1661 | ||
1290 | case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: | 1662 | case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: |
1291 | dasm_put(Dst, 9396); | 1663 | dasm_put(Dst, 11241); |
1292 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 1664 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
1293 | switch (vk) { | 1665 | switch (vk) { |
1294 | case 0: | 1666 | case 0: |
1295 | dasm_put(Dst, 9404, LJ_TISNUM); | 1667 | dasm_put(Dst, 11249, LJ_TISNUM); |
1296 | if (sse) { | 1668 | if (sse) { |
1297 | dasm_put(Dst, 9416); | 1669 | dasm_put(Dst, 11261); |
1298 | } else { | 1670 | } else { |
1299 | dasm_put(Dst, 9430); | 1671 | dasm_put(Dst, 11275); |
1300 | } | 1672 | } |
1301 | break; | 1673 | break; |
1302 | case 1: | 1674 | case 1: |
1303 | dasm_put(Dst, 9438, LJ_TISNUM); | 1675 | dasm_put(Dst, 11283, LJ_TISNUM); |
1304 | if (sse) { | 1676 | if (sse) { |
1305 | dasm_put(Dst, 9450); | 1677 | dasm_put(Dst, 11295); |
1306 | } else { | 1678 | } else { |
1307 | dasm_put(Dst, 9464); | 1679 | dasm_put(Dst, 11309); |
1308 | } | 1680 | } |
1309 | break; | 1681 | break; |
1310 | default: | 1682 | default: |
1311 | dasm_put(Dst, 9472, LJ_TISNUM, LJ_TISNUM); | 1683 | dasm_put(Dst, 11317, LJ_TISNUM, LJ_TISNUM); |
1312 | if (sse) { | 1684 | if (sse) { |
1313 | dasm_put(Dst, 9494); | 1685 | dasm_put(Dst, 11339); |
1314 | } else { | 1686 | } else { |
1315 | dasm_put(Dst, 9508); | 1687 | dasm_put(Dst, 11353); |
1316 | } | 1688 | } |
1317 | break; | 1689 | break; |
1318 | } | 1690 | } |
1319 | if (sse) { | 1691 | if (sse) { |
1320 | dasm_put(Dst, 9270); | 1692 | dasm_put(Dst, 11115); |
1321 | } else { | 1693 | } else { |
1322 | dasm_put(Dst, 9282); | 1694 | dasm_put(Dst, 11127); |
1323 | } | 1695 | } |
1324 | dasm_put(Dst, 7174); | 1696 | dasm_put(Dst, 8621); |
1325 | break; | 1697 | break; |
1326 | case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: | 1698 | case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: |
1327 | dasm_put(Dst, 9396); | 1699 | dasm_put(Dst, 11241); |
1328 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 1700 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
1329 | switch (vk) { | 1701 | switch (vk) { |
1330 | case 0: | 1702 | case 0: |
1331 | dasm_put(Dst, 9404, LJ_TISNUM); | 1703 | dasm_put(Dst, 11249, LJ_TISNUM); |
1332 | if (sse) { | 1704 | if (sse) { |
1333 | dasm_put(Dst, 9516); | 1705 | dasm_put(Dst, 11361); |
1334 | } else { | 1706 | } else { |
1335 | dasm_put(Dst, 9530); | 1707 | dasm_put(Dst, 11375); |
1336 | } | 1708 | } |
1337 | break; | 1709 | break; |
1338 | case 1: | 1710 | case 1: |
1339 | dasm_put(Dst, 9438, LJ_TISNUM); | 1711 | dasm_put(Dst, 11283, LJ_TISNUM); |
1340 | if (sse) { | 1712 | if (sse) { |
1341 | dasm_put(Dst, 9538); | 1713 | dasm_put(Dst, 11383); |
1342 | } else { | 1714 | } else { |
1343 | dasm_put(Dst, 9552); | 1715 | dasm_put(Dst, 11397); |
1344 | } | 1716 | } |
1345 | break; | 1717 | break; |
1346 | default: | 1718 | default: |
1347 | dasm_put(Dst, 9472, LJ_TISNUM, LJ_TISNUM); | 1719 | dasm_put(Dst, 11317, LJ_TISNUM, LJ_TISNUM); |
1348 | if (sse) { | 1720 | if (sse) { |
1349 | dasm_put(Dst, 9560); | 1721 | dasm_put(Dst, 11405); |
1350 | } else { | 1722 | } else { |
1351 | dasm_put(Dst, 9574); | 1723 | dasm_put(Dst, 11419); |
1352 | } | 1724 | } |
1353 | break; | 1725 | break; |
1354 | } | 1726 | } |
1355 | if (sse) { | 1727 | if (sse) { |
1356 | dasm_put(Dst, 9270); | 1728 | dasm_put(Dst, 11115); |
1357 | } else { | 1729 | } else { |
1358 | dasm_put(Dst, 9282); | 1730 | dasm_put(Dst, 11127); |
1359 | } | 1731 | } |
1360 | dasm_put(Dst, 7174); | 1732 | dasm_put(Dst, 8621); |
1361 | break; | 1733 | break; |
1362 | case BC_MULVN: case BC_MULNV: case BC_MULVV: | 1734 | case BC_MULVN: case BC_MULNV: case BC_MULVV: |
1363 | dasm_put(Dst, 9396); | 1735 | dasm_put(Dst, 11241); |
1364 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 1736 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
1365 | switch (vk) { | 1737 | switch (vk) { |
1366 | case 0: | 1738 | case 0: |
1367 | dasm_put(Dst, 9404, LJ_TISNUM); | 1739 | dasm_put(Dst, 11249, LJ_TISNUM); |
1368 | if (sse) { | 1740 | if (sse) { |
1369 | dasm_put(Dst, 9582); | 1741 | dasm_put(Dst, 11427); |
1370 | } else { | 1742 | } else { |
1371 | dasm_put(Dst, 9596); | 1743 | dasm_put(Dst, 11441); |
1372 | } | 1744 | } |
1373 | break; | 1745 | break; |
1374 | case 1: | 1746 | case 1: |
1375 | dasm_put(Dst, 9438, LJ_TISNUM); | 1747 | dasm_put(Dst, 11283, LJ_TISNUM); |
1376 | if (sse) { | 1748 | if (sse) { |
1377 | dasm_put(Dst, 9604); | 1749 | dasm_put(Dst, 11449); |
1378 | } else { | 1750 | } else { |
1379 | dasm_put(Dst, 9618); | 1751 | dasm_put(Dst, 11463); |
1380 | } | 1752 | } |
1381 | break; | 1753 | break; |
1382 | default: | 1754 | default: |
1383 | dasm_put(Dst, 9472, LJ_TISNUM, LJ_TISNUM); | 1755 | dasm_put(Dst, 11317, LJ_TISNUM, LJ_TISNUM); |
1384 | if (sse) { | 1756 | if (sse) { |
1385 | dasm_put(Dst, 9626); | 1757 | dasm_put(Dst, 11471); |
1386 | } else { | 1758 | } else { |
1387 | dasm_put(Dst, 9640); | 1759 | dasm_put(Dst, 11485); |
1388 | } | 1760 | } |
1389 | break; | 1761 | break; |
1390 | } | 1762 | } |
1391 | if (sse) { | 1763 | if (sse) { |
1392 | dasm_put(Dst, 9270); | 1764 | dasm_put(Dst, 11115); |
1393 | } else { | 1765 | } else { |
1394 | dasm_put(Dst, 9282); | 1766 | dasm_put(Dst, 11127); |
1395 | } | 1767 | } |
1396 | dasm_put(Dst, 7174); | 1768 | dasm_put(Dst, 8621); |
1397 | break; | 1769 | break; |
1398 | case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: | 1770 | case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: |
1399 | dasm_put(Dst, 9396); | 1771 | dasm_put(Dst, 11241); |
1400 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 1772 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
1401 | switch (vk) { | 1773 | switch (vk) { |
1402 | case 0: | 1774 | case 0: |
1403 | dasm_put(Dst, 9404, LJ_TISNUM); | 1775 | dasm_put(Dst, 11249, LJ_TISNUM); |
1404 | if (sse) { | 1776 | if (sse) { |
1405 | dasm_put(Dst, 9648); | 1777 | dasm_put(Dst, 11493); |
1406 | } else { | 1778 | } else { |
1407 | dasm_put(Dst, 9662); | 1779 | dasm_put(Dst, 11507); |
1408 | } | 1780 | } |
1409 | break; | 1781 | break; |
1410 | case 1: | 1782 | case 1: |
1411 | dasm_put(Dst, 9438, LJ_TISNUM); | 1783 | dasm_put(Dst, 11283, LJ_TISNUM); |
1412 | if (sse) { | 1784 | if (sse) { |
1413 | dasm_put(Dst, 9670); | 1785 | dasm_put(Dst, 11515); |
1414 | } else { | 1786 | } else { |
1415 | dasm_put(Dst, 9684); | 1787 | dasm_put(Dst, 11529); |
1416 | } | 1788 | } |
1417 | break; | 1789 | break; |
1418 | default: | 1790 | default: |
1419 | dasm_put(Dst, 9472, LJ_TISNUM, LJ_TISNUM); | 1791 | dasm_put(Dst, 11317, LJ_TISNUM, LJ_TISNUM); |
1420 | if (sse) { | 1792 | if (sse) { |
1421 | dasm_put(Dst, 9692); | 1793 | dasm_put(Dst, 11537); |
1422 | } else { | 1794 | } else { |
1423 | dasm_put(Dst, 9706); | 1795 | dasm_put(Dst, 11551); |
1424 | } | 1796 | } |
1425 | break; | 1797 | break; |
1426 | } | 1798 | } |
1427 | if (sse) { | 1799 | if (sse) { |
1428 | dasm_put(Dst, 9270); | 1800 | dasm_put(Dst, 11115); |
1429 | } else { | 1801 | } else { |
1430 | dasm_put(Dst, 9282); | 1802 | dasm_put(Dst, 11127); |
1431 | } | 1803 | } |
1432 | dasm_put(Dst, 7174); | 1804 | dasm_put(Dst, 8621); |
1433 | break; | 1805 | break; |
1434 | case BC_MODVN: | 1806 | case BC_MODVN: |
1435 | dasm_put(Dst, 9396); | 1807 | dasm_put(Dst, 11241); |
1436 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 1808 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
1437 | switch (vk) { | 1809 | switch (vk) { |
1438 | case 0: | 1810 | case 0: |
1439 | dasm_put(Dst, 9404, LJ_TISNUM); | 1811 | dasm_put(Dst, 11249, LJ_TISNUM); |
1440 | if (sse) { | 1812 | if (sse) { |
1441 | dasm_put(Dst, 9714); | 1813 | dasm_put(Dst, 11559); |
1442 | } else { | 1814 | } else { |
1443 | dasm_put(Dst, 9728); | 1815 | dasm_put(Dst, 11573); |
1444 | } | 1816 | } |
1445 | break; | 1817 | break; |
1446 | case 1: | 1818 | case 1: |
1447 | dasm_put(Dst, 9438, LJ_TISNUM); | 1819 | dasm_put(Dst, 11283, LJ_TISNUM); |
1448 | if (sse) { | 1820 | if (sse) { |
1449 | dasm_put(Dst, 9736); | 1821 | dasm_put(Dst, 11581); |
1450 | } else { | 1822 | } else { |
1451 | dasm_put(Dst, 9750); | 1823 | dasm_put(Dst, 11595); |
1452 | } | 1824 | } |
1453 | break; | 1825 | break; |
1454 | default: | 1826 | default: |
1455 | dasm_put(Dst, 9472, LJ_TISNUM, LJ_TISNUM); | 1827 | dasm_put(Dst, 11317, LJ_TISNUM, LJ_TISNUM); |
1456 | if (sse) { | 1828 | if (sse) { |
1457 | dasm_put(Dst, 9758); | 1829 | dasm_put(Dst, 11603); |
1458 | } else { | 1830 | } else { |
1459 | dasm_put(Dst, 9772); | 1831 | dasm_put(Dst, 11617); |
1460 | } | 1832 | } |
1461 | break; | 1833 | break; |
1462 | } | 1834 | } |
1463 | dasm_put(Dst, 9780); | 1835 | dasm_put(Dst, 11625); |
1464 | if (sse) { | 1836 | if (sse) { |
1465 | dasm_put(Dst, 9270); | 1837 | dasm_put(Dst, 11115); |
1466 | } else { | 1838 | } else { |
1467 | dasm_put(Dst, 9282); | 1839 | dasm_put(Dst, 11127); |
1468 | } | 1840 | } |
1469 | dasm_put(Dst, 7174); | 1841 | dasm_put(Dst, 8621); |
1470 | break; | 1842 | break; |
1471 | case BC_MODNV: case BC_MODVV: | 1843 | case BC_MODNV: case BC_MODVV: |
1472 | dasm_put(Dst, 9396); | 1844 | dasm_put(Dst, 11241); |
1473 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 1845 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
1474 | switch (vk) { | 1846 | switch (vk) { |
1475 | case 0: | 1847 | case 0: |
1476 | dasm_put(Dst, 9404, LJ_TISNUM); | 1848 | dasm_put(Dst, 11249, LJ_TISNUM); |
1477 | if (sse) { | 1849 | if (sse) { |
1478 | dasm_put(Dst, 9714); | 1850 | dasm_put(Dst, 11559); |
1479 | } else { | 1851 | } else { |
1480 | dasm_put(Dst, 9728); | 1852 | dasm_put(Dst, 11573); |
1481 | } | 1853 | } |
1482 | break; | 1854 | break; |
1483 | case 1: | 1855 | case 1: |
1484 | dasm_put(Dst, 9438, LJ_TISNUM); | 1856 | dasm_put(Dst, 11283, LJ_TISNUM); |
1485 | if (sse) { | 1857 | if (sse) { |
1486 | dasm_put(Dst, 9736); | 1858 | dasm_put(Dst, 11581); |
1487 | } else { | 1859 | } else { |
1488 | dasm_put(Dst, 9750); | 1860 | dasm_put(Dst, 11595); |
1489 | } | 1861 | } |
1490 | break; | 1862 | break; |
1491 | default: | 1863 | default: |
1492 | dasm_put(Dst, 9472, LJ_TISNUM, LJ_TISNUM); | 1864 | dasm_put(Dst, 11317, LJ_TISNUM, LJ_TISNUM); |
1493 | if (sse) { | 1865 | if (sse) { |
1494 | dasm_put(Dst, 9758); | 1866 | dasm_put(Dst, 11603); |
1495 | } else { | 1867 | } else { |
1496 | dasm_put(Dst, 9772); | 1868 | dasm_put(Dst, 11617); |
1497 | } | 1869 | } |
1498 | break; | 1870 | break; |
1499 | } | 1871 | } |
1500 | dasm_put(Dst, 9786); | 1872 | dasm_put(Dst, 11631); |
1501 | break; | 1873 | break; |
1502 | case BC_POW: | 1874 | case BC_POW: |
1503 | if (sse) { | 1875 | if (sse) { |
1504 | sse = 0; /* NYI: temporary workaround. */ | 1876 | sse = 0; /* NYI: temporary workaround. */ |
1505 | dasm_put(Dst, 9396); | 1877 | dasm_put(Dst, 11241); |
1506 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 1878 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
1507 | switch (vk) { | 1879 | switch (vk) { |
1508 | case 0: | 1880 | case 0: |
1509 | dasm_put(Dst, 9404, LJ_TISNUM); | 1881 | dasm_put(Dst, 11249, LJ_TISNUM); |
1510 | if (sse) { | 1882 | if (sse) { |
1511 | dasm_put(Dst, 9714); | 1883 | dasm_put(Dst, 11559); |
1512 | } else { | 1884 | } else { |
1513 | dasm_put(Dst, 9728); | 1885 | dasm_put(Dst, 11573); |
1514 | } | 1886 | } |
1515 | break; | 1887 | break; |
1516 | case 1: | 1888 | case 1: |
1517 | dasm_put(Dst, 9438, LJ_TISNUM); | 1889 | dasm_put(Dst, 11283, LJ_TISNUM); |
1518 | if (sse) { | 1890 | if (sse) { |
1519 | dasm_put(Dst, 9736); | 1891 | dasm_put(Dst, 11581); |
1520 | } else { | 1892 | } else { |
1521 | dasm_put(Dst, 9750); | 1893 | dasm_put(Dst, 11595); |
1522 | } | 1894 | } |
1523 | break; | 1895 | break; |
1524 | default: | 1896 | default: |
1525 | dasm_put(Dst, 9472, LJ_TISNUM, LJ_TISNUM); | 1897 | dasm_put(Dst, 11317, LJ_TISNUM, LJ_TISNUM); |
1526 | if (sse) { | 1898 | if (sse) { |
1527 | dasm_put(Dst, 9758); | 1899 | dasm_put(Dst, 11603); |
1528 | } else { | 1900 | } else { |
1529 | dasm_put(Dst, 9772); | 1901 | dasm_put(Dst, 11617); |
1530 | } | 1902 | } |
1531 | break; | 1903 | break; |
1532 | } | 1904 | } |
1533 | dasm_put(Dst, 9791); | 1905 | dasm_put(Dst, 11636); |
1534 | if (sse) { | 1906 | if (sse) { |
1535 | dasm_put(Dst, 9270); | 1907 | dasm_put(Dst, 11115); |
1536 | } else { | 1908 | } else { |
1537 | dasm_put(Dst, 9282); | 1909 | dasm_put(Dst, 11127); |
1538 | } | 1910 | } |
1539 | sse = 1; | 1911 | sse = 1; |
1540 | } else { | 1912 | } else { |
1541 | dasm_put(Dst, 9396); | 1913 | dasm_put(Dst, 11241); |
1542 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 1914 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
1543 | switch (vk) { | 1915 | switch (vk) { |
1544 | case 0: | 1916 | case 0: |
1545 | dasm_put(Dst, 9404, LJ_TISNUM); | 1917 | dasm_put(Dst, 11249, LJ_TISNUM); |
1546 | if (sse) { | 1918 | if (sse) { |
1547 | dasm_put(Dst, 9714); | 1919 | dasm_put(Dst, 11559); |
1548 | } else { | 1920 | } else { |
1549 | dasm_put(Dst, 9728); | 1921 | dasm_put(Dst, 11573); |
1550 | } | 1922 | } |
1551 | break; | 1923 | break; |
1552 | case 1: | 1924 | case 1: |
1553 | dasm_put(Dst, 9438, LJ_TISNUM); | 1925 | dasm_put(Dst, 11283, LJ_TISNUM); |
1554 | if (sse) { | 1926 | if (sse) { |
1555 | dasm_put(Dst, 9736); | 1927 | dasm_put(Dst, 11581); |
1556 | } else { | 1928 | } else { |
1557 | dasm_put(Dst, 9750); | 1929 | dasm_put(Dst, 11595); |
1558 | } | 1930 | } |
1559 | break; | 1931 | break; |
1560 | default: | 1932 | default: |
1561 | dasm_put(Dst, 9472, LJ_TISNUM, LJ_TISNUM); | 1933 | dasm_put(Dst, 11317, LJ_TISNUM, LJ_TISNUM); |
1562 | if (sse) { | 1934 | if (sse) { |
1563 | dasm_put(Dst, 9758); | 1935 | dasm_put(Dst, 11603); |
1564 | } else { | 1936 | } else { |
1565 | dasm_put(Dst, 9772); | 1937 | dasm_put(Dst, 11617); |
1566 | } | 1938 | } |
1567 | break; | 1939 | break; |
1568 | } | 1940 | } |
1569 | dasm_put(Dst, 9791); | 1941 | dasm_put(Dst, 11636); |
1570 | if (sse) { | 1942 | if (sse) { |
1571 | dasm_put(Dst, 9270); | 1943 | dasm_put(Dst, 11115); |
1572 | } else { | 1944 | } else { |
1573 | dasm_put(Dst, 9282); | 1945 | dasm_put(Dst, 11127); |
1574 | } | 1946 | } |
1575 | } | 1947 | } |
1576 | dasm_put(Dst, 7174); | 1948 | dasm_put(Dst, 8621); |
1577 | break; | 1949 | break; |
1578 | 1950 | ||
1579 | case BC_CAT: | 1951 | case BC_CAT: |
1580 | dasm_put(Dst, 9795, Dt1(->base), Dt1(->base)); | 1952 | dasm_put(Dst, 11640, Dt1(->base), Dt1(->base)); |
1581 | break; | 1953 | break; |
1582 | 1954 | ||
1583 | /* -- Constant ops ------------------------------------------------------ */ | 1955 | /* -- Constant ops ------------------------------------------------------ */ |
1584 | 1956 | ||
1585 | case BC_KSTR: | 1957 | case BC_KSTR: |
1586 | dasm_put(Dst, 9889, LJ_TSTR); | 1958 | dasm_put(Dst, 11734, LJ_TSTR); |
1587 | break; | 1959 | break; |
1588 | case BC_KSHORT: | 1960 | case BC_KSHORT: |
1589 | dasm_put(Dst, 9922); | 1961 | if (sse) { |
1962 | dasm_put(Dst, 11767); | ||
1963 | } else { | ||
1964 | dasm_put(Dst, 11782); | ||
1965 | } | ||
1966 | dasm_put(Dst, 8621); | ||
1590 | break; | 1967 | break; |
1591 | case BC_KNUM: | 1968 | case BC_KNUM: |
1592 | dasm_put(Dst, 9948); | 1969 | if (sse) { |
1970 | dasm_put(Dst, 11790); | ||
1971 | } else { | ||
1972 | dasm_put(Dst, 11803); | ||
1973 | } | ||
1974 | dasm_put(Dst, 8621); | ||
1593 | break; | 1975 | break; |
1594 | case BC_KPRI: | 1976 | case BC_KPRI: |
1595 | dasm_put(Dst, 9973); | 1977 | dasm_put(Dst, 11810); |
1596 | break; | 1978 | break; |
1597 | case BC_KNIL: | 1979 | case BC_KNIL: |
1598 | dasm_put(Dst, 9999, LJ_TNIL); | 1980 | dasm_put(Dst, 11836, LJ_TNIL); |
1599 | break; | 1981 | break; |
1600 | 1982 | ||
1601 | /* -- Upvalue and function ops ------------------------------------------ */ | 1983 | /* -- Upvalue and function ops ------------------------------------------ */ |
1602 | 1984 | ||
1603 | case BC_UGET: | 1985 | case BC_UGET: |
1604 | dasm_put(Dst, 10045, offsetof(GCfuncL, uvptr), DtA(->v)); | 1986 | dasm_put(Dst, 11882, offsetof(GCfuncL, uvptr), DtA(->v)); |
1605 | break; | 1987 | break; |
1606 | case BC_USETV: | 1988 | case BC_USETV: |
1607 | #define TV2MARKOFS \ | 1989 | #define TV2MARKOFS \ |
1608 | ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) | 1990 | ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) |
1609 | dasm_put(Dst, 10089, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); | 1991 | dasm_put(Dst, 11926, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); |
1610 | dasm_put(Dst, 10179); | 1992 | dasm_put(Dst, 12016); |
1611 | break; | 1993 | break; |
1612 | #undef TV2MARKOFS | 1994 | #undef TV2MARKOFS |
1613 | case BC_USETS: | 1995 | case BC_USETS: |
1614 | dasm_put(Dst, 10191, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); | 1996 | dasm_put(Dst, 12028, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); |
1615 | break; | 1997 | break; |
1616 | case BC_USETN: | 1998 | case BC_USETN: |
1617 | dasm_put(Dst, 10282, offsetof(GCfuncL, uvptr), DtA(->v)); | 1999 | dasm_put(Dst, 12119); |
2000 | if (sse) { | ||
2001 | dasm_put(Dst, 12124); | ||
2002 | } else { | ||
2003 | dasm_put(Dst, 10934); | ||
2004 | } | ||
2005 | dasm_put(Dst, 12131, offsetof(GCfuncL, uvptr), DtA(->v)); | ||
2006 | if (sse) { | ||
2007 | dasm_put(Dst, 4988); | ||
2008 | } else { | ||
2009 | dasm_put(Dst, 4994); | ||
2010 | } | ||
2011 | dasm_put(Dst, 8621); | ||
1618 | break; | 2012 | break; |
1619 | case BC_USETP: | 2013 | case BC_USETP: |
1620 | dasm_put(Dst, 10318, offsetof(GCfuncL, uvptr), DtA(->v)); | 2014 | dasm_put(Dst, 12140, offsetof(GCfuncL, uvptr), DtA(->v)); |
1621 | break; | 2015 | break; |
1622 | case BC_UCLO: | 2016 | case BC_UCLO: |
1623 | dasm_put(Dst, 10355, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); | 2017 | dasm_put(Dst, 12177, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); |
1624 | break; | 2018 | break; |
1625 | 2019 | ||
1626 | case BC_FNEW: | 2020 | case BC_FNEW: |
1627 | dasm_put(Dst, 10413, Dt1(->base), Dt1(->base), LJ_TFUNC); | 2021 | dasm_put(Dst, 12235, Dt1(->base), Dt1(->base), LJ_TFUNC); |
1628 | break; | 2022 | break; |
1629 | 2023 | ||
1630 | /* -- Table ops --------------------------------------------------------- */ | 2024 | /* -- Table ops --------------------------------------------------------- */ |
1631 | 2025 | ||
1632 | case BC_TNEW: | 2026 | case BC_TNEW: |
1633 | dasm_put(Dst, 10484, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); | 2027 | dasm_put(Dst, 12306, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); |
1634 | break; | 2028 | break; |
1635 | case BC_TDUP: | 2029 | case BC_TDUP: |
1636 | dasm_put(Dst, 10595, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); | 2030 | dasm_put(Dst, 12417, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); |
1637 | break; | 2031 | break; |
1638 | 2032 | ||
1639 | case BC_GGET: | 2033 | case BC_GGET: |
1640 | dasm_put(Dst, 10687, Dt7(->env)); | 2034 | dasm_put(Dst, 12509, Dt7(->env)); |
1641 | break; | 2035 | break; |
1642 | case BC_GSET: | 2036 | case BC_GSET: |
1643 | dasm_put(Dst, 10705, Dt7(->env)); | 2037 | dasm_put(Dst, 12527, Dt7(->env)); |
1644 | break; | 2038 | break; |
1645 | 2039 | ||
1646 | case BC_TGETV: | 2040 | case BC_TGETV: |
1647 | dasm_put(Dst, 10723, LJ_TTAB, LJ_TISNUM); | 2041 | dasm_put(Dst, 12545, LJ_TTAB, LJ_TISNUM); |
1648 | if (cmov) { | 2042 | if (sse) { |
1649 | dasm_put(Dst, 8815); | 2043 | dasm_put(Dst, 12578); |
1650 | } else { | 2044 | } else { |
1651 | dasm_put(Dst, 8821); | 2045 | dasm_put(Dst, 12599); |
2046 | if (cmov) { | ||
2047 | dasm_put(Dst, 10660); | ||
2048 | } else { | ||
2049 | dasm_put(Dst, 10666); | ||
2050 | } | ||
2051 | dasm_put(Dst, 12609); | ||
1652 | } | 2052 | } |
1653 | dasm_put(Dst, 10765, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); | 2053 | dasm_put(Dst, 12613, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); |
1654 | dasm_put(Dst, 10860, LJ_TSTR); | 2054 | dasm_put(Dst, 12705, LJ_TSTR); |
1655 | break; | 2055 | break; |
1656 | case BC_TGETS: | 2056 | case BC_TGETS: |
1657 | dasm_put(Dst, 10878, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); | 2057 | dasm_put(Dst, 12723, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); |
1658 | dasm_put(Dst, 10962, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); | 2058 | dasm_put(Dst, 12807, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); |
1659 | break; | 2059 | break; |
1660 | case BC_TGETB: | 2060 | case BC_TGETB: |
1661 | dasm_put(Dst, 11033, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); | 2061 | dasm_put(Dst, 12878, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); |
1662 | dasm_put(Dst, 9386); | 2062 | dasm_put(Dst, 11231); |
1663 | break; | 2063 | break; |
1664 | 2064 | ||
1665 | case BC_TSETV: | 2065 | case BC_TSETV: |
1666 | dasm_put(Dst, 11132, LJ_TTAB, LJ_TISNUM); | 2066 | dasm_put(Dst, 12977, LJ_TTAB, LJ_TISNUM); |
1667 | if (cmov) { | 2067 | if (sse) { |
1668 | dasm_put(Dst, 8815); | 2068 | dasm_put(Dst, 12578); |
1669 | } else { | 2069 | } else { |
1670 | dasm_put(Dst, 8821); | 2070 | dasm_put(Dst, 12599); |
2071 | if (cmov) { | ||
2072 | dasm_put(Dst, 10660); | ||
2073 | } else { | ||
2074 | dasm_put(Dst, 10666); | ||
2075 | } | ||
2076 | dasm_put(Dst, 12609); | ||
1671 | } | 2077 | } |
1672 | dasm_put(Dst, 11174, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); | 2078 | dasm_put(Dst, 13010, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); |
1673 | dasm_put(Dst, 11260, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); | 2079 | dasm_put(Dst, 13093, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); |
1674 | break; | 2080 | break; |
1675 | case BC_TSETS: | 2081 | case BC_TSETS: |
1676 | dasm_put(Dst, 11322, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); | 2082 | dasm_put(Dst, 13155, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); |
1677 | dasm_put(Dst, 11397, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); | 2083 | dasm_put(Dst, 13230, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); |
1678 | dasm_put(Dst, 11487, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); | 2084 | dasm_put(Dst, 13322, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); |
1679 | break; | 2085 | break; |
1680 | case BC_TSETB: | 2086 | case BC_TSETB: |
1681 | dasm_put(Dst, 11583, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); | 2087 | dasm_put(Dst, 13418, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); |
1682 | dasm_put(Dst, 11681, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); | 2088 | dasm_put(Dst, 13516, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); |
1683 | break; | 2089 | break; |
1684 | 2090 | ||
1685 | case BC_TSETM: | 2091 | case BC_TSETM: |
1686 | dasm_put(Dst, 11727, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); | 2092 | dasm_put(Dst, 13562); |
1687 | dasm_put(Dst, 11884, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); | 2093 | if (sse) { |
2094 | dasm_put(Dst, 12124); | ||
2095 | } else { | ||
2096 | dasm_put(Dst, 13567); | ||
2097 | } | ||
2098 | dasm_put(Dst, 13575, Dt6(->marked), LJ_GC_BLACK); | ||
2099 | if (sse) { | ||
2100 | dasm_put(Dst, 13600); | ||
2101 | } else { | ||
2102 | dasm_put(Dst, 13607); | ||
2103 | } | ||
2104 | dasm_put(Dst, 13612, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); | ||
2105 | dasm_put(Dst, 13740, Dt6(->gclist)); | ||
1688 | break; | 2106 | break; |
1689 | 2107 | ||
1690 | /* -- Calls and vararg handling ----------------------------------------- */ | 2108 | /* -- Calls and vararg handling ----------------------------------------- */ |
1691 | 2109 | ||
1692 | case BC_CALL: case BC_CALLM: | 2110 | case BC_CALL: case BC_CALLM: |
1693 | dasm_put(Dst, 9400); | 2111 | dasm_put(Dst, 11245); |
1694 | if (op == BC_CALLM) { | 2112 | if (op == BC_CALLM) { |
1695 | dasm_put(Dst, 11902); | 2113 | dasm_put(Dst, 13748); |
1696 | } | 2114 | } |
1697 | dasm_put(Dst, 11907, LJ_TFUNC, Dt7(->gate)); | 2115 | dasm_put(Dst, 13753, LJ_TFUNC, Dt7(->gate)); |
1698 | break; | 2116 | break; |
1699 | 2117 | ||
1700 | case BC_CALLMT: | 2118 | case BC_CALLMT: |
1701 | dasm_put(Dst, 11902); | 2119 | dasm_put(Dst, 13748); |
1702 | break; | 2120 | break; |
1703 | case BC_CALLT: | 2121 | case BC_CALLT: |
1704 | dasm_put(Dst, 11930, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); | 2122 | dasm_put(Dst, 13776, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->gate)); |
1705 | dasm_put(Dst, 12035, FRAME_TYPE, Dt7(->pt), Dt9(->k)); | 2123 | dasm_put(Dst, 13881, FRAME_TYPE, Dt7(->pt), Dt9(->k)); |
1706 | break; | 2124 | break; |
1707 | 2125 | ||
1708 | case BC_ITERC: | 2126 | case BC_ITERC: |
1709 | dasm_put(Dst, 12092, LJ_TFUNC, Dt7(->gate)); | 2127 | dasm_put(Dst, 13938, LJ_TFUNC, Dt7(->gate)); |
1710 | break; | 2128 | break; |
1711 | 2129 | ||
1712 | case BC_VARG: | 2130 | case BC_VARG: |
1713 | dasm_put(Dst, 12154, Dt7(->pt), Dt9(->numparams), (8+FRAME_VARG), LJ_TNIL); | 2131 | dasm_put(Dst, 14000, Dt7(->pt), Dt9(->numparams), (8+FRAME_VARG), LJ_TNIL); |
1714 | dasm_put(Dst, 12298, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); | 2132 | dasm_put(Dst, 14144, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); |
1715 | break; | 2133 | break; |
1716 | 2134 | ||
1717 | /* -- Returns ----------------------------------------------------------- */ | 2135 | /* -- Returns ----------------------------------------------------------- */ |
1718 | 2136 | ||
1719 | case BC_RETM: | 2137 | case BC_RETM: |
1720 | dasm_put(Dst, 11902); | 2138 | dasm_put(Dst, 13748); |
1721 | break; | 2139 | break; |
1722 | 2140 | ||
1723 | case BC_RET: case BC_RET0: case BC_RET1: | 2141 | case BC_RET: case BC_RET0: case BC_RET1: |
1724 | if (op != BC_RET0) { | 2142 | if (op != BC_RET0) { |
1725 | dasm_put(Dst, 12393); | 2143 | dasm_put(Dst, 14239); |
1726 | } | 2144 | } |
1727 | dasm_put(Dst, 12397, FRAME_TYPE); | 2145 | dasm_put(Dst, 14243, FRAME_TYPE); |
1728 | switch (op) { | 2146 | switch (op) { |
1729 | case BC_RET: | 2147 | case BC_RET: |
1730 | dasm_put(Dst, 12416); | 2148 | dasm_put(Dst, 14262); |
1731 | break; | 2149 | break; |
1732 | case BC_RET1: | 2150 | case BC_RET1: |
1733 | dasm_put(Dst, 12474); | 2151 | dasm_put(Dst, 14320); |
1734 | /* fallthrough */ | 2152 | /* fallthrough */ |
1735 | case BC_RET0: | 2153 | case BC_RET0: |
1736 | dasm_put(Dst, 3824); | 2154 | dasm_put(Dst, 14336); |
1737 | default: | 2155 | default: |
1738 | break; | 2156 | break; |
1739 | } | 2157 | } |
1740 | dasm_put(Dst, 12490, Dt7(->pt), Dt9(->k)); | 2158 | dasm_put(Dst, 14347, Dt7(->pt), Dt9(->k)); |
1741 | if (op == BC_RET) { | 2159 | if (op == BC_RET) { |
1742 | dasm_put(Dst, 12532, LJ_TNIL); | 2160 | dasm_put(Dst, 14389, LJ_TNIL); |
1743 | } else { | 2161 | } else { |
1744 | dasm_put(Dst, 12541, LJ_TNIL); | 2162 | dasm_put(Dst, 14398, LJ_TNIL); |
1745 | } | 2163 | } |
1746 | dasm_put(Dst, 12548); | 2164 | dasm_put(Dst, 14405); |
1747 | if (op != BC_RET0) { | 2165 | if (op != BC_RET0) { |
1748 | dasm_put(Dst, 12569); | 2166 | dasm_put(Dst, 14426); |
1749 | } | 2167 | } |
1750 | dasm_put(Dst, 9391); | 2168 | dasm_put(Dst, 5084); |
1751 | break; | 2169 | break; |
1752 | 2170 | ||
1753 | /* -- Loops and branches ------------------------------------------------ */ | 2171 | /* -- Loops and branches ------------------------------------------------ */ |
@@ -1755,7 +2173,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
1755 | 2173 | ||
1756 | case BC_FORL: | 2174 | case BC_FORL: |
1757 | #if LJ_HASJIT | 2175 | #if LJ_HASJIT |
1758 | dasm_put(Dst, 12573, HOTCOUNT_PCMASK, GG_DISP2HOT); | 2176 | dasm_put(Dst, 14430, HOTCOUNT_PCMASK, GG_DISP2HOT); |
1759 | #endif | 2177 | #endif |
1760 | break; | 2178 | break; |
1761 | 2179 | ||
@@ -1767,42 +2185,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
1767 | case BC_FORI: | 2185 | case BC_FORI: |
1768 | case BC_IFORL: | 2186 | case BC_IFORL: |
1769 | vk = (op == BC_IFORL || op == BC_JFORL); | 2187 | vk = (op == BC_IFORL || op == BC_JFORL); |
1770 | dasm_put(Dst, 12594); | 2188 | dasm_put(Dst, 14451); |
1771 | if (!vk) { | 2189 | if (!vk) { |
1772 | dasm_put(Dst, 12598, LJ_TISNUM, LJ_TISNUM); | 2190 | dasm_put(Dst, 14455, LJ_TISNUM, LJ_TISNUM); |
1773 | } | 2191 | } |
1774 | dasm_put(Dst, 12617); | 2192 | dasm_put(Dst, 14474); |
1775 | if (!vk) { | 2193 | if (!vk) { |
1776 | dasm_put(Dst, 12621, LJ_TISNUM); | 2194 | dasm_put(Dst, 14478, LJ_TISNUM); |
1777 | } | ||
1778 | dasm_put(Dst, 12630); | ||
1779 | if (vk) { | ||
1780 | dasm_put(Dst, 12636); | ||
1781 | } | 2195 | } |
1782 | dasm_put(Dst, 12642); | 2196 | if (sse) { |
1783 | if (cmov) { | 2197 | dasm_put(Dst, 14487); |
1784 | dasm_put(Dst, 8815); | 2198 | if (vk) { |
2199 | dasm_put(Dst, 14499); | ||
2200 | } else { | ||
2201 | dasm_put(Dst, 14518); | ||
2202 | } | ||
2203 | dasm_put(Dst, 14523); | ||
1785 | } else { | 2204 | } else { |
1786 | dasm_put(Dst, 8821); | 2205 | dasm_put(Dst, 14536); |
1787 | } | 2206 | if (vk) { |
1788 | if (!cmov) { | 2207 | dasm_put(Dst, 14542); |
1789 | dasm_put(Dst, 12657); | 2208 | } else { |
2209 | dasm_put(Dst, 14558); | ||
2210 | } | ||
2211 | dasm_put(Dst, 14566); | ||
2212 | if (cmov) { | ||
2213 | dasm_put(Dst, 10660); | ||
2214 | } else { | ||
2215 | dasm_put(Dst, 10666); | ||
2216 | } | ||
2217 | if (!cmov) { | ||
2218 | dasm_put(Dst, 14571); | ||
2219 | } | ||
1790 | } | 2220 | } |
1791 | if (op == BC_FORI) { | 2221 | if (op == BC_FORI) { |
1792 | dasm_put(Dst, 12663, -BCBIAS_J*4); | 2222 | dasm_put(Dst, 14577, -BCBIAS_J*4); |
1793 | } else if (op == BC_JFORI) { | 2223 | } else if (op == BC_JFORI) { |
1794 | dasm_put(Dst, 12673, -BCBIAS_J*4, BC_JLOOP); | 2224 | dasm_put(Dst, 14587, -BCBIAS_J*4, BC_JLOOP); |
1795 | } else if (op == BC_IFORL) { | 2225 | } else if (op == BC_IFORL) { |
1796 | dasm_put(Dst, 12687, -BCBIAS_J*4); | 2226 | dasm_put(Dst, 14601, -BCBIAS_J*4); |
1797 | } else { | 2227 | } else { |
1798 | dasm_put(Dst, 12683, BC_JLOOP); | 2228 | dasm_put(Dst, 14597, BC_JLOOP); |
2229 | } | ||
2230 | dasm_put(Dst, 10695); | ||
2231 | if (sse) { | ||
2232 | dasm_put(Dst, 14611); | ||
1799 | } | 2233 | } |
1800 | dasm_put(Dst, 8850); | ||
1801 | break; | 2234 | break; |
1802 | 2235 | ||
1803 | case BC_ITERL: | 2236 | case BC_ITERL: |
1804 | #if LJ_HASJIT | 2237 | #if LJ_HASJIT |
1805 | dasm_put(Dst, 12573, HOTCOUNT_PCMASK, GG_DISP2HOT); | 2238 | dasm_put(Dst, 14430, HOTCOUNT_PCMASK, GG_DISP2HOT); |
1806 | #endif | 2239 | #endif |
1807 | break; | 2240 | break; |
1808 | 2241 | ||
@@ -1811,33 +2244,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) | |||
1811 | break; | 2244 | break; |
1812 | #endif | 2245 | #endif |
1813 | case BC_IITERL: | 2246 | case BC_IITERL: |
1814 | dasm_put(Dst, 12697, LJ_TNIL); | 2247 | dasm_put(Dst, 14622, LJ_TNIL); |
1815 | if (op == BC_JITERL) { | 2248 | if (op == BC_JITERL) { |
1816 | dasm_put(Dst, 12712, BC_JLOOP); | 2249 | dasm_put(Dst, 14637, BC_JLOOP); |
1817 | } else { | 2250 | } else { |
1818 | dasm_put(Dst, 12726, -BCBIAS_J*4); | 2251 | dasm_put(Dst, 14651, -BCBIAS_J*4); |
1819 | } | 2252 | } |
1820 | dasm_put(Dst, 9147); | 2253 | dasm_put(Dst, 10992); |
1821 | break; | 2254 | break; |
1822 | 2255 | ||
1823 | case BC_LOOP: | 2256 | case BC_LOOP: |
1824 | #if LJ_HASJIT | 2257 | #if LJ_HASJIT |
1825 | dasm_put(Dst, 12573, HOTCOUNT_PCMASK, GG_DISP2HOT); | 2258 | dasm_put(Dst, 14430, HOTCOUNT_PCMASK, GG_DISP2HOT); |
1826 | #endif | 2259 | #endif |
1827 | break; | 2260 | break; |
1828 | 2261 | ||
1829 | case BC_ILOOP: | 2262 | case BC_ILOOP: |
1830 | dasm_put(Dst, 7174); | 2263 | dasm_put(Dst, 8621); |
1831 | break; | 2264 | break; |
1832 | 2265 | ||
1833 | case BC_JLOOP: | 2266 | case BC_JLOOP: |
1834 | #if LJ_HASJIT | 2267 | #if LJ_HASJIT |
1835 | dasm_put(Dst, 12742, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); | 2268 | dasm_put(Dst, 14667, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); |
1836 | #endif | 2269 | #endif |
1837 | break; | 2270 | break; |
1838 | 2271 | ||
1839 | case BC_JMP: | 2272 | case BC_JMP: |
1840 | dasm_put(Dst, 12765, -BCBIAS_J*4); | 2273 | dasm_put(Dst, 14690, -BCBIAS_J*4); |
1841 | break; | 2274 | break; |
1842 | 2275 | ||
1843 | /* ---------------------------------------------------------------------- */ | 2276 | /* ---------------------------------------------------------------------- */ |
@@ -1865,7 +2298,7 @@ static int build_backend(BuildCtx *ctx) | |||
1865 | 2298 | ||
1866 | build_subroutines(ctx, cmov, sse); | 2299 | build_subroutines(ctx, cmov, sse); |
1867 | 2300 | ||
1868 | dasm_put(Dst, 12789); | 2301 | dasm_put(Dst, 14714); |
1869 | for (op = 0; op < BC__MAX; op++) | 2302 | for (op = 0; op < BC__MAX; op++) |
1870 | build_ins(ctx, (BCOp)op, op, cmov, sse); | 2303 | build_ins(ctx, (BCOp)op, op, cmov, sse); |
1871 | 2304 | ||