71#if (defined SLJIT_HAVE_CONFIG_PRE && SLJIT_HAVE_CONFIG_PRE)
72#include "sljitConfigPre.h"
84#if (defined SLJIT_HAVE_CONFIG_POST && SLJIT_HAVE_CONFIG_POST)
85#include "sljitConfigPost.h"
93#define SLJIT_MAJOR_VERSION 0
94#define SLJIT_MINOR_VERSION 95
101#define SLJIT_SUCCESS 0
105#define SLJIT_ERR_COMPILED 1
107#define SLJIT_ERR_ALLOC_FAILED 2
110#define SLJIT_ERR_EX_ALLOC_FAILED 3
112#define SLJIT_ERR_UNSUPPORTED 4
114#define SLJIT_ERR_BAD_ARGUMENT 5
185#define SLJIT_R(i) (1 + (i))
188#define SLJIT_S0 (SLJIT_NUMBER_OF_REGISTERS)
189#define SLJIT_S1 (SLJIT_NUMBER_OF_REGISTERS - 1)
190#define SLJIT_S2 (SLJIT_NUMBER_OF_REGISTERS - 2)
196#define SLJIT_S3 (SLJIT_NUMBER_OF_REGISTERS - 3)
197#define SLJIT_S4 (SLJIT_NUMBER_OF_REGISTERS - 4)
198#define SLJIT_S5 (SLJIT_NUMBER_OF_REGISTERS - 5)
199#define SLJIT_S6 (SLJIT_NUMBER_OF_REGISTERS - 6)
200#define SLJIT_S7 (SLJIT_NUMBER_OF_REGISTERS - 7)
201#define SLJIT_S8 (SLJIT_NUMBER_OF_REGISTERS - 8)
202#define SLJIT_S9 (SLJIT_NUMBER_OF_REGISTERS - 9)
205#define SLJIT_S(i) (SLJIT_NUMBER_OF_REGISTERS - (i))
208#define SLJIT_FIRST_SAVED_REG (SLJIT_S0 - SLJIT_NUMBER_OF_SAVED_REGISTERS + 1)
214#define SLJIT_SP (SLJIT_NUMBER_OF_REGISTERS + 1)
218#define SLJIT_RETURN_REG SLJIT_R0
241#define SLJIT_FR(i) (1 + (i))
244#define SLJIT_FS0 (SLJIT_NUMBER_OF_FLOAT_REGISTERS)
245#define SLJIT_FS1 (SLJIT_NUMBER_OF_FLOAT_REGISTERS - 1)
246#define SLJIT_FS2 (SLJIT_NUMBER_OF_FLOAT_REGISTERS - 2)
247#define SLJIT_FS3 (SLJIT_NUMBER_OF_FLOAT_REGISTERS - 3)
248#define SLJIT_FS4 (SLJIT_NUMBER_OF_FLOAT_REGISTERS - 4)
249#define SLJIT_FS5 (SLJIT_NUMBER_OF_FLOAT_REGISTERS - 5)
250#define SLJIT_FS6 (SLJIT_NUMBER_OF_FLOAT_REGISTERS - 6)
251#define SLJIT_FS7 (SLJIT_NUMBER_OF_FLOAT_REGISTERS - 7)
252#define SLJIT_FS8 (SLJIT_NUMBER_OF_FLOAT_REGISTERS - 8)
253#define SLJIT_FS9 (SLJIT_NUMBER_OF_FLOAT_REGISTERS - 9)
256#define SLJIT_FS(i) (SLJIT_NUMBER_OF_FLOAT_REGISTERS - (i))
259#define SLJIT_FIRST_SAVED_FLOAT_REG (SLJIT_FS0 - SLJIT_NUMBER_OF_SAVED_FLOAT_REGISTERS + 1)
263#define SLJIT_RETURN_FREG SLJIT_FR0
348#define SLJIT_ARG_TYPE_SCRATCH_REG 0x8
351#define SLJIT_ARG_TYPE_RET_VOID 0
353#define SLJIT_ARG_TYPE_W 1
354#define SLJIT_ARG_TYPE_W_R (SLJIT_ARG_TYPE_W | SLJIT_ARG_TYPE_SCRATCH_REG)
356#define SLJIT_ARG_TYPE_32 2
357#define SLJIT_ARG_TYPE_32_R (SLJIT_ARG_TYPE_32 | SLJIT_ARG_TYPE_SCRATCH_REG)
359#define SLJIT_ARG_TYPE_P 3
360#define SLJIT_ARG_TYPE_P_R (SLJIT_ARG_TYPE_P | SLJIT_ARG_TYPE_SCRATCH_REG)
362#define SLJIT_ARG_TYPE_F64 4
364#define SLJIT_ARG_TYPE_F32 5
366#define SLJIT_ARG_SHIFT 4
367#define SLJIT_ARG_RETURN(type) (type)
368#define SLJIT_ARG_VALUE(type, idx) ((type) << ((idx) * SLJIT_ARG_SHIFT))
385#define SLJIT_ARG_TO_TYPE(type) SLJIT_ARG_TYPE_ ## type
387#define SLJIT_ARGS0(ret) \
388 SLJIT_ARG_RETURN(SLJIT_ARG_TO_TYPE(ret))
389#define SLJIT_ARGS0V() \
390 SLJIT_ARG_RETURN(SLJIT_ARG_TYPE_RET_VOID)
392#define SLJIT_ARGS1(ret, arg1) \
393 (SLJIT_ARGS0(ret) | SLJIT_ARG_VALUE(SLJIT_ARG_TO_TYPE(arg1), 1))
394#define SLJIT_ARGS1V(arg1) \
395 (SLJIT_ARGS0V() | SLJIT_ARG_VALUE(SLJIT_ARG_TO_TYPE(arg1), 1))
397#define SLJIT_ARGS2(ret, arg1, arg2) \
398 (SLJIT_ARGS1(ret, arg1) | SLJIT_ARG_VALUE(SLJIT_ARG_TO_TYPE(arg2), 2))
399#define SLJIT_ARGS2V(arg1, arg2) \
400 (SLJIT_ARGS1V(arg1) | SLJIT_ARG_VALUE(SLJIT_ARG_TO_TYPE(arg2), 2))
402#define SLJIT_ARGS3(ret, arg1, arg2, arg3) \
403 (SLJIT_ARGS2(ret, arg1, arg2) | SLJIT_ARG_VALUE(SLJIT_ARG_TO_TYPE(arg3), 3))
404#define SLJIT_ARGS3V(arg1, arg2, arg3) \
405 (SLJIT_ARGS2V(arg1, arg2) | SLJIT_ARG_VALUE(SLJIT_ARG_TO_TYPE(arg3), 3))
407#define SLJIT_ARGS4(ret, arg1, arg2, arg3, arg4) \
408 (SLJIT_ARGS3(ret, arg1, arg2, arg3) | SLJIT_ARG_VALUE(SLJIT_ARG_TO_TYPE(arg4), 4))
409#define SLJIT_ARGS4V(arg1, arg2, arg3, arg4) \
410 (SLJIT_ARGS3V(arg1, arg2, arg3) | SLJIT_ARG_VALUE(SLJIT_ARG_TO_TYPE(arg4), 4))
495#if (defined SLJIT_HAS_STATUS_FLAGS_STATE && SLJIT_HAS_STATUS_FLAGS_STATE)
499#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
503#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
508#if (defined SLJIT_CONFIG_ARM_V6 && SLJIT_CONFIG_ARM_V6)
519#if (defined SLJIT_CONFIG_ARM_V6 && SLJIT_CONFIG_ARM_V6) || (defined SLJIT_CONFIG_ARM_V7 && SLJIT_CONFIG_ARM_V7)
524#if (defined SLJIT_CONFIG_ARM_32 && SLJIT_CONFIG_ARM_32) && (defined __SOFTFP__)
528#if (defined SLJIT_CONFIG_PPC && SLJIT_CONFIG_PPC)
533#if (defined SLJIT_CONFIG_MIPS && SLJIT_CONFIG_MIPS)
540#if (defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32)
544#if (defined SLJIT_CONFIG_RISCV && SLJIT_CONFIG_RISCV)
550#if (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X)
556#if (defined SLJIT_CONFIG_LOONGARCH && SLJIT_CONFIG_LOONGARCH)
562#if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
566#if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) \
567 || (defined SLJIT_DEBUG && SLJIT_DEBUG)
577#if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) \
578 || (defined SLJIT_DEBUG && SLJIT_DEBUG) \
579 || (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
634#if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
643#define SLJIT_GENERATE_CODE_BUFFER 0x1
686#define SLJIT_HAS_FPU 0
688#define SLJIT_HAS_VIRTUAL_REGISTERS 1
690#define SLJIT_HAS_ZERO_REGISTER 2
692#define SLJIT_HAS_CLZ 3
694#define SLJIT_HAS_CTZ 4
696#define SLJIT_HAS_REV 5
698#define SLJIT_HAS_ROT 6
700#define SLJIT_HAS_CMOV 7
702#define SLJIT_HAS_PREFETCH 8
704#define SLJIT_HAS_COPY_F32 9
706#define SLJIT_HAS_COPY_F64 10
710#define SLJIT_HAS_F64_AS_F32_PAIR 11
712#define SLJIT_HAS_SIMD 12
717#define SLJIT_SIMD_REGS_ARE_PAIRS 13
719#define SLJIT_HAS_ATOMIC 14
721#if (defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86)
723#define SLJIT_HAS_AVX 100
725#define SLJIT_HAS_AVX2 101
728#if (defined SLJIT_CONFIG_LOONGARCH)
730#define SLJIT_HAS_LASX 201
802#define SLJIT_ENTER_KEEP(n) (n)
809#define SLJIT_ENTER_REG_ARG 0x00000004
812#define SLJIT_MAX_LOCAL_SIZE 1048576
814#if (defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86)
816#define SLJIT_ENTER_USE_VEX 0x00010000
927#define SLJIT_MEM 0x80
928#define SLJIT_MEM0() (SLJIT_MEM)
929#define SLJIT_MEM1(r1) (SLJIT_MEM | (r1))
930#define SLJIT_MEM2(r1, r2) (SLJIT_MEM | (r1) | ((r2) << 8))
931#define SLJIT_IMM 0x7f
932#define SLJIT_REG_PAIR(r1, r2) ((r1) | ((r2) << 8))
935#define SLJIT_IS_REG(arg) ((arg) > 0 && (arg) < SLJIT_IMM)
936#define SLJIT_IS_MEM(arg) ((arg) & SLJIT_MEM)
937#define SLJIT_IS_MEM0(arg) ((arg) == SLJIT_MEM)
938#define SLJIT_IS_MEM1(arg) ((arg) > SLJIT_MEM && (arg) < (SLJIT_MEM << 1))
939#define SLJIT_IS_MEM2(arg) (((arg) & SLJIT_MEM) && (arg) >= (SLJIT_MEM << 1))
940#define SLJIT_IS_IMM(arg) ((arg) == SLJIT_IMM)
941#define SLJIT_IS_REG_PAIR(arg) (!((arg) & SLJIT_MEM) && (arg) >= (SLJIT_MEM << 1))
946#define SLJIT_EXTRACT_REG(arg) ((arg) & 0x7f)
948#define SLJIT_EXTRACT_SECOND_REG(arg) ((arg) >> 8)
978#define SLJIT_32 0x100
1043#define SLJIT_SET_Z 0x0200
1046#define SLJIT_SET(condition) ((condition) << 10)
1049#define SLJIT_OP0_BASE 0
1054#define SLJIT_BREAKPOINT (SLJIT_OP0_BASE + 0)
1058#define SLJIT_NOP (SLJIT_OP0_BASE + 1)
1062#define SLJIT_LMUL_UW (SLJIT_OP0_BASE + 2)
1066#define SLJIT_LMUL_SW (SLJIT_OP0_BASE + 3)
1071#define SLJIT_DIVMOD_UW (SLJIT_OP0_BASE + 4)
1072#define SLJIT_DIVMOD_U32 (SLJIT_DIVMOD_UW | SLJIT_32)
1079#define SLJIT_DIVMOD_SW (SLJIT_OP0_BASE + 5)
1080#define SLJIT_DIVMOD_S32 (SLJIT_DIVMOD_SW | SLJIT_32)
1085#define SLJIT_DIV_UW (SLJIT_OP0_BASE + 6)
1086#define SLJIT_DIV_U32 (SLJIT_DIV_UW | SLJIT_32)
1093#define SLJIT_DIV_SW (SLJIT_OP0_BASE + 7)
1094#define SLJIT_DIV_S32 (SLJIT_DIV_SW | SLJIT_32)
1099#define SLJIT_ENDBR (SLJIT_OP0_BASE + 8)
1104#define SLJIT_SKIP_FRAMES_BEFORE_RETURN (SLJIT_OP0_BASE + 9)
1109#define SLJIT_OP1_BASE 32
1125#define SLJIT_MOV (SLJIT_OP1_BASE + 0)
1127#define SLJIT_MOV_U8 (SLJIT_OP1_BASE + 1)
1128#define SLJIT_MOV32_U8 (SLJIT_MOV_U8 | SLJIT_32)
1130#define SLJIT_MOV_S8 (SLJIT_OP1_BASE + 2)
1131#define SLJIT_MOV32_S8 (SLJIT_MOV_S8 | SLJIT_32)
1133#define SLJIT_MOV_U16 (SLJIT_OP1_BASE + 3)
1134#define SLJIT_MOV32_U16 (SLJIT_MOV_U16 | SLJIT_32)
1136#define SLJIT_MOV_S16 (SLJIT_OP1_BASE + 4)
1137#define SLJIT_MOV32_S16 (SLJIT_MOV_S16 | SLJIT_32)
1140#define SLJIT_MOV_U32 (SLJIT_OP1_BASE + 5)
1143#define SLJIT_MOV_S32 (SLJIT_OP1_BASE + 6)
1145#define SLJIT_MOV32 (SLJIT_OP1_BASE + 7)
1149#define SLJIT_MOV_P (SLJIT_OP1_BASE + 8)
1153#define SLJIT_CLZ (SLJIT_OP1_BASE + 9)
1154#define SLJIT_CLZ32 (SLJIT_CLZ | SLJIT_32)
1158#define SLJIT_CTZ (SLJIT_OP1_BASE + 10)
1159#define SLJIT_CTZ32 (SLJIT_CTZ | SLJIT_32)
1164#define SLJIT_REV (SLJIT_OP1_BASE + 11)
1165#define SLJIT_REV32 (SLJIT_REV | SLJIT_32)
1170#define SLJIT_REV_U16 (SLJIT_OP1_BASE + 12)
1171#define SLJIT_REV32_U16 (SLJIT_REV_U16 | SLJIT_32)
1176#define SLJIT_REV_S16 (SLJIT_OP1_BASE + 13)
1177#define SLJIT_REV32_S16 (SLJIT_REV_S16 | SLJIT_32)
1182#define SLJIT_REV_U32 (SLJIT_OP1_BASE + 14)
1187#define SLJIT_REV_S32 (SLJIT_OP1_BASE + 15)
1200#define SLJIT_OP2_BASE 64
1203#define SLJIT_ADD (SLJIT_OP2_BASE + 0)
1204#define SLJIT_ADD32 (SLJIT_ADD | SLJIT_32)
1206#define SLJIT_ADDC (SLJIT_OP2_BASE + 1)
1207#define SLJIT_ADDC32 (SLJIT_ADDC | SLJIT_32)
1211#define SLJIT_SUB (SLJIT_OP2_BASE + 2)
1212#define SLJIT_SUB32 (SLJIT_SUB | SLJIT_32)
1214#define SLJIT_SUBC (SLJIT_OP2_BASE + 3)
1215#define SLJIT_SUBC32 (SLJIT_SUBC | SLJIT_32)
1218#define SLJIT_MUL (SLJIT_OP2_BASE + 4)
1219#define SLJIT_MUL32 (SLJIT_MUL | SLJIT_32)
1221#define SLJIT_AND (SLJIT_OP2_BASE + 5)
1222#define SLJIT_AND32 (SLJIT_AND | SLJIT_32)
1224#define SLJIT_OR (SLJIT_OP2_BASE + 6)
1225#define SLJIT_OR32 (SLJIT_OR | SLJIT_32)
1227#define SLJIT_XOR (SLJIT_OP2_BASE + 7)
1228#define SLJIT_XOR32 (SLJIT_XOR | SLJIT_32)
1234#define SLJIT_SHL (SLJIT_OP2_BASE + 8)
1235#define SLJIT_SHL32 (SLJIT_SHL | SLJIT_32)
1239#define SLJIT_MSHL (SLJIT_OP2_BASE + 9)
1240#define SLJIT_MSHL32 (SLJIT_MSHL | SLJIT_32)
1246#define SLJIT_LSHR (SLJIT_OP2_BASE + 10)
1247#define SLJIT_LSHR32 (SLJIT_LSHR | SLJIT_32)
1251#define SLJIT_MLSHR (SLJIT_OP2_BASE + 11)
1252#define SLJIT_MLSHR32 (SLJIT_MLSHR | SLJIT_32)
1258#define SLJIT_ASHR (SLJIT_OP2_BASE + 12)
1259#define SLJIT_ASHR32 (SLJIT_ASHR | SLJIT_32)
1263#define SLJIT_MASHR (SLJIT_OP2_BASE + 13)
1264#define SLJIT_MASHR32 (SLJIT_MASHR | SLJIT_32)
1268#define SLJIT_ROTL (SLJIT_OP2_BASE + 14)
1269#define SLJIT_ROTL32 (SLJIT_ROTL | SLJIT_32)
1273#define SLJIT_ROTR (SLJIT_OP2_BASE + 15)
1274#define SLJIT_ROTR32 (SLJIT_ROTR | SLJIT_32)
1289#define SLJIT_OP2R_BASE 96
1292#define SLJIT_MULADD (SLJIT_OP2R_BASE + 0)
1293#define SLJIT_MULADD32 (SLJIT_MULADD | SLJIT_32)
1338#define SLJIT_SHIFT_INTO_NON_ZERO 0x200
1348#define SLJIT_OP_SRC_DST_BASE 112
1353#define SLJIT_FAST_RETURN (SLJIT_OP_SRC_DST_BASE + 0)
1357#define SLJIT_SKIP_FRAMES_BEFORE_FAST_RETURN (SLJIT_OP_SRC_DST_BASE + 1)
1363#define SLJIT_PREFETCH_L1 (SLJIT_OP_SRC_DST_BASE + 2)
1369#define SLJIT_PREFETCH_L2 (SLJIT_OP_SRC_DST_BASE + 3)
1375#define SLJIT_PREFETCH_L3 (SLJIT_OP_SRC_DST_BASE + 4)
1381#define SLJIT_PREFETCH_ONCE (SLJIT_OP_SRC_DST_BASE + 5)
1388#define SLJIT_FAST_ENTER (SLJIT_OP_SRC_DST_BASE + 6)
1394#define SLJIT_GET_RETURN_ADDRESS (SLJIT_OP_SRC_DST_BASE + 7)
1400#define SLJIT_FOP1_BASE 144
1403#define SLJIT_MOV_F64 (SLJIT_FOP1_BASE + 0)
1404#define SLJIT_MOV_F32 (SLJIT_MOV_F64 | SLJIT_32)
1409#define SLJIT_CONV_F64_FROM_F32 (SLJIT_FOP1_BASE + 1)
1410#define SLJIT_CONV_F32_FROM_F64 (SLJIT_CONV_F64_FROM_F32 | SLJIT_32)
1412#define SLJIT_CONV_SW_FROM_F64 (SLJIT_FOP1_BASE + 2)
1413#define SLJIT_CONV_SW_FROM_F32 (SLJIT_CONV_SW_FROM_F64 | SLJIT_32)
1415#define SLJIT_CONV_S32_FROM_F64 (SLJIT_FOP1_BASE + 3)
1416#define SLJIT_CONV_S32_FROM_F32 (SLJIT_CONV_S32_FROM_F64 | SLJIT_32)
1418#define SLJIT_CONV_F64_FROM_SW (SLJIT_FOP1_BASE + 4)
1419#define SLJIT_CONV_F32_FROM_SW (SLJIT_CONV_F64_FROM_SW | SLJIT_32)
1421#define SLJIT_CONV_F64_FROM_S32 (SLJIT_FOP1_BASE + 5)
1422#define SLJIT_CONV_F32_FROM_S32 (SLJIT_CONV_F64_FROM_S32 | SLJIT_32)
1424#define SLJIT_CONV_F64_FROM_UW (SLJIT_FOP1_BASE + 6)
1425#define SLJIT_CONV_F32_FROM_UW (SLJIT_CONV_F64_FROM_UW | SLJIT_32)
1427#define SLJIT_CONV_F64_FROM_U32 (SLJIT_FOP1_BASE + 7)
1428#define SLJIT_CONV_F32_FROM_U32 (SLJIT_CONV_F64_FROM_U32 | SLJIT_32)
1431#define SLJIT_CMP_F64 (SLJIT_FOP1_BASE + 8)
1432#define SLJIT_CMP_F32 (SLJIT_CMP_F64 | SLJIT_32)
1434#define SLJIT_NEG_F64 (SLJIT_FOP1_BASE + 9)
1435#define SLJIT_NEG_F32 (SLJIT_NEG_F64 | SLJIT_32)
1437#define SLJIT_ABS_F64 (SLJIT_FOP1_BASE + 10)
1438#define SLJIT_ABS_F32 (SLJIT_ABS_F64 | SLJIT_32)
1445#define SLJIT_FOP2_BASE 176
1448#define SLJIT_ADD_F64 (SLJIT_FOP2_BASE + 0)
1449#define SLJIT_ADD_F32 (SLJIT_ADD_F64 | SLJIT_32)
1451#define SLJIT_SUB_F64 (SLJIT_FOP2_BASE + 1)
1452#define SLJIT_SUB_F32 (SLJIT_SUB_F64 | SLJIT_32)
1454#define SLJIT_MUL_F64 (SLJIT_FOP2_BASE + 2)
1455#define SLJIT_MUL_F32 (SLJIT_MUL_F64 | SLJIT_32)
1457#define SLJIT_DIV_F64 (SLJIT_FOP2_BASE + 3)
1458#define SLJIT_DIV_F32 (SLJIT_DIV_F64 | SLJIT_32)
1466#define SLJIT_FOP2R_BASE 192
1469#define SLJIT_COPYSIGN_F64 (SLJIT_FOP2R_BASE + 0)
1470#define SLJIT_COPYSIGN_F32 (SLJIT_COPYSIGN_F64 | SLJIT_32)
1496#define SLJIT_COPY_TO_F64 1
1499#define SLJIT_COPY32_TO_F32 (SLJIT_COPY_TO_F64 | SLJIT_32)
1508#define SLJIT_COPY_FROM_F64 2
1512#define SLJIT_COPY32_FROM_F32 (SLJIT_COPY_FROM_F64 | SLJIT_32)
1552#define SLJIT_EQUAL 0
1553#define SLJIT_ZERO SLJIT_EQUAL
1554#define SLJIT_NOT_EQUAL 1
1555#define SLJIT_NOT_ZERO SLJIT_NOT_EQUAL
1558#define SLJIT_SET_LESS SLJIT_SET(SLJIT_LESS)
1559#define SLJIT_GREATER_EQUAL 3
1560#define SLJIT_SET_GREATER_EQUAL SLJIT_SET(SLJIT_LESS)
1561#define SLJIT_GREATER 4
1562#define SLJIT_SET_GREATER SLJIT_SET(SLJIT_GREATER)
1563#define SLJIT_LESS_EQUAL 5
1564#define SLJIT_SET_LESS_EQUAL SLJIT_SET(SLJIT_GREATER)
1565#define SLJIT_SIG_LESS 6
1566#define SLJIT_SET_SIG_LESS SLJIT_SET(SLJIT_SIG_LESS)
1567#define SLJIT_SIG_GREATER_EQUAL 7
1568#define SLJIT_SET_SIG_GREATER_EQUAL SLJIT_SET(SLJIT_SIG_LESS)
1569#define SLJIT_SIG_GREATER 8
1570#define SLJIT_SET_SIG_GREATER SLJIT_SET(SLJIT_SIG_GREATER)
1571#define SLJIT_SIG_LESS_EQUAL 9
1572#define SLJIT_SET_SIG_LESS_EQUAL SLJIT_SET(SLJIT_SIG_GREATER)
1574#define SLJIT_OVERFLOW 10
1575#define SLJIT_SET_OVERFLOW SLJIT_SET(SLJIT_OVERFLOW)
1576#define SLJIT_NOT_OVERFLOW 11
1579#define SLJIT_CARRY 12
1580#define SLJIT_SET_CARRY SLJIT_SET(SLJIT_CARRY)
1581#define SLJIT_NOT_CARRY 13
1583#define SLJIT_ATOMIC_STORED 14
1584#define SLJIT_SET_ATOMIC_STORED SLJIT_SET(SLJIT_ATOMIC_STORED)
1585#define SLJIT_ATOMIC_NOT_STORED 15
1591#define SLJIT_F_EQUAL 16
1592#define SLJIT_SET_F_EQUAL SLJIT_SET(SLJIT_F_EQUAL)
1593#define SLJIT_F_NOT_EQUAL 17
1594#define SLJIT_SET_F_NOT_EQUAL SLJIT_SET(SLJIT_F_EQUAL)
1595#define SLJIT_F_LESS 18
1596#define SLJIT_SET_F_LESS SLJIT_SET(SLJIT_F_LESS)
1597#define SLJIT_F_GREATER_EQUAL 19
1598#define SLJIT_SET_F_GREATER_EQUAL SLJIT_SET(SLJIT_F_LESS)
1599#define SLJIT_F_GREATER 20
1600#define SLJIT_SET_F_GREATER SLJIT_SET(SLJIT_F_GREATER)
1601#define SLJIT_F_LESS_EQUAL 21
1602#define SLJIT_SET_F_LESS_EQUAL SLJIT_SET(SLJIT_F_GREATER)
1605#define SLJIT_UNORDERED 22
1606#define SLJIT_SET_UNORDERED SLJIT_SET(SLJIT_UNORDERED)
1608#define SLJIT_ORDERED 23
1609#define SLJIT_SET_ORDERED SLJIT_SET(SLJIT_UNORDERED)
1616#define SLJIT_ORDERED_EQUAL 24
1617#define SLJIT_SET_ORDERED_EQUAL SLJIT_SET(SLJIT_ORDERED_EQUAL)
1618#define SLJIT_UNORDERED_OR_NOT_EQUAL 25
1619#define SLJIT_SET_UNORDERED_OR_NOT_EQUAL SLJIT_SET(SLJIT_ORDERED_EQUAL)
1620#define SLJIT_ORDERED_LESS 26
1621#define SLJIT_SET_ORDERED_LESS SLJIT_SET(SLJIT_ORDERED_LESS)
1622#define SLJIT_UNORDERED_OR_GREATER_EQUAL 27
1623#define SLJIT_SET_UNORDERED_OR_GREATER_EQUAL SLJIT_SET(SLJIT_ORDERED_LESS)
1624#define SLJIT_ORDERED_GREATER 28
1625#define SLJIT_SET_ORDERED_GREATER SLJIT_SET(SLJIT_ORDERED_GREATER)
1626#define SLJIT_UNORDERED_OR_LESS_EQUAL 29
1627#define SLJIT_SET_UNORDERED_OR_LESS_EQUAL SLJIT_SET(SLJIT_ORDERED_GREATER)
1629#define SLJIT_UNORDERED_OR_EQUAL 30
1630#define SLJIT_SET_UNORDERED_OR_EQUAL SLJIT_SET(SLJIT_UNORDERED_OR_EQUAL)
1631#define SLJIT_ORDERED_NOT_EQUAL 31
1632#define SLJIT_SET_ORDERED_NOT_EQUAL SLJIT_SET(SLJIT_UNORDERED_OR_EQUAL)
1633#define SLJIT_UNORDERED_OR_LESS 32
1634#define SLJIT_SET_UNORDERED_OR_LESS SLJIT_SET(SLJIT_UNORDERED_OR_LESS)
1635#define SLJIT_ORDERED_GREATER_EQUAL 33
1636#define SLJIT_SET_ORDERED_GREATER_EQUAL SLJIT_SET(SLJIT_UNORDERED_OR_LESS)
1637#define SLJIT_UNORDERED_OR_GREATER 34
1638#define SLJIT_SET_UNORDERED_OR_GREATER SLJIT_SET(SLJIT_UNORDERED_OR_GREATER)
1639#define SLJIT_ORDERED_LESS_EQUAL 35
1640#define SLJIT_SET_ORDERED_LESS_EQUAL SLJIT_SET(SLJIT_UNORDERED_OR_GREATER)
1643#define SLJIT_JUMP 36
1645#define SLJIT_FAST_CALL 37
1647#define SLJIT_CALL 38
1650#define SLJIT_CALL_REG_ARG 39
1653#define SLJIT_REWRITABLE_JUMP 0x1000
1659#define SLJIT_CALL_RETURN 0x2000
1781#define SLJIT_MEM_LOAD 0x000000
1783#define SLJIT_MEM_STORE 0x000200
1788#define SLJIT_MEM_UNALIGNED 0x000400
1790#define SLJIT_MEM_ALIGNED_16 0x000800
1792#define SLJIT_MEM_ALIGNED_32 0x001000
1798#define SLJIT_MEM_PRE 0x000000
1800#define SLJIT_MEM_POST 0x000400
1806#define SLJIT_MEM_SUPP 0x000800
1894#define SLJIT_SIMD_LOAD 0x000000
1896#define SLJIT_SIMD_STORE 0x000001
1898#define SLJIT_SIMD_FLOAT 0x000400
1900#define SLJIT_SIMD_TEST 0x000800
1902#define SLJIT_SIMD_REG_64 (3 << 12)
1904#define SLJIT_SIMD_REG_128 (4 << 12)
1906#define SLJIT_SIMD_REG_256 (5 << 12)
1908#define SLJIT_SIMD_REG_512 (6 << 12)
1910#define SLJIT_SIMD_ELEM_8 (0 << 18)
1912#define SLJIT_SIMD_ELEM_16 (1 << 18)
1914#define SLJIT_SIMD_ELEM_32 (2 << 18)
1916#define SLJIT_SIMD_ELEM_64 (3 << 18)
1918#define SLJIT_SIMD_ELEM_128 (4 << 18)
1920#define SLJIT_SIMD_ELEM_256 (5 << 18)
1925#define SLJIT_SIMD_MEM_UNALIGNED (0 << 24)
1927#define SLJIT_SIMD_MEM_ALIGNED_16 (1 << 24)
1929#define SLJIT_SIMD_MEM_ALIGNED_32 (2 << 24)
1931#define SLJIT_SIMD_MEM_ALIGNED_64 (3 << 24)
1933#define SLJIT_SIMD_MEM_ALIGNED_128 (4 << 24)
1935#define SLJIT_SIMD_MEM_ALIGNED_256 (5 << 24)
1937#define SLJIT_SIMD_MEM_ALIGNED_512 (6 << 24)
1986#define SLJIT_SIMD_LANE_ZERO 0x000002
1988#define SLJIT_SIMD_LANE_SIGNED 0x000004
2043#define SLJIT_SIMD_EXTEND_SIGNED 0x000002
2045#define SLJIT_SIMD_EXTEND_16 (1 << 24)
2047#define SLJIT_SIMD_EXTEND_32 (2 << 24)
2049#define SLJIT_SIMD_EXTEND_64 (3 << 24)
2094#define SLJIT_SIMD_OP2_AND 0x000001
2096#define SLJIT_SIMD_OP2_OR 0x000002
2098#define SLJIT_SIMD_OP2_XOR 0x000003
2212#define SLJIT_GP_REGISTER 0
2214#define SLJIT_FLOAT_REGISTER 1
2248#define SLJIT_CURRENT_FLAGS_32 SLJIT_32
2251#define SLJIT_CURRENT_FLAGS_ADD 0x01
2253#define SLJIT_CURRENT_FLAGS_SUB 0x02
2257#define SLJIT_CURRENT_FLAGS_COMPARE 0x04
2307#define SLJIT_SERIALIZE_IGNORE_DEBUG 0x1
2372#define SLJIT_OFFSETOF(base, member) ((sljit_sw)(&((base*)0x10)->member) - 0x10)
2374#if (defined SLJIT_UTIL_STACK && SLJIT_UTIL_STACK)
2425#if !(defined SLJIT_INDIRECT_CALL && SLJIT_INDIRECT_CALL)
2428#define SLJIT_FUNC_ADDR(func_name) ((sljit_sw)func_name)
2429#define SLJIT_FUNC_UADDR(func_name) ((sljit_uw)func_name)
2436#define SLJIT_FUNC_ADDR(func_name) (*(sljit_sw*)(void*)func_name)
2437#define SLJIT_FUNC_UADDR(func_name) (*(sljit_uw*)(void*)func_name)
2440struct sljit_function_context {
2453#if (defined SLJIT_EXECUTABLE_ALLOCATOR && SLJIT_EXECUTABLE_ALLOCATOR)
PHP_JSON_API size_t int options
#define SLJIT_API_FUNC_ATTRIBUTE
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_flags(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 type)
SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump * sljit_emit_jump(struct sljit_compiler *compiler, sljit_s32 type)
SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump * sljit_emit_call(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 arg_types)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_jump_is_mov_addr(struct sljit_jump *jump)
SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void *code, void *exec_allocator_data)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op2r(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst_reg, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_select(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 dst_reg, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2_reg)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_mem(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 reg, sljit_s32 mem, sljit_sw memw)
SLJIT_API_FUNC_ATTRIBUTE void * sljit_alloc_memory(struct sljit_compiler *compiler, sljit_s32 size)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_return_to(struct sljit_compiler *compiler, sljit_s32 src, sljit_sw srcw)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_jump_has_label(struct sljit_jump *jump)
SLJIT_API_FUNC_ATTRIBUTE const char * sljit_get_platform_name(void)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_has_cpu_feature(sljit_s32 feature_type)
SLJIT_API_FUNC_ATTRIBUTE void * sljit_generate_code(struct sljit_compiler *compiler, sljit_s32 options, void *exec_allocator_data)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op2u(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_target(struct sljit_jump *jump, sljit_uw target)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_cmp_info(sljit_s32 type)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_get_local_base(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw, sljit_sw offset)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_atomic_load(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst_reg, sljit_s32 mem_reg)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_get_register_index(sljit_s32 type, sljit_s32 reg)
SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler * sljit_deserialize_compiler(sljit_uw *buffer, sljit_uw size, sljit_s32 options, void *allocator_data)
SLJIT_API_FUNC_ATTRIBUTE struct sljit_const * sljit_emit_const(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw, sljit_sw init_value)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_replicate(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 freg, sljit_s32 src, sljit_sw srcw)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_op2(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 dst_freg, sljit_s32 src1_freg, sljit_s32 src2_freg)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_jump_has_target(struct sljit_jump *jump)
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant, sljit_sw executable_offset)
SLJIT_API_FUNC_ATTRIBUTE struct sljit_label * sljit_emit_label(struct sljit_compiler *compiler)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_ijump(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 src, sljit_sw srcw)
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_label(struct sljit_jump *jump, struct sljit_label *label)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fset32(struct sljit_compiler *compiler, sljit_s32 freg, sljit_f32 value)
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_current_flags(struct sljit_compiler *compiler, sljit_s32 current_flags)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fcopy(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 freg, sljit_s32 reg)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fop2r(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst_freg, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_return_void(struct sljit_compiler *compiler)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_mem_update(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 reg, sljit_s32 mem, sljit_sw memw)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_set_context(struct sljit_compiler *compiler, sljit_s32 options, sljit_s32 arg_types, sljit_s32 scratches, sljit_s32 saveds, sljit_s32 fscratches, sljit_s32 fsaveds, sljit_s32 local_size)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_lane_mov(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 freg, sljit_s32 lane_index, sljit_s32 srcdst, sljit_sw srcdstw)
SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump * sljit_emit_mov_addr(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw)
SLJIT_API_FUNC_ATTRIBUTE sljit_u8 *SLJIT_FUNC sljit_stack_resize(struct sljit_stack *stack, sljit_u8 *new_start)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op0(struct sljit_compiler *compiler, sljit_s32 op)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fop2(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fop1(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src, sljit_sw srcw)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_shift_into(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst_reg, sljit_s32 src1_reg, sljit_s32 src2_reg, sljit_s32 src3, sljit_sw src3w)
SLJIT_API_FUNC_ATTRIBUTE void sljit_compiler_verbose(struct sljit_compiler *compiler, FILE *verbose)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_extend(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 freg, sljit_s32 src, sljit_sw srcw)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_enter(struct sljit_compiler *compiler, sljit_s32 options, sljit_s32 arg_types, sljit_s32 scratches, sljit_s32 saveds, sljit_s32 fscratches, sljit_s32 fsaveds, sljit_s32 local_size)
SLJIT_API_FUNC_ATTRIBUTE sljit_uw * sljit_serialize_compiler(struct sljit_compiler *compiler, sljit_s32 options, sljit_uw *size)
SLJIT_API_FUNC_ATTRIBUTE struct sljit_stack *SLJIT_FUNC sljit_allocate_stack(sljit_uw start_size, sljit_uw max_size, void *allocator_data)
SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump * sljit_emit_fcmp(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
SLJIT_API_FUNC_ATTRIBUTE void SLJIT_FUNC sljit_free_stack(struct sljit_stack *stack, void *allocator_data)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_mov(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 freg, sljit_s32 srcdst, sljit_sw srcdstw)
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_compiler_memory_error(struct sljit_compiler *compiler)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fset64(struct sljit_compiler *compiler, sljit_s32 freg, sljit_f64 value)
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_dst(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_atomic_store(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 src_reg, sljit_s32 mem_reg, sljit_s32 temp_reg)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fselect(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 dst_freg, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2_freg)
SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler * sljit_create_compiler(void *allocator_data)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_src(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 src, sljit_sw srcw)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_sign(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 freg, sljit_s32 dst, sljit_sw dstw)
SLJIT_API_FUNC_ATTRIBUTE void sljit_free_compiler(struct sljit_compiler *compiler)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fmem(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 freg, sljit_s32 mem, sljit_sw memw)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_return(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 src, sljit_sw srcw)
SLJIT_API_FUNC_ATTRIBUTE void sljit_free_unused_memory_exec(void)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op2(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_custom(struct sljit_compiler *compiler, void *instruction, sljit_u32 size)
SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump * sljit_emit_cmp(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_icall(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 arg_types, sljit_s32 src, sljit_sw srcw)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fmem_update(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 freg, sljit_s32 mem, sljit_sw memw)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op1(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src, sljit_sw srcw)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_lane_replicate(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 freg, sljit_s32 src, sljit_s32 src_lane_index)
struct sljit_jump * last_jump
struct sljit_const * consts
sljit_sw executable_offset
struct sljit_const * last_const
struct sljit_jump * jumps
struct sljit_label * last_label
struct sljit_memory_fragment * abuf
struct sljit_memory_fragment * buf
sljit_s32 logical_local_size
struct sljit_label * labels
struct sljit_const * next
sljit_sw executable_offset
struct sljit_label * label
struct sljit_label * next
union sljit_label::@034003116150245300057154161307153110213245130244 u
struct sljit_memory_fragment * next