A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://www.ncbi.nlm.nih.gov/IEB/ToolBox/CPP_DOC/doxyhtml/sljitNativeRISCV__common_8c_source.html below:

NCBI C++ ToolKit: src/util/regexp/sljit/sljitNativeRISCV_common.c Source File

29 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 30  return "RISC-V-32"

SLJIT_CPUINFO;

32  return "RISC-V-64"

SLJIT_CPUINFO;

40 #define TMP_REG1 (SLJIT_NUMBER_OF_REGISTERS + 2) 41 #define TMP_REG2 (SLJIT_NUMBER_OF_REGISTERS + 3) 42 #define TMP_REG3 (SLJIT_NUMBER_OF_REGISTERS + 4) 46 #define EQUAL_FLAG (SLJIT_NUMBER_OF_REGISTERS + 5) 47 #define RETURN_ADDR_REG TMP_REG2 48 #define OTHER_FLAG (SLJIT_NUMBER_OF_REGISTERS + 6) 50 #define TMP_FREG1 (SLJIT_NUMBER_OF_FLOAT_REGISTERS + 1) 51 #define TMP_FREG2 (SLJIT_NUMBER_OF_FLOAT_REGISTERS + 2) 54

0, 10, 11, 12, 13, 14, 15, 16, 17, 29, 30, 31, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 9, 8, 2, 6, 1, 7, 5, 28

58

0, 10, 11, 12, 13, 14, 15, 16, 17, 2, 3, 4, 5, 6, 7, 28, 29, 30, 31, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 9, 8, 0, 1,

65 #define RD(rd) ((sljit_ins)reg_map[rd] << 7) 66 #define RS1(rs1) ((sljit_ins)reg_map[rs1] << 15) 67 #define RS2(rs2) ((sljit_ins)reg_map[rs2] << 20) 68 #define FRD(rd) ((sljit_ins)freg_map[rd] << 7) 69 #define FRS1(rs1) ((sljit_ins)freg_map[rs1] << 15) 70 #define FRS2(rs2) ((sljit_ins)freg_map[rs2] << 20) 71 #define IMM_I(imm) ((sljit_ins)(imm) << 20) 72 #define IMM_S(imm) ((((sljit_ins)(imm) & 0xfe0) << 20) | (((sljit_ins)(imm) & 0x1f) << 7)) 75 #define OPC(o) ((sljit_ins)(o)) 76 #define F3(f) ((sljit_ins)(f) << 12) 77 #define F12(f) ((sljit_ins)(f) << 20) 78 #define F7(f) ((sljit_ins)(f) << 25) 80 #define ADD (F7(0x0) | F3(0x0) | OPC(0x33)) 81 #define ADDI (F3(0x0) | OPC(0x13)) 82 #define AND (F7(0x0) | F3(0x7) | OPC(0x33)) 83 #define ANDI (F3(0x7) | OPC(0x13)) 84 #define AUIPC (OPC(0x17)) 85 #define BEQ (F3(0x0) | OPC(0x63)) 86 #define BNE (F3(0x1) | OPC(0x63)) 87 #define BLT (F3(0x4) | OPC(0x63)) 88 #define BGE (F3(0x5) | OPC(0x63)) 89 #define BLTU (F3(0x6) | OPC(0x63)) 90 #define BGEU (F3(0x7) | OPC(0x63)) 91 #define DIV (F7(0x1) | F3(0x4) | OPC(0x33)) 92 #define DIVU (F7(0x1) | F3(0x5) | OPC(0x33)) 93 #define EBREAK (F12(0x1) | F3(0x0) | OPC(0x73)) 94 #define FADD_S (F7(0x0) | F3(0x7) | OPC(0x53)) 95 #define FDIV_S (F7(0xc) | F3(0x7) | OPC(0x53)) 96 #define FEQ_S (F7(0x50) | F3(0x2) | OPC(0x53)) 97 #define FLD (F3(0x3) | OPC(0x7)) 98 #define FLE_S (F7(0x50) | F3(0x0) | OPC(0x53)) 99 #define FLT_S (F7(0x50) | F3(0x1) | OPC(0x53)) 101 #define FCVT_S_D (F7(0x20) | OPC(0x53)) 102 #define FCVT_S_W (F7(0x68) | OPC(0x53)) 103 #define FCVT_S_WU (F7(0x68) | F12(0x1) | OPC(0x53)) 104 #define FCVT_W_S (F7(0x60) | F3(0x1) | OPC(0x53)) 105 #define FMUL_S (F7(0x8) | F3(0x7) | OPC(0x53)) 106 #define FMV_X_W (F7(0x70) | F3(0x0) | OPC(0x53)) 107 #define FMV_W_X (F7(0x78) | F3(0x0) | OPC(0x53)) 108 #define FSD (F3(0x3) | OPC(0x27)) 109 #define FSGNJ_S (F7(0x10) | F3(0x0) | OPC(0x53)) 110 #define FSGNJN_S (F7(0x10) | F3(0x1) | OPC(0x53)) 111 #define FSGNJX_S (F7(0x10) | F3(0x2) | OPC(0x53)) 112 #define FSUB_S (F7(0x4) | F3(0x7) | OPC(0x53)) 113 #define FSW (F3(0x2) | OPC(0x27)) 114 #define JAL (OPC(0x6f)) 115 #define JALR (F3(0x0) | OPC(0x67)) 116 #define LD (F3(0x3) | OPC(0x3)) 117 #define LUI (OPC(0x37)) 118 #define LW (F3(0x2) | OPC(0x3)) 119 #define MUL (F7(0x1) | F3(0x0) | OPC(0x33)) 120 #define MULH (F7(0x1) | F3(0x1) | OPC(0x33)) 121 #define MULHU (F7(0x1) | F3(0x3) | OPC(0x33)) 122 #define OR (F7(0x0) | F3(0x6) | OPC(0x33)) 123 #define ORI (F3(0x6) | OPC(0x13)) 124 #define REM (F7(0x1) | F3(0x6) | OPC(0x33)) 125 #define REMU (F7(0x1) | F3(0x7) | OPC(0x33)) 126 #define SD (F3(0x3) | OPC(0x23)) 127 #define SLL (F7(0x0) | F3(0x1) | OPC(0x33)) 128 #define SLLI (IMM_I(0x0) | F3(0x1) | OPC(0x13)) 129 #define SLT (F7(0x0) | F3(0x2) | OPC(0x33)) 130 #define SLTI (F3(0x2) | OPC(0x13)) 131 #define SLTU (F7(0x0) | F3(0x3) | OPC(0x33)) 132 #define SLTUI (F3(0x3) | OPC(0x13)) 133 #define SRL (F7(0x0) | F3(0x5) | OPC(0x33)) 134 #define SRLI (IMM_I(0x0) | F3(0x5) | OPC(0x13)) 135 #define SRA (F7(0x20) | F3(0x5) | OPC(0x33)) 136 #define SRAI (IMM_I(0x400) | F3(0x5) | OPC(0x13)) 137 #define SUB (F7(0x20) | F3(0x0) | OPC(0x33)) 138 #define SW (F3(0x2) | OPC(0x23)) 139 #define XOR (F7(0x0) | F3(0x4) | OPC(0x33)) 140 #define XORI (F3(0x4) | OPC(0x13)) 142 #define SIMM_MAX (0x7ff) 143 #define SIMM_MIN (-0x800) 144 #define BRANCH_MAX (0xfff) 145 #define BRANCH_MIN (-0x1000) 146 #define JUMP_MAX (0xfffff) 147 #define JUMP_MIN (-0x100000) 149 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 150 #define S32_MAX (0x7ffff7ffl) 151 #define S32_MIN (-0x80000000l) 152 #define S44_MAX (0x7fffffff7ffl) 153 #define S52_MAX (0x7ffffffffffffl) 181  if

