SLJIT_CPUINFO;
44 #define TMP_REG1 (SLJIT_NUMBER_OF_REGISTERS + 2) 45 #define TMP_REG2 (SLJIT_NUMBER_OF_REGISTERS + 3) 480, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 0, 1, 14
97 #define IS_GPR_REG(reg) ((reg > 0) && (reg) <= SLJIT_SP) 102 #define TMP_FREG1 (SLJIT_NUMBER_OF_FLOAT_REGISTERS + 1) 1050, 0, 2, 4, 6, 3, 5, 7, 15, 14, 13, 12, 11, 10, 9, 8, 1
109 #define R4A(r) ((r) << 4) 110 #define R8A(r) ((r) << 8) 111 #define R12A(r) ((r) << 12) 112 #define R16A(r) ((r) << 16) 113 #define R20A(r) ((r) << 20) 114 #define R28A(r) ((r) << 28) 115 #define R32A(r) ((r) << 32) 116 #define R36A(r) ((r) << 36) 118 #define R0(r) ((sljit_ins)reg_map[r]) 120 #define F0(r) ((sljit_ins)freg_map[r]) 121 #define F4(r) (R4A((sljit_ins)freg_map[r])) 122 #define F12(r) (R12A((sljit_ins)freg_map[r])) 123 #define F20(r) (R20A((sljit_ins)freg_map[r])) 124 #define F28(r) (R28A((sljit_ins)freg_map[r])) 125 #define F32(r) (R32A((sljit_ins)freg_map[r])) 126 #define F36(r) (R36A((sljit_ins)freg_map[r])) 149 if(ins & 0xffff00000000L)
152 if(ins & 0xffffffff0000L)
158 #define SLJIT_ADD_SUB_NO_COMPARE(status_flags_state) \ 159 (((status_flags_state) & (SLJIT_CURRENT_FLAGS_ADD | SLJIT_CURRENT_FLAGS_SUB)) \ 160 && !((status_flags_state) & SLJIT_CURRENT_FLAGS_COMPARE)) 172 sljit_s32 type= GET_FLAG_TYPE(compiler->status_flags_state);
188 sljit_s32 type= GET_FLAG_TYPE(compiler->status_flags_state);
190 return(cc1 | cc2 | cc3);
198 return(cc1 | cc2 | cc3);
206 return(cc0 | cc2 | cc3);
216 return(cc0 | cc1 | cc2);
244 return(cc0 | cc2 | cc3);
260 return(cc0 | cc1 | cc2);
275 return(cc0 | cc1 | cc3);
291 #define STORE_FACILITY_LIST_EXTENDED_FACILITY 7 292 #define FAST_LONG_DISPLACEMENT_FACILITY 19 293 #define EXTENDED_IMMEDIATE_FACILITY 21 294 #define GENERAL_INSTRUCTION_EXTENSION_FACILITY 34 295 #define DISTINCT_OPERAND_FACILITY 45 296 #define HIGH_WORD_FACILITY 45 297 #define POPULATION_COUNT_FACILITY 45 298 #define LOAD_STORE_ON_CONDITION_1_FACILITY 45 299 #define MISCELLANEOUS_INSTRUCTION_EXTENSIONS_1_FACILITY 49 300 #define LOAD_STORE_ON_CONDITION_2_FACILITY 53 301 #define MISCELLANEOUS_INSTRUCTION_EXTENSIONS_2_FACILITY 58 302 #define VECTOR_FACILITY 129 303 #define VECTOR_ENHANCEMENTS_1_FACILITY 135 310 #if ENABLE_STATIC_FACILITY_DETECTION 313 return(__ARCH__ >= 6
);
316 return(__ARCH__ >= 7
);
318 return(__ARCH__ >= 8
);
320 return(__ARCH__ >= 9
);
322 return(__ARCH__ >= 10
);
325 return(__ARCH__ >= 11
);
328 return(__ARCH__ >= 12
);
338 static unsigned longhwcap = 0;
340hwcap = getauxval(AT_HWCAP);
351 return(
get_hwcap() & HWCAP_S390_STFLE);
358 #if ENABLE_DYNAMIC_FACILITY_DETECTION 362 size_t size=
sizeof(cpu_features);
364 const sljit_uwbit_index = ((1UL << 63) >> (x & 63));
371__asm__ __volatile__ (
375:
"d"((
size/ 8) - 1),
"a"(&cpu_features)
376:
"r0",
"cc",
"memory" 380 return(cpu_features.bits[word_index] & bit_index) != 0;
386 #define HAVE_FACILITY(name, bit) \ 387 static SLJIT_INLINE int name() \ 389 static int have = -1; \ 391 if (have_facility_static(bit)) \ 393 else if (SLJIT_UNLIKELY(have < 0)) \ 394 have = have_facility_dynamic(bit) ? 1 : 0; \ 407 #define is_u12(d) (0 <= (d) && (d) <= 0x00000fffL) 408 #define is_u32(d) (0 <= (d) && (d) <= 0xffffffffL) 410 #define CHECK_SIGNED(v, bitlen) \ 411 ((v) >= -(1 << ((bitlen) - 1)) && (v) < (1 << ((bitlen) - 1))) 413 #define is_s8(d) CHECK_SIGNED((d), 8) 414 #define is_s16(d) CHECK_SIGNED((d), 16) 415 #define is_s20(d) CHECK_SIGNED((d), 20) 416 #define is_s32(d) ((d) == (sljit_s32)(d)) 424dh = (d >> 12) & 0xff;
425dl = ((
sljit_uw)d << 8) & 0xfff00;
426 return(dh | dl) << 8;
430 #define SLJIT_S390X_INSTRUCTION(op, ...) \ 431 static SLJIT_INLINE sljit_ins op(__VA_ARGS__) 434 #define SLJIT_S390X_RR(name, pattern) \ 435 SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src) \ 437 return (pattern) | ((dst & 0xf) << 4) | (src & 0xf); \ 464 #undef SLJIT_S390X_RR 467 #define SLJIT_S390X_RRE(name, pattern) \ 468 SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src) \ 470 return (pattern) | R4A(dst) | R0A(src); \ 524 #undef SLJIT_S390X_RRE 527 #define SLJIT_S390X_RIA(name, pattern, imm_type) \ 528 SLJIT_S390X_INSTRUCTION(name, sljit_gpr reg, imm_type imm) \ 530 return (pattern) | R20A(reg) | (imm & 0xffff); \ 553 #undef SLJIT_S390X_RIA 556 #define SLJIT_S390X_RILA(name, pattern, imm_type) \ 557 SLJIT_S390X_INSTRUCTION(name, sljit_gpr reg, imm_type imm) \ 559 SLJIT_ASSERT(have_eimm()); \ 560 return (pattern) | R36A(reg) | ((sljit_ins)imm & 0xffffffffu); \ 589 #undef SLJIT_S390X_RILA 592 #define SLJIT_S390X_RXA(name, pattern) \ 593 SLJIT_S390X_INSTRUCTION(name, sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b) \ 595 SLJIT_ASSERT((d & 0xfff) == d); \ 597 return (pattern) | R20A(r) | R16A(x) | R12A(b) | (sljit_ins)(d & 0xfff); \ 621 #undef SLJIT_S390X_RXA 624 #define SLJIT_S390X_RXYA(name, pattern, cond) \ 625 SLJIT_S390X_INSTRUCTION(name, sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b) \ 627 SLJIT_ASSERT(cond); \ 629 return (pattern) | R36A(r) | R32A(x) | R28A(b) | disp_s20(d); \ 670 #undef SLJIT_S390X_RXYA 673 #define SLJIT_S390X_RSYA(name, pattern, cond) \ 674 SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src, sljit_s32 d, sljit_gpr b) \ 676 SLJIT_ASSERT(cond); \ 678 return (pattern) | R36A(dst) | R32A(src) | R28A(b) | disp_s20(d); \ 693 #undef SLJIT_S390X_RSYA 696 #define SLJIT_S390X_RIEF(name, pattern) \ 697 SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src, sljit_u8 start, sljit_u8 end, sljit_u8 rot) \ 699 sljit_ins i3, i4, i5; \ 701 SLJIT_ASSERT(have_genext()); \ 702 i3 = (sljit_ins)start << 24; \ 703 i4 = (sljit_ins)end << 16; \ 704 i5 = (sljit_ins)rot << 8; \ 706 return (pattern) | R36A(dst & 0xf) | R32A(src & 0xf) | i3 | i4 | i5; \ 728 #undef SLJIT_S390X_RIEF 731 #define SLJIT_S390X_RRFC(name, pattern) \ 732 SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src, sljit_uw mask) \ 736 SLJIT_ASSERT(have_lscond1()); \ 737 m3 = (sljit_ins)(mask & 0xf) << 12; \ 739 return (pattern) | m3 | R4A(dst) | R0A(src); \ 746 #undef SLJIT_S390X_RRFC 749 #define SLJIT_S390X_RIEG(name, pattern) \ 750 SLJIT_S390X_INSTRUCTION(name, sljit_gpr reg, sljit_sw imm, sljit_uw mask) \ 754 SLJIT_ASSERT(have_lscond2()); \ 755 m3 = (sljit_ins)(mask & 0xf) << 32; \ 756 i2 = (sljit_ins)(imm & 0xffffL) << 16; \ 758 return (pattern) | R36A(reg) | m3 | i2; \ 765 #undef SLJIT_S390X_RIEG 767 #define SLJIT_S390X_RILB(name, pattern, cond) \ 768 SLJIT_S390X_INSTRUCTION(name, sljit_gpr reg, sljit_sw ri) \ 770 SLJIT_ASSERT(cond); \ 772 return (pattern) | R36A(reg) | (sljit_ins)(ri & 0xffffffff); \ 784 #undef SLJIT_S390X_RILB 788 return0x07f0 | target;
795 return0xa7040000L | m1 | ri2;
802 return0xc00400000000L | m1 | ri2;
808 return0xb9830000 |
R8A(dst) |
R0A(src);
814 return0xb2220000 |
R4A(dst);
820 return0x0400 |
R4A(dst);
826 return risbhg(dst, src, start, 0x8 | end, rot);
829 #undef SLJIT_S390X_INSTRUCTION 896base =
gpr(mem & REG_MASK);
898 if(mem & OFFS_REG_MASK) {
899index =
gpr(OFFS_REG(mem));
908 else if(!
is_s20(off)) {
929base =
gpr(mem & REG_MASK);
931 if(mem & OFFS_REG_MASK) {
932index =
gpr(OFFS_REG(mem));
941 else if(!
is_u12(off)) {
952 #define EVAL(op, r, addr) op(r, addr.offset, addr.index, addr.base) 953 #define WHEN(cond, r, i1, i2, addr) \ 954 (cond) ? EVAL(i1, r, addr) : EVAL(i2, r, addr) 965 if(is_32bit && ((mem & OFFS_REG_MASK) ||
is_u12(memw) || !
is_s20(memw))) {
1012ins = is_32bit ? 0xe30000000016
: 0xe30000000004
;
1038 return load_word(compiler, dst_r, src, srcw, (compiler->mode &
SLJIT_32) != 0);
1040src_r =
gpr(src & REG_MASK);
1053 if(FAST_IS_REG(dst)) {
1058 else if(dst == src2) {
1067 if(FAST_IS_REG(src2))
1074 if(needs_move != 2)
1077dst_r =
gpr(dst & REG_MASK);
1088 if(FAST_IS_REG(src1))
1105 if(FAST_IS_REG(src1))
1106src1_r =
gpr(src1);
1110 if(FAST_IS_REG(src2))
1111src2_r =
gpr(src2);
1132 if(FAST_IS_REG(dst)) {
1143 return push_inst(compiler, ins |
R36A(dst_r) | (src2w & 0xffffffff));
1144 return push_inst(compiler, ins |
R20A(dst_r) | (src2w & 0xffff));
1155 if(!FAST_IS_REG(src1))
1158src_r =
gpr(src1 & REG_MASK);
1180 if(FAST_IS_REG(dst)) {
1185 else if(dst == (src2 & REG_MASK) || (dst == OFFS_REG(src2))) {
1197 if(src2 & OFFS_REG_MASK) {
1208 if(src2 & REG_MASK)
1222 if(needs_move != 2)
1237 if(dst & OFFS_REG_MASK) {
1240 if((dstw & 0x3) == 0)
1248 else if(!
is_s20(dstw)) {
1257dst_r =
gpr(dst & REG_MASK);
1284ins12 = forms->
op;
1285ins20 = forms->
op_y;
1289ins20 = forms->
op_g;
1292 if(ins12 && ins20) {
1295|| ((src1 & OFFS_REG_MASK) ? (src1w & 0x3) == 0 :
is_s20(src1w)))) {
1296 if((src2 & OFFS_REG_MASK) ||
is_u12(src2w) || !
is_s20(src2w))
1297 return emit_rx(compiler, ins12, dst, src1, src1w, src2, src2w,
RX_A);
1299 return emit_rx(compiler, ins20, dst, src1, src1w, src2, src2w,
RXY_A);
1303 if((src1 & OFFS_REG_MASK) ||
is_u12(src1w) || !
is_s20(src1w))
1304 return emit_rx(compiler, ins12, dst, src2, src2w, src1, src1w,
RX_A);
1306 return emit_rx(compiler, ins20, dst, src2, src2w, src1, src1w,
RXY_A);
1309 else if(ins12 || ins20) {
1322|| ((src1 & OFFS_REG_MASK) ? (src1w & 0x3) == 0 : (rx_type ==
RX_A?
is_u12(src1w) :
is_s20(src1w)))))
1323 return emit_rx(compiler, ins, dst, src1, src1w, src2, src2w, rx_type);
1326 return emit_rx(compiler, ins, dst, src2, src2w, src1, src1w, rx_type);
1331ins = forms->
op_r;
1332ins_k = forms->
op_rk;
1335ins = forms->
op_gr;
1341 if(ins && FAST_IS_REG(dst)) {
1343 return emit_rr(compiler, ins, dst, src1, src1w, src2, src2w);
1346 return emit_rr(compiler, ins, dst, src2, src2w, src1, src1w);
1350 return emit_rr(compiler, ins, dst, src1, src1w, src2, src2w);
1352 return emit_rrf(compiler, ins_k, dst, src1, src1w, src2, src2w);
1367ins12 = forms->
op;
1368ins20 = forms->
op_y;
1372ins20 = forms->
op_g;
1375 if(ins12 && ins20) {
1376 if((src2 & OFFS_REG_MASK) ||
is_u12(src2w) || !
is_s20(src2w))
1377 return emit_rx(compiler, ins12, dst, src1, src1w, src2, src2w,
RX_A);
1379 return emit_rx(compiler, ins20, dst, src1, src1w, src2, src2w,
RXY_A);
1382 return emit_rx(compiler, ins12, dst, src1, src1w, src2, src2w,
RX_A);
1384 return emit_rx(compiler, ins20, dst, src1, src1w, src2, src2w,
RXY_A);
1389 if(ins == 0 || (FAST_IS_REG(dst) && dst == src1))
1392 return emit_rrf(compiler, ins, dst, src1, src1w, src2, src2w);
1405SLJIT_NEXT_DEFINE_TYPES;
1416CHECK_PTR(check_sljit_generate_code(compiler));
1417reverse_buf(compiler);
1419jump = compiler->
jumps;
1420 while(jump !=
NULL) {
1427pool_size +=
sizeof(*pool);
1428 if(!(jump->
flags& JUMP_MOV_ADDR))
1431jump = jump->
next;
1434const_ = compiler->
consts;
1436pool_size +=
sizeof(*pool);
1437const_ = const_->
next;
1442pad_size = ((ins_size + 7UL) & ~7UL) - ins_size;
1446 code= (
sljit_u16*)allocate_executable_memory(ins_size + pad_size + pool_size, options, exec_allocator_data, &executable_offset);
1461jump = compiler->
jumps;
1462const_ = compiler->
consts;
1463SLJIT_NEXT_INIT_TYPES();
1464SLJIT_GET_NEXT_MIN();
1468buf_end = buf_ptr + (
buf->used_size >> 3);
1472 if(next_min_addr == half_count) {
1477 if(next_min_addr == next_label_size) {
1478 label->u.addr = (
sljit_uw)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset);
1480next_label_size = SLJIT_GET_NEXT_SIZE(
label);
1483 if(next_min_addr == next_jump_addr) {
1485 source= (
sljit_sw)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset);
1503 source= (
sljit_sw)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset);
1517arg = (ins >> 36) & 0xf;
1518 if(((ins >> 32) & 0xf) == 4) {
1532jump = jump->
next;
1533next_jump_addr = SLJIT_GET_NEXT_ADDRESS(jump);
1534}
else if(next_min_addr == next_const_addr) {
1553next_const_addr = SLJIT_GET_NEXT_ADDRESS(
const_);
1556SLJIT_GET_NEXT_MIN();
1559 if(ins & 0xffff00000000L) {
1564 if(ins & 0xffffffff0000L) {
1571}
while(buf_ptr < buf_end);
1576 if(next_label_size == half_count) {
1577 label->u.addr = (
sljit_uw)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset);
1587jump = compiler->
jumps;
1588 while(jump !=
NULL) {
1596 offset-= (
sljit_sw)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset);
1606jump = jump->
next;
1616code_ptr = (
sljit_u16*)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset);
1625 switch(feature_type) {
1627 #ifdef SLJIT_IS_FPU_AVAILABLE 1666 sljit_s32saved_arg_count = SLJIT_KEPT_SAVEDS_COUNT(options);
1670 CHECK(check_sljit_emit_enter(compiler, options, arg_types, scratches, saveds, fscratches, fsaveds, local_size));
1671set_emit_enter(compiler, options, arg_types, scratches, saveds, fscratches, fsaveds, local_size);
1677 if(saveds + scratches >= SLJIT_NUMBER_OF_REGISTERS) {
1678 if(saved_arg_count == 0) {
1683 offset+= (8 - saved_arg_count) * SSIZE_OF(
sw);
1694 if(saved_arg_count == 0) {
1700 offset+= (saveds + 1) * SSIZE_OF(
sw);
1702}
else if(saveds > saved_arg_count) {
1703 if(saveds == saved_arg_count + 1) {
1708 offset+= (saveds - saved_arg_count) * SSIZE_OF(
sw);
1713 if(saved_arg_count > 0) {
1729local_size = (local_size + SLJIT_S390X_DEFAULT_STACK_FRAME_SIZE + 0xf) & ~0xf;
1732 if(
is_s20(-local_size))
1741saved_arg_count = 0;
1743 while(arg_types > 0) {
1763 CHECK(check_sljit_set_context(compiler, options, arg_types, scratches, saveds, fscratches, fsaveds, local_size));
1764set_set_context(compiler, options, arg_types, scratches, saveds, fscratches, fsaveds, local_size);
1766compiler->
local_size= (local_size + SLJIT_S390X_DEFAULT_STACK_FRAME_SIZE + 0xf) & ~0xf;
1776 sljit_s32kept_saveds_count = SLJIT_KEPT_SAVEDS_COUNT(compiler->
options);
1778 if(
is_u12(local_size))
1780 else if(
is_s20(local_size))
1786 if(saveds + scratches >= SLJIT_NUMBER_OF_REGISTERS) {
1787 if(kept_saveds_count == 0) {
1792 offset+= (8 - kept_saveds_count) * SSIZE_OF(
sw);
1803 if(kept_saveds_count == 0) {
1805 if(last_reg ==
r14)
1808}
else if(saveds == 1 && last_reg ==
r13) {
1813 offset+= (saveds + 1) * SSIZE_OF(
sw);
1815}
else if(saveds > kept_saveds_count) {
1816 if(saveds == kept_saveds_count + 1) {
1821 offset+= (saveds - kept_saveds_count) * SSIZE_OF(
sw);
1826 if(kept_saveds_count > 0) {
1827 if(last_reg ==
r14)
1849 CHECK(check_sljit_emit_return_void(compiler));
1859 CHECK(check_sljit_emit_return_to(compiler, src, srcw));
1862ADJUST_LOCAL_OFFSET(src, srcw);
1874SLJIT_SKIP_CHECKS(compiler);
1888 CHECK(check_sljit_emit_op0(compiler, op));
1890op = GET_OPCODE(op) | (op &
SLJIT_32);
1992 if(!is_ctz && dst_r !=
tmp0)
2027ins = 0xe3000000003f
;
2029ins = (op &
SLJIT_32) ? 0xe3000000003e
: 0xe3000000002f
;
2040ins = 0xe3000000001f
;
2042ins = (op &
SLJIT_32) ? 0xe3000000001e
: 0xe3000000000f
;
2051ins = (opcode ==
SLJIT_REV_U16) ? 0xb9950000
: 0xb9270000
;
2053ins = (opcode ==
SLJIT_REV_U16) ? 0xb9850000
: 0xb9070000
;
2055ins = (opcode ==
SLJIT_REV_U32) ? 0xb9160000
: 0xb9140000
;
2060ins = (op &
SLJIT_32) ? 0xb91f0000
: 0xb90f0000
;
2067ins = (opcode ==
SLJIT_REV_U32) ? 0xb9160000
: 0xb9140000
;
2072ins = (opcode ==
SLJIT_REV_U16) ? 0x88000000
: 0x8a000000
;
2076ins = (opcode ==
SLJIT_REV_U16) ? 0xeb000000000c
: 0xeb000000000a
;
2081 #define WHEN2(cond, i1, i2) (cond) ? LEVAL(i1) : LEVAL(i2) 2094 CHECK(check_sljit_emit_op1(compiler, op, dst, dstw, src, srcw));
2095ADJUST_LOCAL_OFFSET(dst, dstw);
2096ADJUST_LOCAL_OFFSET(src, srcw);
2100 if(FAST_IS_REG(dst) && FAST_IS_REG(src)) {
2103 switch(opcode | (op &
SLJIT_32)) {
2106ins =
llcr(dst_r, src_r);
2109ins =
lbr(dst_r, src_r);
2112ins =
llhr(dst_r, src_r);
2115ins =
lhr(dst_r, src_r);
2120ins =
lr(dst_r, src_r);
2124ins =
llgcr(dst_r, src_r);
2127ins =
lgbr(dst_r, src_r);
2130ins =
llghr(dst_r, src_r);
2133ins =
lghr(dst_r, src_r);
2136ins =
llgfr(dst_r, src_r);
2139ins =
lgfr(dst_r, src_r);
2145ins =
lgr(dst_r, src_r);
2156 if(FAST_IS_REG(dst) && src ==
SLJIT_IMM) {
2182 #define LEVAL(i) EVAL(i, reg, mem) 2183 if(FAST_IS_REG(dst) && (src &
SLJIT_MEM)) {
2188 switch(opcode | (op &
SLJIT_32)) {
2311dst_r = FAST_IS_REG(dst) ?
gpr(dst) :
tmp0;
2312src_r = FAST_IS_REG(src) ?
gpr(src) :
tmp0;
2314compiler->status_flags_state = op & (VARIABLE_FLAG_MASK |
SLJIT_SET_Z);
2345 switch(GET_OPCODE(op)) {
2388 if(!sets_zero_overflow &&
is_s8(src2w) && (src1 &
SLJIT_MEM) && (dst == src1 && dstw == src1w)) {
2390ins = (
op&
SLJIT_32) ? 0xeb000000006a
: 0xeb000000007a
;
2392ins = (
op&
SLJIT_32) ? 0xeb000000006e
: 0xeb000000007e
;
2393 return emit_siy(compiler, ins, dst, dstw, src2w);
2398ins = (
op&
SLJIT_32) ? 0xec00000000d8
: 0xec00000000d9
;
2400ins = (
op&
SLJIT_32) ? 0xec00000000da
: 0xec00000000db
;
2405 if(!sets_overflow) {
2407ins = (
op&
SLJIT_32) ? 0xc20b00000000
: 0xc20a00000000
;
2417ins = (
op&
SLJIT_32) ? 0xc20900000000
: 0xc20800000000
;
2427 if(sets_zero_overflow)
2473 if(compare_signed || ((
op& VARIABLE_FLAG_MASK) == 0 &&
is_s32(src2w))) {
2475ins = (
op&
SLJIT_32) ? 0xc20d00000000
: 0xc20c00000000
;
2476 return emit_ri(compiler, ins, src1, src1, src1w, src2w,
RIL_A);
2481ins = (
op&
SLJIT_32) ? 0xc20f00000000
: 0xc20e00000000
;
2482 return emit_ri(compiler, ins, src1, src1, src1w, src2w,
RIL_A);
2490ins = compare_signed ? 0x59000000
: 0x55000000
;
2491 return emit_rx(compiler, ins, src1, src1, src1w, src2, src2w,
RX_A);
2495ins = (
op&
SLJIT_32) ? 0xe30000000059
: 0xe30000000020
;
2497ins = (
op&
SLJIT_32) ? 0xe30000000055
: 0xe30000000021
;
2498 return emit_rx(compiler, ins, src1, src1, src1w, src2, src2w,
RXY_A);
2502ins = (
op&
SLJIT_32) ? 0x1900
: 0xb9200000
;
2504ins = (
op&
SLJIT_32) ? 0x1500
: 0xb9210000
;
2505 return emit_rr(compiler, ins, src1, src1, src1w, src2, src2w);
2508 if(src1 ==
SLJIT_IMM&& src1w == 0 && (flag_type == 0 || sets_signed)) {
2509ins = (
op&
SLJIT_32) ? 0x1300
: 0xb9030000
;
2517 if(sets_signed || neg_src2w != 0 || (
op& (
SLJIT_SET_Z| VARIABLE_FLAG_MASK)) == 0) {
2518 if(!sets_zero_overflow &&
is_s8(neg_src2w) && (src1 &
SLJIT_MEM) && (dst == src1 && dstw == src1w)) {
2520ins = (
op&
SLJIT_32) ? 0xeb000000006a
: 0xeb000000007a
;
2522ins = (
op&
SLJIT_32) ? 0xeb000000006e
: 0xeb000000007e
;
2523 return emit_siy(compiler, ins, dst, dstw, neg_src2w);
2526 if(
is_s16(neg_src2w)) {
2528ins = (
op&
SLJIT_32) ? 0xec00000000d8
: 0xec00000000d9
;
2530ins = (
op&
SLJIT_32) ? 0xec00000000da
: 0xec00000000db
;
2538ins = (
op&
SLJIT_32) ? 0xc20500000000
: 0xc20400000000
;
2542 if(
is_u32(neg_src2w)) {
2548ins = (
op&
SLJIT_32) ? 0xc20900000000
: 0xc20800000000
;
2607 if(HAS_FLAGS(
op)) {
2624ins = (
op&
SLJIT_32) ? 0xa70c0000
: 0xa70d0000
;
2625 return emit_ri(compiler, ins, dst, src1, src1w, src2w,
RI_A);
2629ins = (
op&
SLJIT_32) ? 0xc20100000000
: 0xc20000000000
;
2630 return emit_ri(compiler, ins, dst, src1, src1w, src2w,
RIL_A);
2647dst_r =
gpr(dst & REG_MASK);
2658 return push_inst(compiler, 0xc00b00000000
|
R36A(dst_r) | (imm & 0xffffffff));
2663 return push_inst(compiler, 0xc00d00000000
|
R36A(dst_r) | (imm & 0xffffffff));
2667 if((imm & 0x00000000ffffffffull) == 0)
2668 return push_inst(compiler, 0xc00c00000000
|
R36A(dst_r) | (imm >> 32));
2669 if((imm & 0xffffffff00000000ull) == 0)
2670 return push_inst(compiler, 0xc00d00000000
|
R36A(dst_r) | (imm & 0xffffffff));
2673 if((imm & 0xffff000000000000ull) != 0)
2675 if((imm & 0x0000ffff00000000ull) != 0)
2677 if((imm & 0x00000000ffff0000ull) != 0)
2679 if((imm & 0x000000000000ffffull) != 0 || imm == 0)
2680 return push_inst(compiler, 0xa50b0000
|
R20A(dst_r) | (imm & 0xffff));
2684 if((imm & 0xffffffff00000000ull) != 0)
2686 if((imm & 0x00000000ffffffffull) != 0 || imm == 0)
2687 return push_inst(compiler, 0xc00700000000
|
R36A(dst_r) | (imm & 0xffffffff));
2734imm &= 0xffffffffull;
2736 if((imm & 0x000000000000ffffull) != 0 || imm == 0)
2738 if((imm & 0x00000000ffff0000ull) != 0)
2740 if((imm & 0x0000ffff00000000ull) != 0)
2742 if((imm & 0xffff000000000000ull) != 0)
2748 if(FAST_IS_REG(src1))
2749src_r =
gpr(src1 & REG_MASK);
2753 if((imm & 0x000000000000ffffull) != 0 || imm == 0)
2754 return push_inst(compiler, 0xa7010000
|
R20A(src_r) | imm);
2755 if((imm & 0x00000000ffff0000ull) != 0)
2756 return push_inst(compiler, 0xa7000000
|
R20A(src_r) | (imm >> 16));
2757 if((imm & 0x0000ffff00000000ull) != 0)
2758 return push_inst(compiler, 0xa7030000
|
R20A(src_r) | (imm >> 32));
2759 return push_inst(compiler, 0xa7020000
|
R20A(src_r) | (imm >> 48));
2788 if(FAST_IS_REG(src1))
2794 if(FAST_IS_REG(src2))
2795base_r =
gpr(src2);
2802 if(base_r !=
tmp1) {
2822ins = (
op&
SLJIT_32) ? 0xeb00000000df
: 0xeb000000000d
;
2824ins = (
op&
SLJIT_32) ? 0xeb00000000de
: 0xeb000000000c
;
2826ins = (
op&
SLJIT_32) ? 0xeb00000000dc
: 0xeb000000000a
;
2848 if(FAST_IS_REG(src1))
2854 if(FAST_IS_REG(src2))
2855base_r =
gpr(src2);
2864ins = (
op&
SLJIT_32) ? 0x1300
: 0xb9030000
;
2874ins = (
op&
SLJIT_32) ? 0xeb000000001d
: 0xeb000000001c
;
2904 CHECK(check_sljit_emit_op2(compiler,
op, 0, dst, dstw, src1, src1w, src2, src2w));
2905ADJUST_LOCAL_OFFSET(dst, dstw);
2906ADJUST_LOCAL_OFFSET(src1, src1w);
2907ADJUST_LOCAL_OFFSET(src2, src2w);
2910compiler->status_flags_state =
op& (VARIABLE_FLAG_MASK |
SLJIT_SET_Z);
2922 switch(GET_OPCODE(
op)) {
2925 return sljit_emit_add(compiler,
op, dst, dstw, src1, src1w, src2, src2w);
2934 return sljit_emit_sub(compiler,
op, dst, dstw, src1, src1w, src2, src2w);
2975 CHECK(check_sljit_emit_op2(compiler,
op, 1, 0, 0, src1, src1w, src2, src2w));
2977SLJIT_SKIP_CHECKS(compiler);
2978 return sljit_emit_op2(compiler,
op, dst_reg, 0, src1, src1w, src2, src2w);
2987 CHECK(check_sljit_emit_op2r(compiler,
op, dst_reg, src1, src1w, src2, src2w));
2989 switch(GET_OPCODE(
op)) {
2991SLJIT_SKIP_CHECKS(compiler);
3014 CHECK(check_sljit_emit_shift_into(compiler,
op, dst_reg, src1_reg, src2_reg, src3, src3w));
3018 if(src1_reg == src2_reg) {
3019SLJIT_SKIP_CHECKS(compiler);
3023ADJUST_LOCAL_OFFSET(src3, src3w);
3026src3w &= bit_length - 1;
3032 if(dst_r == src1_r) {
3033ins = is_right ? 0x88000000
: 0x89000000
;
3036ins = is_right ? 0xeb00000000de
: 0xeb00000000df
;
3040ins = is_right ? 0xeb000000000c
: 0xeb000000000d
;
3044ins = 0xec0000000055
;
3047src3w = bit_length - src3w;
3056src3_r =
gpr(src3);
3058 if(dst_r == src3_r) {
3067 if(src3_r !=
tmp1) {
3074 if(dst_r == src1_r) {
3075ins = is_right ? 0x88000000
: 0x89000000
;
3078ins = is_right ? 0xeb00000000de
: 0xeb00000000df
;
3082 if(src3_r !=
tmp1) {
3088ins = is_right ? 0xeb00000000df
: 0xeb00000000de
;
3094ins = is_right ? 0xeb000000000c
: 0xeb000000000d
;
3097ins = is_right ? 0xeb000000000d
: 0xeb000000000c
;
3100 if(src3_r !=
tmp1)
3106 if(src3_r !=
tmp1)
3124 CHECK(check_sljit_emit_op_src(compiler, op, src, srcw));
3125ADJUST_LOCAL_OFFSET(src, srcw);
3129src_r = FAST_IS_REG(src) ?
gpr(src) :
tmp1;
3156 CHECK(check_sljit_emit_op_dst(compiler, op, dst, dstw));
3157ADJUST_LOCAL_OFFSET(dst, dstw);
3161 if(FAST_IS_REG(dst))
3165dst_r = FAST_IS_REG(dst) ?
gpr(dst) :
tmp0;
3173 return store_word(compiler, dst_r, dst, dstw, 0);
3180CHECK_REG_INDEX(check_sljit_get_register_index(
type, reg));
3197 CHECK(check_sljit_emit_op_custom(compiler, instruction,
size));
3207 #define FLOAT_LOAD 0 3208 #define FLOAT_STORE 1 3219 if((mem & OFFS_REG_MASK) ||
is_u12(memw) || !
is_s20(memw)) {
3223ins = (op &
SLJIT_32) ? 0x70000000
: 0x60000000
;
3225ins = (op &
SLJIT_32) ? 0x78000000
: 0x68000000
;
3233ins = (op &
SLJIT_32) ? 0xed0000000066
: 0xed0000000067
;
3235ins = (op &
SLJIT_32) ? 0xed0000000064
: 0xed0000000065
;
3267ins = (op &
SLJIT_32) ? 0xb3a85000
: 0xb3a95000
;
3269ins = (op &
SLJIT_32) ? 0xb3985000
: 0xb3995000
;
3312ins = (op &
SLJIT_32) ? 0xb3a40000
: 0xb3a50000
;
3314ins = (op &
SLJIT_32) ? 0xb3940000
: 0xb3950000
;
3329ins = (op &
SLJIT_32) ? 0xb3a00000
: 0xb3a10000
;
3331ins = (op &
SLJIT_32) ? 0xb3900000
: 0xb3910000
;
3348ins_r = 0xb3090000
;
3349ins = 0xed0000000009
;
3351ins_r = 0xb3190000
;
3352ins = 0xed0000000019
;
3355 return emit_float(compiler, ins_r, ins, src1, src2, src2w);
3367SELECT_FOP1_OPERATION_WITH_CHECKS(compiler, op, dst, dstw, src, srcw);
3369dst_r = FAST_IS_REG(dst) ? dst :
TMP_FREG1;
3372 FAIL_IF(
emit_float(compiler, 0xb3040000
, 0xed0000000004
, dst_r, src, srcw));
3379 switch(GET_OPCODE(op)) {
3381 if(FAST_IS_REG(dst)) {
3385ins = (op &
SLJIT_32) ? 0x3800
: 0x2800
;
3394ins = (op &
SLJIT_32) ? 0xb3030000
: 0xb3130000
;
3398ins = (op &
SLJIT_32) ? 0xb3000000
: 0xb3100000
;
3411 #define FLOAT_MOV(op, dst_r, src_r) \ 3412 (((op & SLJIT_32) ? 0x3800 : 0x2800 ) | F4(dst_r) | F0(src_r)) 3423 CHECK(check_sljit_emit_fop2(compiler, op, dst, dstw, src1, src1w, src2, src2w));
3424ADJUST_LOCAL_OFFSET(dst, dstw);
3425ADJUST_LOCAL_OFFSET(src1, src1w);
3426ADJUST_LOCAL_OFFSET(src2, src2w);
3429 if(FAST_IS_REG(dst)) {
3454 switch(GET_OPCODE(op)) {
3456ins_r = (op &
SLJIT_32) ? 0xb30a0000
: 0xb31a0000
;
3457ins = (op &
SLJIT_32) ? 0xed000000000a
: 0xed000000001a
;
3460ins_r = (op &
SLJIT_32) ? 0xb30b0000
: 0xb31b0000
;
3461ins = (op &
SLJIT_32) ? 0xed000000000b
: 0xed000000001b
;
3464ins_r = (op &
SLJIT_32) ? 0xb3170000
: 0xb31c0000
;
3465ins = (op &
SLJIT_32) ? 0xed0000000017
: 0xed000000001c
;
3469ins_r = (op &
SLJIT_32) ? 0xb30d0000
: 0xb31d0000
;
3470ins = (op &
SLJIT_32) ? 0xed000000000d
: 0xed000000001d
;
3490 CHECK(check_sljit_emit_fop2r(compiler, op, dst_freg, src1, src1w, src2, src2w));
3491ADJUST_LOCAL_OFFSET(src1, src1w);
3492ADJUST_LOCAL_OFFSET(src2, src2w);
3500reg = (dst_freg == src2) ?
TMP_FREG1: dst_freg;
3505 return push_inst(compiler, 0xb3720000
|
F12(src2) |
F4(dst_freg) |
F0(src1));
3517 CHECK(check_sljit_emit_fset32(compiler, freg,
value));
3534 CHECK(check_sljit_emit_fset64(compiler, freg,
value));
3548 CHECK(check_sljit_emit_fcopy(compiler, op, freg, reg));
3558 return push_inst(compiler, 0xb3c10000
|
F4(freg) |
R0A(gen_r));
3566 return push_inst(compiler, 0xeb000000000c
|
R36A(gen_r) |
R32A(gen_r) | (32 << 16));
3578CHECK_PTR(check_sljit_emit_label(compiler));
3585set_label(
label, compiler);
3595CHECK_PTR(check_sljit_emit_jump(compiler,
type));
3618CHECK_PTR(check_sljit_emit_call(compiler,
type, arg_types));
3625SLJIT_SKIP_CHECKS(compiler);
3634 CHECK(check_sljit_emit_ijump(compiler,
type, src, srcw));
3641ADJUST_LOCAL_OFFSET(src, srcw);
3659 CHECK(check_sljit_emit_icall(compiler,
type, arg_types, src, srcw));
3664ADJUST_LOCAL_OFFSET(src, srcw);
3681SLJIT_SKIP_CHECKS(compiler);
3694 CHECK(check_sljit_emit_op_flags(compiler, op, dst, dstw,
type));
3696 switch(GET_OPCODE(op)) {
3719 #define LEVAL(i) i(loc_r, 1, mask) 3732 switch(GET_OPCODE(op)) {
3733 #define LEVAL(i) i(dst_r, loc_r) 3767 CHECK(check_sljit_emit_select(compiler,
type, dst_reg, src1, src1w, src2_reg));
3769ADJUST_LOCAL_OFFSET(src1, src1w);
3771 if(dst_reg != src2_reg) {
3772 if(src1 == dst_reg) {
3777 if(ADDRESSING_DEPENDS_ON(src1, dst_reg)) {
3790 if(src1 & OFFS_REG_MASK) {
3791src_r =
gpr(OFFS_REG(src1));
3801}
else if(!
is_s20(src1w)) {
3804 if(src1 & REG_MASK)
3810src_r =
gpr(src1 & REG_MASK);
3812ins = (
type&
SLJIT_32) ? 0xeb00000000f2
: 0xeb00000000e2
;
3821ins = (
type&
SLJIT_32) ? 0xec0000000042
: 0xec0000000046
;
3844 CHECK(check_sljit_emit_fselect(compiler,
type, dst_freg, src1, src1w, src2_freg));
3846ADJUST_LOCAL_OFFSET(src1, src1w);
3848 if(dst_freg != src2_freg) {
3849 if(dst_freg == src1) {
3859SLJIT_SKIP_CHECKS(compiler);
3869SLJIT_SKIP_CHECKS(compiler);
3881 sljit_insins, reg1, reg2, base, offs = 0;
3884 CHECK(check_sljit_emit_mem(compiler,
type, reg, mem, memw));
3886 if(!(reg & REG_PAIR_MASK))
3887 returnsljit_emit_mem_unaligned(compiler,
type, reg, mem, memw);
3889ADJUST_LOCAL_OFFSET(mem, memw);
3891base =
gpr(mem & REG_MASK);
3892reg1 =
gpr(REG_PAIR_FIRST(reg));
3893reg2 =
gpr(REG_PAIR_SECOND(reg));
3895 if(mem & OFFS_REG_MASK) {
3897offs =
gpr(OFFS_REG(mem));
3902}
else if(!(
type&
SLJIT_MEM_STORE) && (base == reg1 || base == reg2) && (offs == reg1 || offs == reg2)) {
3909}
else if(memw < -0x80000 || memw > 0x7ffff - ((reg2 == reg1 + 1) ? 0 : SSIZE_OF(
sw))) {
3920 if(offs == 0 && reg2 == (reg1 + 1)) {
3947 CHECK(check_sljit_emit_simd_mov(compiler,
type, freg, srcdst, srcdstw));
3949ADJUST_LOCAL_OFFSET(srcdst, srcdstw);
3962ins =
F36(srcdst) |
F32(freg);
3964ins =
F36(freg) |
F32(srcdst);
3966 return push_inst(compiler, 0xe70000000056
| ins);
3974 else if(alignment == 3)
3991 CHECK(check_sljit_emit_simd_replicate(compiler,
type, freg, src, srcw));
3993ADJUST_LOCAL_OFFSET(src, srcw);
4006 return push_inst(compiler, 0xe70000000005
|
F36(freg)
4012 return push_inst(compiler, 0xe70000000044
|
F36(freg));
4020 switch(elem_size) {
4044 if(sign_ext != 0x10000) {
4045 if(sign_ext == 0 || sign_ext == -1)
4046 return push_inst(compiler, 0xe70000000044
|
F36(freg)
4047| (sign_ext == 0 ? 0 : ((
sljit_ins)0xffff << 16)));
4049 return push_inst(compiler, 0xe70000000045
|
F36(freg)
4073 CHECK(check_sljit_emit_simd_lane_mov(compiler,
type, freg, lane_index, srcdst, srcdstw));
4075ADJUST_LOCAL_OFFSET(srcdst, srcdstw);
4092 if((srcdst &
SLJIT_MEM) && lane_index == ((1 << (3 - elem_size)) - 1))
4105 switch(elem_size) {
4107ins |= 0xe70000000000
;
4110ins |= 0xe70000000001
;
4113ins |= 0xe70000000003
;
4116ins |= 0xe70000000002
;
4131 if(elem_size == 3) {
4132 if(lane_index == 0)
4133ins =
F32(srcdst) |
F28(freg) | (1 << 12);
4135ins =
F32(freg) |
F28(srcdst);
4137 return push_inst(compiler, 0xe70000000084
|
F36(freg) | ins);
4145 switch(elem_size) {
4147ins = 0xe70000000040
;
4151ins = 0xe70000000041
;
4157ins = 0xe70000000043
;
4159srcdstw &= 0xffffffff;
4164ins = 0xe70000000042
;
4180 return push_inst(compiler, 0xe70000000022
|
F36(freg) |
R32A(reg) | ins);
4187 switch(elem_size) {
4210 CHECK(check_sljit_emit_simd_lane_replicate(compiler,
type, freg, src, src_lane_index));
4236 CHECK(check_sljit_emit_simd_extend(compiler,
type, freg, src, srcw));
4238ADJUST_LOCAL_OFFSET(src, srcw);
4253 switch(elem2_size - elem_size) {
4255ins |= 0xe70000000002
;
4258ins |= 0xe70000000003
;
4261ins |= 0xe70000000001
;
4272 return push_inst(compiler, 0xe700000000c4
|
F36(freg) |
F32(freg) | (2 << 12));
4280}
while(++elem_size < elem2_size);
4294 CHECK(check_sljit_emit_simd_sign(compiler,
type, freg, dst, dstw));
4296ADJUST_LOCAL_OFFSET(dst, dstw);
4307 switch(elem_size) {
4329dst_r = FAST_IS_REG(dst) ?
gpr(dst) :
tmp0;
4331| (elem_size == 0 ? ((3 << 16) | (1 << 12)) : (7 << 16))));
4347 CHECK(check_sljit_emit_simd_op2(compiler,
type, dst_freg, src1_freg, src2_freg));
4358 switch(SLJIT_SIMD_GET_OPCODE(
type)) {
4360ins = 0xe70000000068
;
4363ins = 0xe7000000006a
;
4366ins = 0xe7000000006d
;
4373 return push_inst(compiler, ins |
F36(dst_freg) |
F32(src1_freg) |
F28(src2_freg));
4381 CHECK(check_sljit_emit_atomic_load(compiler, op, dst_reg, mem_reg));
4383SLJIT_SKIP_CHECKS(compiler);
4397 CHECK(check_sljit_emit_atomic_store(compiler, op, src_reg, mem_reg, temp_reg));
4399 switch(GET_OPCODE(op)) {
4452CHECK_PTR(check_sljit_emit_const(compiler, dst, dstw,
init_value));
4460dst_r = FAST_IS_REG(dst) ?
gpr(dst & REG_MASK) :
tmp0;
4497CHECK_PTR(check_sljit_emit_mov_addr(compiler, dst, dstw));
4498ADJUST_LOCAL_OFFSET(dst, dstw);
4502set_mov_addr(jump, compiler, 0);
4504dst_r = FAST_IS_REG(dst) ?
gpr(dst & REG_MASK) :
tmp0;
ncbi::TMaskedQueryRegions mask
#define CHECK_ERROR(name, s)
static const char label[]
if(yy_accept[yy_current_state])
const struct ncbi::grid::netcache::search::fields::SIZE size
const GenericPointer< typename T::ValueType > T2 value
const CharType(& source)[N]
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
#define SLJIT_UNREACHABLE()
unsigned short int sljit_u16
signed short int sljit_s16
#define SLJIT_UNLIKELY(x)
#define SLJIT_API_FUNC_ATTRIBUTE
#define SLJIT_UNUSED_ARG(arg)
#define SLJIT_CACHE_FLUSH(from, to)
#define SLJIT_UPDATE_WX_FLAGS(from, to, enable_exec)
#define PTR_FAIL_IF(expr)
#define PTR_FAIL_WITH_EXEC_IF(ptr)
#define CHECK_ERROR_PTR()
#define SLJIT_UNORDERED_OR_LESS_EQUAL
#define SLJIT_SKIP_FRAMES_BEFORE_FAST_RETURN
#define SLJIT_ARG_TYPE_SCRATCH_REG
#define SLJIT_SIMD_OP2_AND
#define SLJIT_ORDERED_LESS_EQUAL
#define SLJIT_CONV_F64_FROM_S32
#define SLJIT_CONV_S32_FROM_F64
#define SLJIT_FAST_RETURN
#define SLJIT_ATOMIC_NOT_STORED
#define SLJIT_SET_OVERFLOW
#define SLJIT_FIRST_SAVED_REG
#define SLJIT_CONV_F64_FROM_U32
#define SLJIT_UNORDERED_OR_GREATER
#define SLJIT_ORDERED_GREATER_EQUAL
#define SLJIT_PREFETCH_L3
#define SLJIT_SIG_GREATER_EQUAL
#define SLJIT_CURRENT_FLAGS_COMPARE
#define SLJIT_UNORDERED_OR_NOT_EQUAL
#define SLJIT_ARG_TYPE_F64
#define SLJIT_SIMD_EXTEND_SIGNED
#define SLJIT_PREFETCH_L1
#define SLJIT_SIMD_OP2_XOR
#define SLJIT_ORDERED_EQUAL
#define SLJIT_ERR_UNSUPPORTED
#define SLJIT_UNORDERED_OR_LESS
void sljit_set_label(struct sljit_jump *jump, struct sljit_label *label)
#define SLJIT_ORDERED_GREATER
#define SLJIT_SIG_LESS_EQUAL
#define SLJIT_UNORDERED_OR_EQUAL
#define SLJIT_CALL_RETURN
#define SLJIT_REWRITABLE_JUMP
#define SLJIT_NOT_OVERFLOW
#define SLJIT_F_NOT_EQUAL
#define SLJIT_F_GREATER_EQUAL
#define SLJIT_CONV_SW_FROM_F64
#define SLJIT_CURRENT_FLAGS_ADD
#define SLJIT_HAS_PREFETCH
#define SLJIT_ENTER_REG_ARG
#define SLJIT_SIG_GREATER
#define SLJIT_SIMD_LANE_ZERO
#define SLJIT_FLOAT_REGISTER
#define SLJIT_ATOMIC_STORED
#define SLJIT_GET_RETURN_ADDRESS
#define SLJIT_FIRST_SAVED_FLOAT_REG
#define SLJIT_SIMD_OP2_OR
#define SLJIT_CONV_F64_FROM_SW
#define SLJIT_SHIFT_INTO_NON_ZERO
#define SLJIT_SIMD_LANE_SIGNED
#define SLJIT_GREATER_EQUAL
#define SLJIT_GP_REGISTER
#define SLJIT_SKIP_FRAMES_BEFORE_RETURN
#define SLJIT_ERR_COMPILED
#define SLJIT_HAS_COPY_F64
#define SLJIT_F_LESS_EQUAL
#define SLJIT_CONV_F32_FROM_F64
#define SLJIT_ORDERED_LESS
#define SLJIT_HAS_COPY_F32
#define SLJIT_CONV_F64_FROM_F32
#define SLJIT_COPY_TO_F64
#define SLJIT_PREFETCH_L2
#define SLJIT_CURRENT_FLAGS_SUB
#define SLJIT_PREFETCH_ONCE
#define SLJIT_ORDERED_NOT_EQUAL
#define SLJIT_CONV_F64_FROM_UW
#define SLJIT_UNORDERED_OR_GREATER_EQUAL
#define SLJIT_IS_FPU_AVAILABLE
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)
static SLJIT_INLINE sljit_ins llill(sljit_gpr reg, sljit_u16 imm)
static SLJIT_INLINE sljit_ins llc(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins lgr(sljit_gpr dst, sljit_gpr src)
static sljit_s32 make_addr_bx(struct sljit_compiler *compiler, struct addr *addr, sljit_s32 mem, sljit_sw off, sljit_gpr tmp)
static SLJIT_INLINE int have_ldisp()
static SLJIT_INLINE sljit_ins ms(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static const sljit_gpr r1
static const sljit_gpr r5
static sljit_s32 sljit_emit_rev(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src, sljit_sw srcw)
static const sljit_ins load_forms[3]
static SLJIT_INLINE sljit_ins brc(sljit_uw mask, sljit_sw target)
#define LOAD_STORE_ON_CONDITION_2_FACILITY
static SLJIT_INLINE sljit_ins spm(sljit_gpr dst)
static sljit_s32 emit_rr(struct sljit_compiler *compiler, sljit_ins ins, sljit_s32 dst, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump * sljit_emit_jump(struct sljit_compiler *compiler, sljit_s32 type)
#define STORE_FACILITY_LIST_EXTENDED_FACILITY
static const sljit_ins store_forms[3]
static SLJIT_INLINE sljit_ins lghr(sljit_gpr dst, sljit_gpr src)
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)
#define SLJIT_S390X_RXA(name, pattern)
static SLJIT_INLINE sljit_ins llihf(sljit_gpr reg, sljit_u32 imm)
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)
static sljit_s32 sljit_emit_rotate(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
static SLJIT_INLINE sljit_ins br(sljit_gpr target)
static const struct ins_forms logical_sub_forms
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)
static SLJIT_INLINE unsigned long get_hwcap()
#define SLJIT_S390X_RSYA(name, pattern, cond)
static SLJIT_INLINE sljit_ins dsgr(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE int have_facility_static(facility_bit x)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_return_to(struct sljit_compiler *compiler, sljit_s32 src, sljit_sw srcw)
static sljit_s32 make_addr_bxy(struct sljit_compiler *compiler, struct addr *addr, sljit_s32 mem, sljit_sw off, sljit_gpr tmp)
static SLJIT_INLINE sljit_ins sllg(sljit_gpr dst, sljit_gpr src, sljit_s32 d, sljit_gpr b)
static SLJIT_INLINE sljit_ins llihh(sljit_gpr reg, sljit_u16 imm)
static SLJIT_INLINE sljit_ins llcr(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE sljit_ins sty(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static sljit_s32 sljit_emit_sub(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)
static SLJIT_INLINE sljit_ins lhr(sljit_gpr dst, sljit_gpr src)
#define EXTENDED_IMMEDIATE_FACILITY
static SLJIT_INLINE sljit_ins brasl(sljit_gpr reg, sljit_sw ri)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_has_cpu_feature(sljit_s32 feature_type)
static SLJIT_INLINE sljit_ins sth(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
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)
static SLJIT_INLINE sljit_ins oilh(sljit_gpr reg, sljit_u16 imm)
static int have_facility_dynamic(facility_bit x)
static SLJIT_INLINE sljit_ins larl(sljit_gpr reg, sljit_sw ri)
#define SLJIT_S390X_INSTRUCTION(op,...)
static const sljit_gpr r9
static SLJIT_INLINE sljit_ins nihf(sljit_gpr reg, sljit_u32 imm)
#define MISCELLANEOUS_INSTRUCTION_EXTENSIONS_1_FACILITY
static const sljit_gpr r10
#define SLJIT_S390X_RRFC(name, pattern)
static SLJIT_INLINE sljit_ins disp_s20(sljit_s32 d)
static SLJIT_INLINE sljit_u8 get_cc(struct sljit_compiler *compiler, sljit_s32 type)
static SLJIT_INLINE sljit_ins lochi(sljit_gpr reg, sljit_sw imm, sljit_uw mask)
static sljit_s32 emit_siy(struct sljit_compiler *compiler, sljit_ins ins, sljit_s32 dst, sljit_sw dstw, sljit_sw srcw)
SLJIT_API_FUNC_ATTRIBUTE struct sljit_label * sljit_emit_label(struct sljit_compiler *compiler)
static sljit_s32 emit_stack_frame_release(struct sljit_compiler *compiler, sljit_gpr last_reg)
#define DISTINCT_OPERAND_FACILITY
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_cmp_info(sljit_s32 type)
static SLJIT_INLINE int have_misc2()
static SLJIT_INLINE int have_eimm()
static SLJIT_INLINE sljit_ins ngr(sljit_gpr dst, sljit_gpr src)
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)
static SLJIT_INLINE sljit_ins slfi(sljit_gpr reg, sljit_u32 imm)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_get_register_index(sljit_s32 type, sljit_s32 reg)
static sljit_s32 sljit_emit_clz_ctz(struct sljit_compiler *compiler, sljit_s32 op, sljit_gpr dst_r, sljit_gpr src_r)
#define MISCELLANEOUS_INSTRUCTION_EXTENSIONS_2_FACILITY
static SLJIT_INLINE sljit_ins la(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
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)
static SLJIT_INLINE sljit_ins sgr(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE sljit_ins lh(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins dlgr(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE int is_commutative(sljit_s32 op)
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant, sljit_sw executable_offset)
static SLJIT_INLINE sljit_ins brcl(sljit_uw mask, sljit_sw target)
static SLJIT_INLINE sljit_ins flogr(sljit_gpr dst, sljit_gpr src)
static sljit_s32 emit_rr1(struct sljit_compiler *compiler, sljit_ins ins, sljit_s32 dst, sljit_s32 src1, sljit_sw src1w)
static SLJIT_INLINE int have_genext()
static SLJIT_INLINE sljit_ins srag(sljit_gpr dst, sljit_gpr src, sljit_s32 d, sljit_gpr b)
static SLJIT_INLINE sljit_ins lhi(sljit_gpr reg, sljit_s16 imm)
static const struct ins_forms subc_forms
static SLJIT_INLINE sljit_ins xgr(sljit_gpr dst, sljit_gpr src)
#define SLJIT_ADD_SUB_NO_COMPARE(status_flags_state)
static SLJIT_INLINE sljit_s32 sljit_emit_fop1_conv_f64_from_sw(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src, sljit_sw srcw)
static SLJIT_INLINE sljit_ins iihf(sljit_gpr reg, sljit_u32 imm)
static SLJIT_INLINE sljit_ins risbhg(sljit_gpr dst, sljit_gpr src, sljit_u8 start, sljit_u8 end, sljit_u8 rot)
static SLJIT_INLINE sljit_ins st(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins stcy(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins mlgr(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE sljit_ins sthy(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins lg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static const struct ins_forms multiply_overflow_forms
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 struct sljit_jump * sljit_emit_mov_addr(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw)
static const sljit_gpr r0
static SLJIT_INLINE sljit_ins iilf(sljit_gpr reg, sljit_u32 imm)
static SLJIT_INLINE sljit_ins llgc(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins msy(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fset32(struct sljit_compiler *compiler, sljit_s32 freg, sljit_f32 value)
static sljit_s32 push_inst(struct sljit_compiler *compiler, sljit_ins ins)
static SLJIT_INLINE sljit_ins lghi(sljit_gpr reg, sljit_s16 imm)
static SLJIT_INLINE sljit_gpr gpr(sljit_s32 r)
#define LOAD_STORE_ON_CONDITION_1_FACILITY
static SLJIT_INLINE sljit_ins stg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
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)
#define GENERAL_INSTRUCTION_EXTENSION_FACILITY
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_return_void(struct sljit_compiler *compiler)
static SLJIT_INLINE sljit_ins bcr(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE sljit_ins lgfi(sljit_gpr reg, sljit_s32 imm)
#define SLJIT_S390X_RILA(name, pattern, imm_type)
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)
static SLJIT_INLINE sljit_ins lgb(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins basr(sljit_gpr dst, sljit_gpr src)
static sljit_s32 emit_rie_d(struct sljit_compiler *compiler, sljit_ins ins, sljit_s32 dst, sljit_s32 src1, sljit_sw src1w, sljit_sw src2w)
static const struct ins_forms bitwise_and_forms
static SLJIT_INLINE sljit_ins llghr(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE sljit_ins stc(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op0(struct sljit_compiler *compiler, sljit_s32 op)
static SLJIT_INLINE sljit_ins nr(sljit_gpr dst, sljit_gpr src)
#define SLJIT_S390X_RIA(name, pattern, imm_type)
static SLJIT_INLINE sljit_s32 sljit_emit_fop1_conv_f64_from_uw(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src, sljit_sw srcw)
#define HAVE_FACILITY(name, bit)
static sljit_s32 push_load_imm_inst(struct sljit_compiler *compiler, sljit_gpr target, sljit_sw v)
static SLJIT_INLINE sljit_ins ipm(sljit_gpr dst)
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)
static const struct ins_forms addc_forms
static const sljit_u8 reg_map[SLJIT_NUMBER_OF_REGISTERS+5]
static SLJIT_INLINE sljit_ins msgfr(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE sljit_ins mhi(sljit_gpr reg, sljit_s16 imm)
static sljit_s32 emit_ri(struct sljit_compiler *compiler, sljit_ins ins, sljit_s32 dst, sljit_s32 src1, sljit_sw src1w, sljit_sw src2w, emit_ril_type type)
static SLJIT_INLINE sljit_ins lhy(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins ogr(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE sljit_ins dlr(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE sljit_ins l(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
#define FLOAT_MOV(op, dst_r, src_r)
static SLJIT_INLINE sljit_ins llgh(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins lcgr(sljit_gpr dst, sljit_gpr src)
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)
#define SLJIT_S390X_RILB(name, pattern, cond)
static SLJIT_INLINE sljit_ins llgfr(sljit_gpr dst, sljit_gpr src)
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)
static const sljit_gpr r4
static SLJIT_INLINE sljit_ins xilf(sljit_gpr reg, sljit_u32 imm)
static SLJIT_INLINE sljit_ins llilh(sljit_gpr reg, sljit_u16 imm)
static SLJIT_INLINE sljit_s32 store_word(struct sljit_compiler *compiler, sljit_gpr src_r, sljit_s32 dst, sljit_sw dstw, sljit_s32 is_32bit)
static sljit_s32 emit_move(struct sljit_compiler *compiler, sljit_gpr dst_r, sljit_s32 src, sljit_sw srcw)
static const sljit_u8 freg_map[SLJIT_NUMBER_OF_FLOAT_REGISTERS+2]
#define SLJIT_S390X_RIEG(name, pattern)
static SLJIT_INLINE sljit_ins mghi(sljit_gpr reg, sljit_s16 imm)
static SLJIT_INLINE sljit_ins lbr(sljit_gpr dst, sljit_gpr src)
static const sljit_gpr link_r
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)
static SLJIT_INLINE int have_lscond1()
static const sljit_gpr r7
static sljit_s32 emit_commutative(struct sljit_compiler *compiler, const struct ins_forms *forms, sljit_s32 dst, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
#define EVAL(op, r, addr)
static const struct ins_forms bitwise_xor_forms
static sljit_s32 load_store_op(struct sljit_compiler *compiler, sljit_gpr reg, sljit_s32 mem, sljit_sw memw, sljit_s32 is_32bit, const sljit_ins *forms)
static const struct ins_forms logical_add_forms
static SLJIT_INLINE sljit_ins rosbg(sljit_gpr dst, sljit_gpr src, sljit_u8 start, sljit_u8 end, sljit_u8 rot)
static const sljit_gpr r8
static const struct ins_forms sub_forms
static SLJIT_INLINE sljit_ins llgf(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
#define SLJIT_S390X_RRE(name, pattern)
static const sljit_gpr r6
static SLJIT_INLINE sljit_ins locghi(sljit_gpr reg, sljit_sw imm, sljit_uw mask)
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)
static SLJIT_INLINE sljit_ins lb(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins llh(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static sljit_s32 sljit_emit_fop1_conv_f64_from_w(struct sljit_compiler *compiler, sljit_ins ins, sljit_s32 dst, sljit_sw dstw, sljit_s32 src, sljit_sw srcw)
static const sljit_gpr r3
static SLJIT_INLINE sljit_ins aih(sljit_gpr reg, sljit_s32 imm)
static sljit_s32 sljit_emit_shift(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
static SLJIT_INLINE sljit_ins lcr(sljit_gpr dst, sljit_gpr src)
static const struct ins_forms add_forms
static const struct ins_forms bitwise_or_forms
static SLJIT_INLINE int have_lscond2()
#define WHEN2(cond, i1, i2)
static sljit_s32 emit_rrf(struct sljit_compiler *compiler, sljit_ins ins, sljit_s32 dst, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
static sljit_s32 emit_non_commutative(struct sljit_compiler *compiler, const struct ins_forms *forms, sljit_s32 dst, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fset64(struct sljit_compiler *compiler, sljit_s32 freg, sljit_f64 value)
static SLJIT_INLINE sljit_ins lgrl(sljit_gpr reg, sljit_sw ri)
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset)
static SLJIT_INLINE sljit_ins llgcr(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE sljit_ins locgr(sljit_gpr dst, sljit_gpr src, sljit_uw mask)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_dst(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw)
static SLJIT_INLINE sljit_ins locr(sljit_gpr dst, sljit_gpr src, sljit_uw mask)
static SLJIT_INLINE sljit_ins llhr(sljit_gpr dst, sljit_gpr src)
static sljit_s32 emit_rx(struct sljit_compiler *compiler, sljit_ins ins, sljit_s32 dst, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w, emit_rx_type type)
#define SLJIT_S390X_RR(name, pattern)
static SLJIT_INLINE sljit_ins stmg(sljit_gpr dst, sljit_gpr src, sljit_s32 d, sljit_gpr b)
static SLJIT_INLINE sljit_ins lgbr(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE sljit_ins aghi(sljit_gpr reg, sljit_s16 imm)
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 const char * sljit_get_platform_name(void)
static const sljit_gpr r12
static sljit_s32 sljit_emit_add(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_atomic_store(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 src_reg, sljit_s32 mem_reg, sljit_s32 temp_reg)
static SLJIT_INLINE sljit_ins xr(sljit_gpr dst, sljit_gpr src)
#define VECTOR_ENHANCEMENTS_1_FACILITY
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)
#define FAST_LONG_DISPLACEMENT_FACILITY
static SLJIT_INLINE sljit_ins lgh(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static sljit_s32 sljit_emit_multiply(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
static sljit_s32 sljit_emit_bitwise(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
static sljit_s32 float_mem(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 reg, sljit_s32 mem, sljit_sw memw)
static const sljit_gpr r13
#define SLJIT_S390X_RXYA(name, pattern, cond)
static SLJIT_INLINE sljit_ins lgfr(sljit_gpr dst, sljit_gpr src)
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 struct sljit_jump * sljit_emit_call(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 arg_types)
static SLJIT_INLINE sljit_ins dr(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE sljit_s32 sljit_emit_fop1_cmp(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)
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)
static sljit_s32 sljit_emit_bitwise_imm(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 dst, sljit_s32 src1, sljit_sw src1w, sljit_uw imm, sljit_s32 count16)
static SLJIT_INLINE sljit_ins lgf(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins llilf(sljit_gpr reg, sljit_u32 imm)
static const sljit_gpr r15
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
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)
static sljit_s32 load_unsigned_word(struct sljit_compiler *compiler, sljit_gpr dst_r, sljit_s32 src, sljit_sw srcw, sljit_s32 is_32bit)
static sljit_s32 update_zero_overflow(struct sljit_compiler *compiler, sljit_s32 op, sljit_gpr dst_r)
static const sljit_gpr r14
static const sljit_gpr r2
static SLJIT_INLINE sljit_ins or(sljit_gpr dst, sljit_gpr src)
static SLJIT_INLINE sljit_ins agfi(sljit_gpr reg, sljit_s32 imm)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_custom(struct sljit_compiler *compiler, void *instruction, sljit_u32 size)
#define SLJIT_S390X_RIEF(name, pattern)
static SLJIT_INLINE sljit_ins risbhgz(sljit_gpr dst, sljit_gpr src, sljit_u8 start, sljit_u8 end, sljit_u8 rot)
static SLJIT_INLINE sljit_s32 load_word(struct sljit_compiler *compiler, sljit_gpr dst_r, sljit_s32 src, sljit_sw srcw, sljit_s32 is_32bit)
static SLJIT_INLINE int have_stfle()
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)
static SLJIT_INLINE sljit_ins lr(sljit_gpr dst, sljit_gpr src)
static const sljit_ins load_halfword_forms[3]
static SLJIT_INLINE sljit_ins lmg(sljit_gpr dst, sljit_gpr src, sljit_s32 d, sljit_gpr b)
static SLJIT_INLINE sljit_s32 sljit_emit_fop1_conv_sw_from_f64(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src, sljit_sw srcw)
static const struct ins_forms multiply_forms
SLJIT_API_FUNC_ATTRIBUTE void * sljit_generate_code(struct sljit_compiler *compiler, sljit_s32 options, void *exec_allocator_data)
static SLJIT_INLINE sljit_ins ly(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static const sljit_gpr r11
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)
static sljit_s32 emit_float(struct sljit_compiler *compiler, sljit_ins ins_r, sljit_ins ins, sljit_s32 reg, 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)
static SLJIT_INLINE sljit_ins llihl(sljit_gpr reg, sljit_u16 imm)
struct sljit_const * consts
sljit_sw executable_offset
struct sljit_jump * jumps
struct sljit_label * last_label
struct sljit_memory_fragment * buf
struct sljit_label * labels
struct sljit_const * next
union sljit_jump::@1235 u
struct sljit_label * label
union sljit_label::@1234 u
struct sljit_const const_
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4