(jump->

flags

& JUMP_ADDR)

182

target_addr = jump->

u

.

target

;

190  if

(jump->

flags

& IS_COND) {

191

diff += SSIZE_OF(ins);

195

inst[0] = (inst[0] & 0x1fff07f) ^ 0x1000;

196

jump->

flags

|= PATCH_B;

201

diff -= SSIZE_OF(ins);

205  if

(jump->

flags

& IS_COND) {

206 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 213

jump->

flags

|= PATCH_J;

217 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 219  if

(jump->

flags

& IS_COND)

222

jump->

flags

|= PATCH_REL32;

228  if

(jump->

flags

& IS_COND)

231

jump->

flags

|= PATCH_ABS32;

236  if

(target_addr <= S44_MAX) {

237  if

(jump->

flags

& IS_COND)

240

jump->

flags

|= PATCH_ABS44;

246  if

(jump->

flags

& IS_COND)

249

jump->

flags

|= PATCH_ABS52;

256 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 265 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 274  if

(jump->

flags

& JUMP_ADDR)

283

jump->

flags

|= PATCH_REL32;

289

jump->

flags

|= PATCH_ABS32;

293  if

(

addr

<= S44_MAX) {

295

jump->

flags

|= PATCH_ABS44;

301

jump->

flags

|= PATCH_ABS52;

317 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 322 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 323  if

(

flags

& PATCH_REL32) {

324  addr

-= (

sljit_uw

)SLJIT_ADD_EXEC_OFFSET(ins, executable_offset);

328  if

((

addr

& 0x800) != 0)

333  if

(!(

flags

& JUMP_MOV_ADDR)) {

335

ins[1] = (ins[1] & 0xfffff) |

IMM_I

(

addr

);

342  if

((

addr

& 0x800) != 0)

345 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 349  if

(

flags

& PATCH_ABS32) {

352

}

else if

(

flags

& PATCH_ABS44) {

361  if

((high & 0x800) != 0)

373  if

((

addr

& 0x80000000l) != 0)

376  if

(

flags

& PATCH_ABS52) {

380  if

((high & 0x800) != 0)

394  if

(!(

flags

& JUMP_MOV_ADDR)) {

396

ins[1] = (ins[1] & 0xfffff) |

IMM_I

(

addr

);

406

SLJIT_NEXT_DEFINE_TYPES;

412

jump = compiler->

jumps

;

413

const_ = compiler->

consts

;

414

SLJIT_NEXT_INIT_TYPES();

417

SLJIT_GET_NEXT_MIN();

419  if

(next_min_addr == SLJIT_MAX_ADDRESS)

422  if

(next_min_addr == next_label_size) {

423  label

->size -= size_reduce;

426

next_label_size = SLJIT_GET_NEXT_SIZE(

label

);

429  if

(next_min_addr == next_const_addr) {

430

const_->

addr

-= size_reduce;

431

const_ = const_->

next

;

432

next_const_addr = SLJIT_GET_NEXT_ADDRESS(const_);

436  if

(next_min_addr != next_jump_addr)

439

jump->

addr

-= size_reduce;

440  if

(!(jump->

flags

& JUMP_MOV_ADDR)) {

444  if

(jump->

flags

& JUMP_ADDR) {

445 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 448  else if

(jump->

u

.

target

<= S44_MAX)

457  if

((jump->

flags

& IS_COND) && (diff + 1) <= (

BRANCH_MAX

/ SSIZE_OF(ins)) && (diff + 1) >= (

BRANCH_MIN

/ SSIZE_OF(ins)))

459  else if

(diff >= (

JUMP_MIN

/ SSIZE_OF(ins)) && diff <= (

JUMP_MAX

/ SSIZE_OF(ins)))

461 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 462  else if

(diff >= (

S32_MIN

/ SSIZE_OF(ins)) && diff <= (

S32_MAX

/ SSIZE_OF(ins)))

470 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 474  if

(!(jump->

flags

& JUMP_ADDR)) {

478  if

(diff >= (

S32_MIN

/ SSIZE_OF(ins)) && diff <= (

S32_MAX

/ SSIZE_OF(ins)))

482  else if

(jump->

u

.

target

< S44_MAX)

493

next_jump_addr = SLJIT_GET_NEXT_ADDRESS(jump);

496

compiler->

size

-= size_reduce;

507

SLJIT_NEXT_DEFINE_TYPES;

516

CHECK_PTR(check_sljit_generate_code(compiler));

520  code

= (

sljit_ins

*)allocate_executable_memory(compiler->

size

*

sizeof

(

sljit_ins

), options, exec_allocator_data, &executable_offset);

523

reverse_buf(compiler);

529

jump = compiler->

jumps

;

530

const_ = compiler->

consts

;

531

SLJIT_NEXT_INIT_TYPES();

532

SLJIT_GET_NEXT_MIN();

536

buf_end = buf_ptr + (

buf

->used_size >> 2);

538

*code_ptr = *buf_ptr++;

539  if

(next_min_addr == word_count) {

545  if

(next_min_addr == next_label_size) {

546  label

->u.addr = (

sljit_uw

)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset);

549

next_label_size = SLJIT_GET_NEXT_SIZE(

label

);

552  if

(next_min_addr == next_jump_addr) {

553  if

(!(jump->

flags

& JUMP_MOV_ADDR)) {

554

word_count = word_count - 1 + (jump->

flags

>> JUMP_SIZE_SHIFT);

559 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 564

word_count += jump->

flags

>> JUMP_SIZE_SHIFT;

571

next_jump_addr = SLJIT_GET_NEXT_ADDRESS(jump);

572

}

else if

(next_min_addr == next_const_addr) {

574

const_ = const_->

next

;

575

next_const_addr = SLJIT_GET_NEXT_ADDRESS(const_);

578

SLJIT_GET_NEXT_MIN();

582

}

while

(buf_ptr < buf_end);

598

jump = compiler->

jumps

;

601  if

(!(jump->

flags

& (PATCH_B | PATCH_J)) || (jump->

flags

& JUMP_MOV_ADDR)) {

608  addr

-= (

sljit_uw

)SLJIT_ADD_EXEC_OFFSET(buf_ptr, executable_offset);

610  if

(jump->

flags

& PATCH_B) {

612  addr

= ((

addr

& 0x800) >> 4) | ((

addr

& 0x1e) << 7) | ((

addr

& 0x7e0) << 20) | ((

addr

& 0x1000) << 19);

618  addr

= (

addr

& 0xff000) | ((

addr

& 0x800) << 9) | ((

addr

& 0x7fe) << 20) | ((

addr

& 0x100000) << 11);

630

code_ptr = (

sljit_ins

*)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset);

639  switch

(feature_type) {

641 #ifdef SLJIT_IS_FPU_AVAILABLE 643 #elif defined(__riscv_float_abi_soft) 650 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 679 #define LOAD_DATA 0x01 680 #define WORD_DATA 0x00 681 #define BYTE_DATA 0x02 682 #define HALF_DATA 0x04 683 #define INT_DATA 0x06 684 #define SIGNED_DATA 0x08 687 #define DOUBLE_DATA 0x10 688 #define SINGLE_DATA 0x12 690 #define MEM_MASK 0x1f 692 #define ARG_TEST 0x00020 693 #define ALT_KEEP_CACHE 0x00040 694 #define CUMULATIVE_OP 0x00080 695 #define IMM_OP 0x00100 696 #define MOVE_OP 0x00200 697 #define SRC2_IMM 0x00400 699 #define UNUSED_DEST 0x00800 700 #define REG_DEST 0x01000 701 #define REG1_SOURCE 0x02000 702 #define REG2_SOURCE 0x04000 703 #define SLOW_SRC1 0x08000 704 #define SLOW_SRC2 0x10000 705 #define SLOW_DEST 0x20000 706 #define MEM_USE_TMP2 0x40000 708 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 709 #define STACK_STORE SW 710 #define STACK_LOAD LW 712 #define STACK_STORE SD 713 #define STACK_LOAD LD 716 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 722 #define STACK_MAX_DISTANCE (-SIMM_MIN) 731  sljit_s32

saved_arg_count = SLJIT_KEPT_SAVEDS_COUNT(options);

734  CHECK

(check_sljit_emit_enter(compiler, options, arg_types, scratches, saveds, fscratches, fsaveds, local_size));

735

set_emit_enter(compiler, options, arg_types, scratches, saveds, fscratches, fsaveds, local_size);

737

local_size += GET_SAVED_REGISTERS_SIZE(scratches, saveds - saved_arg_count, 1);

738 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 740  if

((local_size & SSIZE_OF(

sw

)) != 0)

741

local_size += SSIZE_OF(

sw

);

742

local_size += GET_SAVED_FLOAT_REGISTERS_SIZE(fscratches, fsaveds, f64);

745

local_size += GET_SAVED_FLOAT_REGISTERS_SIZE(fscratches, fsaveds, f64);

753  offset

= local_size - SSIZE_OF(

sw

);

777 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 779  if

((

offset

& SSIZE_OF(

sw

)) != 0)

796  else if

(local_size > 0)

806  while

(arg_types > 0) {

821 #undef STACK_MAX_DISTANCE 828  CHECK

(check_sljit_set_context(compiler, options, arg_types, scratches, saveds, fscratches, fsaveds, local_size));

829

set_set_context(compiler, options, arg_types, scratches, saveds, fscratches, fsaveds, local_size);

831

local_size += GET_SAVED_REGISTERS_SIZE(scratches, saveds - SLJIT_KEPT_SAVEDS_COUNT(options), 1);

832 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 834  if

((local_size & SSIZE_OF(

sw

)) != 0)

835

local_size += SSIZE_OF(

sw

);

836

local_size += GET_SAVED_FLOAT_REGISTERS_SIZE(fscratches, fsaveds, f64);

839

local_size += GET_SAVED_FLOAT_REGISTERS_SIZE(fscratches, fsaveds, f64);

846 #define STACK_MAX_DISTANCE (-SIMM_MIN - 16) 867  offset

= local_size - SSIZE_OF(

sw

);

882 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 884  if

((

offset

& SSIZE_OF(

sw

)) != 0)

902 #undef STACK_MAX_DISTANCE 907  CHECK

(check_sljit_emit_return_void(compiler));

917  CHECK

(check_sljit_emit_return_to(compiler, src, srcw));

920

ADJUST_LOCAL_OFFSET(src, srcw);

932

SLJIT_SKIP_CHECKS(compiler);

940 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 941 #define ARCH_32_64(a, b) a 943 #define ARCH_32_64(a, b) b 949  F3

(0x0) |

OPC

(0x23)

,

950  F3

(0x4) |

OPC

(0x3)

,

951  F3

(0x1) |

OPC

(0x23)

,

952  F3

(0x5) |

OPC

(0x3)

,

953  F3

(0x2) |

OPC

(0x23)

,

958  F3

(0x0) |

OPC

(0x23)

,

959  F3

(0x0) |

OPC

(0x3)

,

960  F3

(0x1) |

OPC

(0x23)

,

961  F3

(0x1) |

OPC

(0x3)

,

962  F3

(0x2) |

OPC

(0x23)

,

963  F3

(0x2) |

OPC

(0x3)

,

965  F3

(0x3) |

OPC

(0x27)

,

966  F3

(0x3) |

OPC

(0x7)

,

967  F3

(0x2) |

OPC

(0x27)

,

968  F3

(0x2) |

OPC

(0x7)

,

993  if

(!(arg & OFFS_REG_MASK) && argw <= SIMM_MAX && argw >=

SIMM_MIN

) {

1004 #define TO_ARGW_HI(argw) (((argw) & ~0xfff) + (((argw) & 0x800) ? 0x1000 : 0)) 1013  if

(arg & OFFS_REG_MASK) {

1016  if

(argw && argw == next_argw && (arg == next_arg || (arg & OFFS_REG_MASK) == (next_arg & OFFS_REG_MASK)))

1021  if

(arg == next_arg) {

1048  if

(argw == compiler->cache_argw) {

1049  if

(arg == compiler->cache_arg)

1052  if

((

SLJIT_MEM

| (arg & OFFS_REG_MASK)) == compiler->cache_arg) {

1053  if

(arg == next_arg && argw == (next_argw & 0x3)) {

1054

compiler->cache_arg = arg;

1055

compiler->cache_argw = argw;

1065

compiler->cache_arg =

SLJIT_MEM

| (arg & OFFS_REG_MASK);

1066

compiler->cache_argw = argw;

1070  if

(arg == next_arg && argw == (next_argw & 0x3)) {

1071

compiler->cache_arg = arg;

1072

compiler->cache_argw = argw;

1081  if

(compiler->cache_arg == arg && argw - compiler->cache_argw <=

SIMM_MAX

&& argw - compiler->cache_argw >=

SIMM_MIN

)

1084  if

(compiler->cache_arg ==

SLJIT_MEM

&& (argw - compiler->cache_argw <=

SIMM_MAX

) && (argw - compiler->cache_argw >=

SIMM_MIN

)) {

1085  offset

= argw - compiler->cache_argw;

1091  if

(next_arg && next_argw - argw <= SIMM_MAX && next_argw - argw >=

SIMM_MIN

&& argw_hi !=

TO_ARGW_HI

(next_argw)) {

1093

compiler->cache_argw = argw;

1097

compiler->cache_argw = argw_hi;

1106  if

(arg == next_arg && next_argw - argw <= SIMM_MAX && next_argw - argw >=

SIMM_MIN

) {

1107

compiler->cache_arg = arg;

1122  return

compiler->

error

;

1151  return

compiler->

error

;

1155 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 1158 #define IMM_EXTEND(v) (IMM_I(v)) 1161 #define WORD_32 0x08 1162 #define IMM_EXTEND(v) (IMM_I((op & SLJIT_32) ? (v) : (32 + (v)))) 1168 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 1213 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 1254 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 1268 #define EMIT_LOGICAL(op_imm, op_reg) \ 1269  if (flags & SRC2_IMM) { \ 1270  if (op & SLJIT_SET_Z) \ 1271  FAIL_IF(push_inst(compiler, op_imm | RD(EQUAL_FLAG) | RS1(src1) | IMM_I(src2))); \ 1272  if (!(flags & UNUSED_DEST)) \ 1273  FAIL_IF(push_inst(compiler, op_imm | RD(dst) | RS1(src1) | IMM_I(src2))); \ 1276  if (op & SLJIT_SET_Z) \ 1277  FAIL_IF(push_inst(compiler, op_reg | RD(EQUAL_FLAG) | RS1(src1) | RS2(src2))); \ 1278  if (!(flags & UNUSED_DEST)) \ 1279  FAIL_IF(push_inst(compiler, op_reg | RD(dst) | RS1(src1) | RS2(src2))); \ 1282 #define EMIT_SHIFT(imm, reg) \ 1289  sljit_s32

is_overflow, is_carry, carry_src_r, is_handled, reg;

1291 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 1297  switch

(GET_OPCODE(op)) {

1338 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 1363 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 1367  return emit_rev

(compiler, op, dst, src2);

1374 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 1409  if

(is_overflow || carry_src_r != 0) {

1412  else if

(src2 != dst)

1426  if

(is_overflow || carry_src_r != 0) {

1448  if

(carry_src_r != 0) {

1451  else if

(src2 != dst)

1463  if

(carry_src_r != 0) {

1472  if

(carry_src_r == 0)

1510  switch

(GET_FLAG_TYPE(op)) {

1555  if

(is_overflow || is_carry)

1568  if

(is_overflow || is_carry)

1623 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 1633 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 1675 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 1676

src2 = ((op &

SLJIT_32

) ? 32 : 64) - src2;

1737

compiler->cache_arg = 0;

1738

compiler->cache_argw = 0;

1746  else if

(FAST_IS_REG(dst)) {

1750

src2_tmp_reg = dst_r;

1756  if

(src2 ==

SLJIT_IMM

&& src2w != 0 && src2w <= SIMM_MAX && src2w >=

SIMM_MIN

) {

1773  if

(FAST_IS_REG(src1)) {

1792  if

(FAST_IS_REG(src2)) {

1801

src2_r = src2_tmp_reg;

1817

src2_r = src2_tmp_reg;

1840  return

compiler->

error

;

1850 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 1857  CHECK

(check_sljit_emit_op0(compiler, op));

1859  switch

(GET_OPCODE(op)) {

1899  CHECK

(check_sljit_emit_op1(compiler, op, dst, dstw, src, srcw));

1900

ADJUST_LOCAL_OFFSET(dst, dstw);

1901

ADJUST_LOCAL_OFFSET(src, srcw);

1903 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 1908  switch

(GET_OPCODE(op)) {

1910 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 1918 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 1966  CHECK

(check_sljit_emit_op2(compiler, op, 0, dst, dstw, src1, src1w, src2, src2w));

1967

ADJUST_LOCAL_OFFSET(dst, dstw);

1968

ADJUST_LOCAL_OFFSET(src1, src1w);

1969

ADJUST_LOCAL_OFFSET(src2, src2w);

1971 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 1981  switch

(GET_OPCODE(op)) {

1993

compiler->status_flags_state = 0;

2010 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 2032  CHECK

(check_sljit_emit_op2(compiler, op, 1, 0, 0, src1, src1w, src2, src2w));

2034

SLJIT_SKIP_CHECKS(compiler);

2035  return sljit_emit_op2

(compiler, op, 0, 0, src1, src1w, src2, src2w);

2043 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 2048  CHECK

(check_sljit_emit_op2r(compiler, op, dst_reg, src1, src1w, src2, src2w));

2052  switch

(GET_OPCODE(op)) {

2054

SLJIT_SKIP_CHECKS(compiler);

2070 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 2082  CHECK

(check_sljit_emit_shift_into(compiler, op, dst_reg, src1_reg, src2_reg, src3, src3w));

2086  if

(src1_reg == src2_reg) {

2087

SLJIT_SKIP_CHECKS(compiler);

2091

ADJUST_LOCAL_OFFSET(src3, src3w);

2094

src3w &= bit_length - 1;

2101

src3w = bit_length - src3w;

2105

src3w = bit_length - src3w;

2117

}

else if

(dst_reg == src3) {

2149  CHECK

(check_sljit_emit_op_src(compiler, op, src, srcw));

2150

ADJUST_LOCAL_OFFSET(src, srcw);

2154  if

(FAST_IS_REG(src))

2178  CHECK

(check_sljit_emit_op_dst(compiler, op, dst, dstw));

2179

ADJUST_LOCAL_OFFSET(dst, dstw);

2183  if

(FAST_IS_REG(dst))

2189

dst_r = FAST_IS_REG(dst) ? dst :

TMP_REG2

;

2202

CHECK_REG_INDEX(check_sljit_get_register_index(

type

, reg));

2219  CHECK

(check_sljit_emit_op_custom(compiler, instruction,

size

));

2228 #define FLOAT_DATA(op) (DOUBLE_DATA | ((op & SLJIT_32) >> 7)) 2229 #define FMT(op) ((sljit_ins)((op & SLJIT_32) ^ SLJIT_32) << 17) 2235 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 2236 # define flags (sljit_u32)0 2251 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 2259 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 2271 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 2295 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 2317 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 2349  switch

(GET_FLAG_TYPE(op)) {

2394

compiler->cache_arg = 0;

2395

compiler->cache_argw = 0;

2398

SELECT_FOP1_OPERATION_WITH_CHECKS(compiler, op, dst, dstw, src, srcw);

2403

dst_r = FAST_IS_REG(dst) ? dst :

TMP_FREG1

;

2410  switch

(GET_OPCODE(op)) {

2445  CHECK

(check_sljit_emit_fop2(compiler, op, dst, dstw, src1, src1w, src2, src2w));

2446

ADJUST_LOCAL_OFFSET(dst, dstw);

2447

ADJUST_LOCAL_OFFSET(src1, src1w);

2448

ADJUST_LOCAL_OFFSET(src2, src2w);

2450

compiler->cache_arg = 0;

2451

compiler->cache_argw = 0;

2453

dst_r = FAST_IS_REG(dst) ? dst :

TMP_FREG2

;

2490  switch

(GET_OPCODE(op)) {

2526  CHECK

(check_sljit_emit_fset32(compiler, freg,

value

));

2546

CHECK_PTR(check_sljit_emit_label(compiler));

2553

set_label(

label

, compiler);

2557 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 2558 #define BRANCH_LENGTH ((sljit_ins)(3 * sizeof(sljit_ins)) << 7) 2560 #define BRANCH_LENGTH ((sljit_ins)(7 * sizeof(sljit_ins)) << 7) 2617

CHECK_PTR(check_sljit_emit_jump(compiler,

type

));

2628

jump->

flags

|= IS_COND;

2635

jump->

flags

|= IS_CALL;

2642

compiler->

size

+= JUMP_MAX_SIZE - 1;

2651

CHECK_PTR(check_sljit_emit_call(compiler,

type

, arg_types));

2658

SLJIT_SKIP_CHECKS(compiler);

2672

CHECK_PTR(check_sljit_emit_cmp(compiler,

type

, src1, src1w, src2, src2w));

2673

ADJUST_LOCAL_OFFSET(src1, src1w);

2674

ADJUST_LOCAL_OFFSET(src2, src2w);

2676

compiler->cache_arg = 0;

2677

compiler->cache_argw = 0;

2678 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 2691

src2 = src2_tmp_reg;

2706

src2 = src2_tmp_reg;

2756

compiler->

size

+= JUMP_MAX_SIZE - 1;

2760 #undef BRANCH_LENGTH 2767  CHECK

(check_sljit_emit_ijump(compiler,

type

, src, srcw));

2771

ADJUST_LOCAL_OFFSET(src, srcw);

2788

compiler->

size

+= JUMP_MAX_SIZE - 1;

2798  CHECK

(check_sljit_emit_icall(compiler,

type

, arg_types, src, srcw));

2801

ADJUST_LOCAL_OFFSET(src, srcw);

2816

SLJIT_SKIP_CHECKS(compiler);

2826 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 2833  CHECK

(check_sljit_emit_op_flags(compiler, op, dst, dstw,

type

));

2834

ADJUST_LOCAL_OFFSET(dst, dstw);

2836

op = GET_OPCODE(op);

2839

compiler->cache_arg = 0;

2840

compiler->cache_argw = 0;

2893  return emit_op_mem

(compiler, mem_type, src_r, dst, dstw);

2903  return emit_op

(compiler, saved_op, mem_type, dst, dstw,

TMP_REG1

, 0, src_r, 0);

2904  return emit_op

(compiler, saved_op, mem_type, dst, dstw, dst, dstw, src_r, 0);

2914 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 2924  CHECK

(check_sljit_emit_select(compiler,

type

, dst_reg, src1, src1w, src2_reg));

2926

ADJUST_LOCAL_OFFSET(src1, src1w);

2928  if

(dst_reg != src2_reg) {

2929  if

(dst_reg == src1) {

2934  if

(ADDRESSING_DEPENDS_ON(src1, dst_reg)) {

2937  if

((src1 & REG_MASK) == dst_reg)

2938

src1 = (src1 & ~REG_MASK) |

TMP_REG1

;

2940  if

(OFFS_REG(src1) == dst_reg)

2941

src1 = (src1 & ~OFFS_REG_MASK) | TO_OFFS_REG(

TMP_REG1

);

2957 #if (defined SLJIT_CONFIG_RISCV_64 && SLJIT_CONFIG_RISCV_64) 2981  CHECK

(check_sljit_emit_fselect(compiler,

type

, dst_freg, src1, src1w, src2_freg));

2983

ADJUST_LOCAL_OFFSET(src1, src1w);

2985  if

(dst_freg != src2_freg) {

2986  if

(dst_freg == src1) {

3020  CHECK

(check_sljit_emit_mem(compiler,

type

, reg, mem, memw));

3022  if

(!(reg & REG_PAIR_MASK))

3023  return

sljit_emit_mem_unaligned(compiler,

type

, reg, mem, memw);

3037  if

(((memw + 0x800) & 0xfff) <= 0xfff - SSIZE_OF(

sw

)) {

3064  return push_mem_inst

(compiler,

flags

, REG_PAIR_SECOND(reg), mem, (memw + SSIZE_OF(

sw

)) & 0xfff);

3075

CHECK_PTR(check_sljit_emit_const(compiler, dst, dstw, init_value));

3076

ADJUST_LOCAL_OFFSET(dst, dstw);

3080

set_const(const_, compiler);

3082

dst_r = FAST_IS_REG(dst) ? dst :

TMP_REG2

;

3097

CHECK_PTR(check_sljit_emit_mov_addr(compiler, dst, dstw));

3098

ADJUST_LOCAL_OFFSET(dst, dstw);

3102

set_mov_addr(jump, compiler, 0);

3104

dst_r = FAST_IS_REG(dst) ? dst :

TMP_REG2

;

3106 #if (defined SLJIT_CONFIG_RISCV_32 && SLJIT_CONFIG_RISCV_32) 3107

compiler->

size

+= 1;

3109

compiler->

size

+= 5;

#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

#define SLJIT_UNREACHABLE()

unsigned short int sljit_u16

signed short int sljit_s16

#define SLJIT_UNLIKELY(x)

#define SLJIT_LOCALS_OFFSET

#define SLJIT_API_FUNC_ATTRIBUTE

#define SLJIT_COMPILE_ASSERT(x, description)

#define SLJIT_UNUSED_ARG(arg)

#define SLJIT_CACHE_FLUSH(from, to)

#define SLJIT_UPDATE_WX_FLAGS(from, to, enable_exec)

static sljit_uw total_size

#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_ORDERED_LESS_EQUAL

#define SLJIT_CONV_F64_FROM_S32

#define SLJIT_FAST_RETURN

#define SLJIT_HAS_ZERO_REGISTER

#define SLJIT_FIRST_SAVED_REG

#define SLJIT_UNORDERED_OR_GREATER

#define SLJIT_ORDERED_GREATER_EQUAL

#define SLJIT_PREFETCH_L3

#define SLJIT_SIG_GREATER_EQUAL

#define SLJIT_UNORDERED_OR_NOT_EQUAL

#define SLJIT_ARG_TYPE_F64

#define SLJIT_PREFETCH_L1

#define SLJIT_COPYSIGN_F64

#define SLJIT_ORDERED_EQUAL

#define SLJIT_UNORDERED_OR_LESS

#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_ENTER_REG_ARG

#define SLJIT_SIG_GREATER

#define SLJIT_FLOAT_REGISTER

#define SLJIT_GET_RETURN_ADDRESS

#define SLJIT_FIRST_SAVED_FLOAT_REG

#define SLJIT_CONV_F64_FROM_SW

#define SLJIT_SHIFT_INTO_NON_ZERO

#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_ORDERED_LESS

#define SLJIT_HAS_COPY_F32

#define SLJIT_CONV_F64_FROM_F32

#define SLJIT_PREFETCH_L2

void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset)

#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

static sljit_s32 load_immediate(struct sljit_compiler *compiler, sljit_s32 reg, sljit_uw imm)

static SLJIT_INLINE sljit_sw mov_addr_get_length(struct sljit_jump *jump, sljit_ins *code_ptr, sljit_ins *code, sljit_sw executable_offset)

static SLJIT_INLINE sljit_s32 emit_const(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw init_value, sljit_ins last_ins)

#define SLJIT_IS_FPU_AVAILABLE

static SLJIT_INLINE sljit_s32 emit_op_mem2(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg, sljit_s32 arg1, sljit_sw arg1w, sljit_s32 arg2, sljit_sw arg2w)

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)

static sljit_s32 push_mem_inst(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg, sljit_s32 base, sljit_sw offset)

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)

static const sljit_u8 freg_map[SLJIT_NUMBER_OF_FLOAT_REGISTERS+3]

static sljit_ins get_jump_instruction(sljit_s32 type)

static sljit_s32 emit_rev16(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw src)

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)

static SLJIT_INLINE sljit_ins * detect_jump_type(struct sljit_jump *jump, sljit_ins *code, sljit_sw executable_offset)

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_has_cpu_feature(sljit_s32 feature_type)

static sljit_s32 emit_rev(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw src)

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_s32 getput_arg(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg, sljit_s32 arg, sljit_sw argw, sljit_s32 next_arg, sljit_sw next_argw)

SLJIT_API_FUNC_ATTRIBUTE struct sljit_label * sljit_emit_label(struct sljit_compiler *compiler)

SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_cmp_info(sljit_s32 type)

static sljit_s32 can_cache(sljit_s32 arg, sljit_sw argw, sljit_s32 next_arg, sljit_sw next_argw)

SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_get_register_index(sljit_s32 type, sljit_s32 reg)

SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant, sljit_sw executable_offset)

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)

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 SLJIT_INLINE sljit_s32 emit_single_op(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 flags, sljit_s32 dst, sljit_s32 src1, sljit_sw src2)

#define EMIT_SHIFT(imm, reg)

#define EMIT_LOGICAL(op_imm, op_reg)

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)

SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_return_void(struct sljit_compiler *compiler)

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)

static sljit_s32 emit_op_mem(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg, sljit_s32 arg, sljit_sw argw)

SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op0(struct sljit_compiler *compiler, sljit_s32 op)

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)

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 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 const sljit_u8 reg_map[SLJIT_NUMBER_OF_REGISTERS+7]

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 void reduce_code_size(struct sljit_compiler *compiler)

static SLJIT_INLINE void load_addr_to_reg(struct sljit_jump *jump, sljit_sw executable_offset)

static sljit_s32 emit_op(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 flags, sljit_s32 dst, sljit_sw dstw, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)

static sljit_s32 emit_clz_ctz(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw src)

static sljit_s32 emit_stack_frame_release(struct sljit_compiler *compiler, sljit_s32 is_return_to)

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 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_ins data_transfer_insts[16+4]

#define STACK_MAX_DISTANCE

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 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_s32 sljit_emit_fop1_cmp(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w)

static sljit_s32 getput_arg_fast(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg, sljit_s32 arg, sljit_sw argw)

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 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_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)

SLJIT_API_FUNC_ATTRIBUTE void * sljit_generate_code(struct sljit_compiler *compiler, sljit_s32 options, void *exec_allocator_data)

static sljit_s32 push_imm_s_inst(struct sljit_compiler *compiler, sljit_ins ins, sljit_sw imm)

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_op1(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src, sljit_sw srcw)

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


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