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/sljitNativeARM__64_8c_source.html below:

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

29  return "ARM-64"

SLJIT_CPUINFO;

37 #define TMP_REG1 (SLJIT_NUMBER_OF_REGISTERS + 2) 38 #define TMP_REG2 (SLJIT_NUMBER_OF_REGISTERS + 3) 39 #define TMP_LR (SLJIT_NUMBER_OF_REGISTERS + 4) 40 #define TMP_FP (SLJIT_NUMBER_OF_REGISTERS + 5) 42 #define TMP_FREG1 (SLJIT_NUMBER_OF_FLOAT_REGISTERS + 1) 43 #define TMP_FREG2 (SLJIT_NUMBER_OF_FLOAT_REGISTERS + 2) 47

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

51

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

54 #define W_OP ((sljit_ins)1 << 31) 55 #define RD(rd) ((sljit_ins)reg_map[rd]) 56 #define RT(rt) ((sljit_ins)reg_map[rt]) 57 #define RN(rn) ((sljit_ins)reg_map[rn] << 5) 58 #define RT2(rt2) ((sljit_ins)reg_map[rt2] << 10) 59 #define RM(rm) ((sljit_ins)reg_map[rm] << 16) 60 #define VD(vd) ((sljit_ins)freg_map[vd]) 61 #define VT(vt) ((sljit_ins)freg_map[vt]) 62 #define VT2(vt) ((sljit_ins)freg_map[vt] << 10) 63 #define VN(vn) ((sljit_ins)freg_map[vn] << 5) 64 #define VM(vm) ((sljit_ins)freg_map[vm] << 16) 70 #define ADC 0x9a000000 71 #define ADD 0x8b000000 72 #define ADDE 0x8b200000 73 #define ADDI 0x91000000 74 #define ADR 0x10000000 75 #define ADRP 0x90000000 76 #define AND 0x8a000000 77 #define ANDI 0x92000000 78 #define AND_v 0x0e201c00 79 #define ASRV 0x9ac02800 81 #define B_CC 0x54000000 83 #define BLR 0xd63f0000 85 #define BRK 0xd4200000 86 #define CAS 0xc8a07c00 87 #define CASB 0x08a07c00 88 #define CASH 0x48a07c00 89 #define CBZ 0xb4000000 90 #define CCMPI 0xfa400800 91 #define CLZ 0xdac01000 92 #define CSEL 0x9a800000 93 #define CSINC 0x9a800400 94 #define DUP_e 0x0e000400 95 #define DUP_g 0x0e000c00 96 #define EOR 0xca000000 97 #define EOR_v 0x2e201c00 98 #define EORI 0xd2000000 99 #define EXTR 0x93c00000 100 #define FABS 0x1e60c000 101 #define FADD 0x1e602800 102 #define FCMP 0x1e602000 103 #define FCSEL 0x1e600c00 104 #define FCVT 0x1e224000 105 #define FCVTL 0x0e217800 106 #define FCVTZS 0x9e780000 107 #define FDIV 0x1e601800 108 #define FMOV 0x1e604000 109 #define FMOV_R 0x9e660000 110 #define FMOV_I 0x1e601000 111 #define FMUL 0x1e600800 112 #define FNEG 0x1e614000 113 #define FSUB 0x1e603800 114 #define INS 0x4e001c00 115 #define INS_e 0x6e000400 116 #define LD1 0x0c407000 117 #define LD1_s 0x0d400000 118 #define LD1R 0x0d40c000 119 #define LDRI 0xf9400000 120 #define LDRI_F64 0xfd400000 121 #define LDRI_POST 0xf8400400 122 #define LDP 0xa9400000 123 #define LDP_F64 0x6d400000 124 #define LDP_POST 0xa8c00000 125 #define LDR_PRE 0xf8400c00 126 #define LDXR 0xc85f7c00 127 #define LDXRB 0x085f7c00 128 #define LDXRH 0x485f7c00 129 #define LSLV 0x9ac02000 130 #define LSRV 0x9ac02400 131 #define MADD 0x9b000000 132 #define MOVI 0x0f000400 133 #define MOVK 0xf2800000 134 #define MOVN 0x92800000 135 #define MOVZ 0xd2800000 136 #define NOP 0xd503201f 137 #define ORN 0xaa200000 138 #define ORR 0xaa000000 139 #define ORR_v 0x0ea01c00 140 #define ORRI 0xb2000000 141 #define RBIT 0xdac00000 142 #define RET 0xd65f0000 143 #define REV 0xdac00c00 144 #define REV16 0xdac00400 145 #define RORV 0x9ac02c00 146 #define SBC 0xda000000 147 #define SBFM 0x93400000 148 #define SCVTF 0x9e620000 149 #define SDIV 0x9ac00c00 150 #define SMADDL 0x9b200000 151 #define SMOV 0x0e002c00 152 #define SMULH 0x9b403c00 153 #define SSHLL 0x0f00a400 154 #define ST1 0x0c007000 155 #define ST1_s 0x0d000000 156 #define STP 0xa9000000 157 #define STP_F64 0x6d000000 158 #define STP_PRE 0xa9800000 159 #define STRB 0x38206800 160 #define STRBI 0x39000000 161 #define STRI 0xf9000000 162 #define STRI_F64 0xfd000000 163 #define STR_FI 0x3d000000 164 #define STR_FR 0x3c206800 165 #define STUR_FI 0x3c000000 166 #define STURBI 0x38000000 167 #define STXR 0xc8007c00 168 #define STXRB 0x8007c00 169 #define STXRH 0x48007c00 170 #define SUB 0xcb000000 171 #define SUBI 0xd1000000 172 #define SUBS 0xeb000000 173 #define TBZ 0x36000000 174 #define UBFM 0xd3400000 175 #define UCVTF 0x9e630000 176 #define UDIV 0x9ac00800 177 #define UMOV 0x0e003c00 178 #define UMULH 0x9bc03c00 179 #define USHLL 0x2f00a400 180 #define USHR 0x2f000400 181 #define USRA 0x2f001400 182 #define XTN 0x0e212800 184 #define CSET (CSINC | RM(TMP_ZERO) | RN(TMP_ZERO)) 185 #define LDR (STRI | (1 << 22)) 186 #define LDRB (STRBI | (1 << 22)) 187 #define LDRH (LDRB | (1 << 30)) 188 #define MOV (ORR | RN(TMP_ZERO)) 215  if

(jump->

flags

& JUMP_ADDR)

216

target_addr = jump->

u

.

target

;

224  if

(jump->

flags

& IS_COND) {

225

diff += SSIZE_OF(ins);

226  if

(diff <= 0xfffff && diff >= -0x100000) {

227

*(--code_ptr) ^= (jump->

flags

& IS_CBZ) ? (0x1 << 24) : 0x1;

228

jump->

flags

|= PATCH_COND;

232

diff -= SSIZE_OF(ins);

235  if

(diff <= 0x7ffffff && diff >= -0x8000000) {

236  if

(jump->

flags

& IS_COND)

237

code_ptr[-1] -= (4 << 5);

238

jump->

flags

|= PATCH_B;

242  if

(target_addr < 0x100000000l) {

243  if

(jump->

flags

& IS_COND)

244

code_ptr[-1] -= (2 << 5);

245

code_ptr[2] = code_ptr[0];

249  if

(diff <= 0xfffff000l && diff >= -0x100000000l) {

250  if

(jump->

flags

& IS_COND)

251

code_ptr[-1] -= (2 << 5);

252

jump->

flags

|= PATCH_B32;

253

code_ptr[2] = code_ptr[0];

257  if

(target_addr < 0x1000000000000l) {

258  if

(jump->

flags

& IS_COND)

259

code_ptr[-1] -= (1 << 5);

260

jump->

flags

|= PATCH_ABS48;

261

code_ptr[3] = code_ptr[0];

266

jump->

flags

|= PATCH_ABS64;

267

code_ptr[4] = code_ptr[0];

278  if

(jump->

flags

& JUMP_ADDR)

285  if

(diff <= 0xfffff && diff >= -0x100000) {

286

jump->

flags

|= PATCH_B;

290  if

(diff <= 0xfffff000l && diff >= -0x100000000l) {

292

jump->

flags

|= PATCH_B32;

296  if

(

addr

< 0x100000000l) {

301  if

(

addr

< 0x1000000000000l) {

303

jump->

flags

|= PATCH_ABS48;

308

jump->

flags

|= PATCH_ABS64;

319  if

(!(jump->

flags

& JUMP_MOV_ADDR)) {

320  if

(jump->

flags

& PATCH_COND) {

321  addr

= (

addr

- (

sljit_sw

)SLJIT_ADD_EXEC_OFFSET(buf_ptr, executable_offset)) >> 2;

327  if

(jump->

flags

& PATCH_B) {

328  addr

= (

addr

- (

sljit_sw

)SLJIT_ADD_EXEC_OFFSET(buf_ptr, executable_offset)) >> 2;

334

dst = (buf_ptr[0] >> 5) & 0x1f;

336  if

(jump->

flags

& PATCH_B32) {

346  if

(jump->

flags

& PATCH_B) {

347  addr

-= (

sljit_sw

)SLJIT_ADD_EXEC_OFFSET(buf_ptr, executable_offset);

353  if

(jump->

flags

& PATCH_B32) {

366

buf_ptr[1] =

MOVK

| (((

sljit_ins

)(

addr

>> 16) & 0xffff) << 5) | (1 << 21) | dst;

367  if

(jump->

flags

& (PATCH_ABS48 | PATCH_ABS64))

368

buf_ptr[2] =

MOVK

| (((

sljit_ins

)(

addr

>> 32) & 0xffff) << 5) | (2 << 21) | dst;

370  if

(jump->

flags

& PATCH_ABS64)

379

SLJIT_NEXT_DEFINE_TYPES;

385

jump = compiler->

jumps

;

386

const_ = compiler->

consts

;

387

SLJIT_NEXT_INIT_TYPES();

390

SLJIT_GET_NEXT_MIN();

392  if

(next_min_addr == SLJIT_MAX_ADDRESS)

395  if

(next_min_addr == next_label_size) {

396  label

->size -= size_reduce;

399

next_label_size = SLJIT_GET_NEXT_SIZE(

label

);

402  if

(next_min_addr == next_const_addr) {

403

const_->

addr

-= size_reduce;

404

const_ = const_->

next

;

405

next_const_addr = SLJIT_GET_NEXT_ADDRESS(const_);

409  if

(next_min_addr != next_jump_addr)

412

jump->

addr

-= size_reduce;

413  if

(!(jump->

flags

& JUMP_MOV_ADDR)) {

417  if

(jump->

flags

& JUMP_ADDR) {

418  if

(jump->

u

.

target

< 0x100000000l)

420  else if

(jump->

u

.

target

< 0x1000000000000l)

426  if

((jump->

flags

& IS_COND) && (diff + 1) <= (0xfffff / SSIZE_OF(ins)) && (diff + 1) >= (-0x100000 / SSIZE_OF(ins)))

428  else if

(diff <= (0x7ffffff / SSIZE_OF(ins)) && diff >= (-0x8000000 / SSIZE_OF(ins)))

430  else if

(diff <= (0xfffff000l / SSIZE_OF(ins)) && diff >= (-0x100000000l / SSIZE_OF(ins)))

440  if

(!(jump->

flags

& JUMP_ADDR)) {

443  if

(diff <= (0xfffff / SSIZE_OF(ins)) && diff >= (-0x100000 / SSIZE_OF(ins)))

445  else if

(diff <= (0xfffff000l / SSIZE_OF(ins)) && diff >= (-0x100000000l / SSIZE_OF(ins)))

447

}

else if

(jump->

u

.

target

< 0x100000000l)

449  else if

(jump->

u

.

target

< 0x1000000000000l)

457

next_jump_addr = SLJIT_GET_NEXT_ADDRESS(jump);

460

compiler->

size

-= size_reduce;

471

SLJIT_NEXT_DEFINE_TYPES;

480

CHECK_PTR(check_sljit_generate_code(compiler));

484  code

= (

sljit_ins

*)allocate_executable_memory(compiler->

size

*

sizeof

(

sljit_ins

), options, exec_allocator_data, &executable_offset);

487

reverse_buf(compiler);

493

jump = compiler->

jumps

;

494

const_ = compiler->

consts

;

495

SLJIT_NEXT_INIT_TYPES();

496

SLJIT_GET_NEXT_MIN();

500

buf_end = buf_ptr + (

buf

->used_size >> 2);

502

*code_ptr = *buf_ptr++;

503  if

(next_min_addr == word_count) {

509  if

(next_min_addr == next_label_size) {

510  label

->u.addr = (

sljit_uw

)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset);

513

next_label_size = SLJIT_GET_NEXT_SIZE(

label

);

516  if

(next_min_addr == next_jump_addr) {

517  if

(!(jump->

flags

& JUMP_MOV_ADDR)) {

518

word_count = word_count - 1 + (jump->

flags

>> JUMP_SIZE_SHIFT);

523

word_count += jump->

flags

>> JUMP_SIZE_SHIFT;

530

next_jump_addr = SLJIT_GET_NEXT_ADDRESS(jump);

531

}

else if

(next_min_addr == next_const_addr) {

533

const_ = const_->

next

;

534

next_const_addr = SLJIT_GET_NEXT_ADDRESS(const_);

537

SLJIT_GET_NEXT_MIN();

541

}

while

(buf_ptr < buf_end);

547  label

->u.addr = (

sljit_uw

)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset);

557

jump = compiler->

jumps

;

568

code_ptr = (

sljit_ins

*)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset);

577  switch

(feature_type) {

580 #ifdef SLJIT_IS_FPU_AVAILABLE 618 #define COUNT_TRAILING_ZERO(value, result) \ 620  if (!(value & 0xffffffff)) { \ 624  if (!(value & 0xffff)) { \ 628  if (!(value & 0xff)) { \ 632  if (!(value & 0xf)) { \ 636  if (!(value & 0x3)) { \ 640  if (!(value & 0x1)) { \ 645 #define LOGICAL_IMM_CHECK (sljit_ins)0x100 656  if

(

len

== 32 && (imm == 0 || imm == -1))

704

ins = (0x3f - ((

len

<< 1) - 1)) << 10;

707  return

ins | ((

len

- ones - 1) << 10) | ((

len

- ones - right) << 16);

709  return

ins | ((ones - 1) << 10) | ((

len

- right) << 16);

712 #undef COUNT_TRAILING_ZERO 724  if

(simm < 0 && simm >= -0x10000)

727  if

(imm <= 0xffffffffl) {

728  if

((imm & 0xffff) == 0)

730  if

((imm & 0xffff0000l) == 0xffff0000)

732  if

((imm & 0xffff) == 0xffff)

747  if

(simm < 0 && simm >= -0x100000000l) {

748  if

((imm & 0xffff) == 0xffff)

759  for

(

i

= 4;

i

> 0;

i

--) {

760  if

((simm & 0xffff) == 0)

762  if

((simm & 0xffff) == 0xffff)

771  for

(

i

= 0;

i

< 4;

i

++) {

772  if

(!(simm & 0xffff)) {

787  for

(

i

= 0;

i

< 4;

i

++) {

788  if

(!(simm & 0xffff)) {

803 #define ARG1_IMM 0x0010000 804 #define ARG2_IMM 0x0020000 805 #define INT_OP 0x0040000 806 #define SET_FLAGS 0x0080000 807 #define UNUSED_RETURN 0x0100000 809 #define CHECK_FLAGS(flag_bits) \ 810  if (flags & SET_FLAGS) { \ 811  inv_bits |= flag_bits; \ 812  if (flags & UNUSED_RETURN) \ 874  if

(imm > 0 && imm <= 0xfff) {

879  if

(nimm > 0 && nimm <= 0xfff) {

883  if

(imm > 0 && imm <= 0xffffff && !(imm & 0xfff)) {

887  if

(nimm > 0 && nimm <= 0xffffff && !(nimm & 0xfff)) {

905  return push_inst

(compiler, (

ANDI

^ inv_bits) |

RD

(dst) |

RN

(reg) | inst_bits);

935

inv_bits |= inv_bits >> 9;

945

inv_bits |= inv_bits >> 9;

951

inst_bits = ((

sljit_ins

)imm << 16) | (31 << 10);

1002

inv_bits |= inv_bits >> 9;

1003  return push_inst

(compiler, (

UBFM

^ inv_bits) |

RD

(dst) |

RN

(arg2) | (7 << 10));

1006

inv_bits |= inv_bits >> 9;

1007  return push_inst

(compiler, (

SBFM

^ inv_bits) |

RD

(dst) |

RN

(arg2) | (7 << 10));

1010

inv_bits |= inv_bits >> 9;

1011  return push_inst

(compiler, (

UBFM

^ inv_bits) |

RD

(dst) |

RN

(arg2) | (15 << 10));

1014

inv_bits |= inv_bits >> 9;

1015  return push_inst

(compiler, (

SBFM

^ inv_bits) |

RD

(dst) |

RN

(arg2) | (15 << 10));

1026  return push_inst

(compiler,

SBFM

| (1 << 22) |

RD

(dst) |

RN

(arg2) | (31 << 10));

1036

inv_bits |= inv_bits >> 21;

1044

inv_bits |= inv_bits >> 9;

1052  return push_inst

(compiler,

SBFM

| (1 << 22) |

RD

(dst) |

RN

(dst) | (31 << 10));

1070

compiler->status_flags_state = 0;

1109

compiler->status_flags_state = 0;

1125 #define BYTE_SIZE 0x0 1126 #define HALF_SIZE 0x1 1127 #define INT_SIZE 0x2 1128 #define WORD_SIZE 0x3 1130 #define MEM_SIZE_SHIFT(flags) ((sljit_ins)(flags) & 0x3) 1146  if

(argw == 0 || argw == shift)

1148

|

RN

(arg & REG_MASK) |

RM

(OFFS_REG(arg)) | (argw ? (1 << 12) : 0));

1159

argw = (argw >> shift) & 0xfff;

1164  if

((argw & ((1 << shift) - 1)) == 0) {

1166  if

((argw >> shift) <= 0xfff)

1169  if

(argw <= 0xffffff) {

1172

argw = ((argw & 0xfff) >> shift);

1175

}

else if

(argw < -256 && argw >= -0xfff000) {

1177

argw = ((0x1000 + argw) & 0xfff) >> shift;

1182  if

(argw <= 0xff && argw >= -0x100)

1185  if

(((argw + 0x100) & 0xfff) <= 0x1ff && argw <= 0xfff0ff && argw >= -0xfff100) {

1193  if

(!(argw & 0x100))

1215  sljit_s32

saved_arg_count = SLJIT_KEPT_SAVEDS_COUNT(options);

1219  CHECK

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

1220

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

1222

saved_regs_size = GET_SAVED_REGISTERS_SIZE(scratches, saveds - saved_arg_count, 2);

1223

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

1225

local_size = (local_size + saved_regs_size + 0xf) & ~0xf;

1228  if

(local_size <= 512) {

1231

offs = (

sljit_ins

)(local_size - 2 * SSIZE_OF(

sw

)) << (15 - 3);

1234

saved_regs_size = ((saved_regs_size - 2 * SSIZE_OF(

sw

)) + 0xf) & ~0xf;

1237

offs = (

sljit_ins

)(saved_regs_size - 2 * SSIZE_OF(

sw

)) << (15 - 3);

1238

local_size -= saved_regs_size;

1296  if

(local_size > 4096)

1302

saved_arg_count = 0;

1318  if

(local_size > 4096) {

1319  if

(local_size < 4 * 4096) {

1322  if

(local_size >= 2 * 4096) {

1323  if

(local_size >= 3 * 4096) {

1340

local_size &= 0xfff;

1348  if

(local_size > 0) {

1349  if

(local_size <= 512)

1353  if

(local_size >= 4096)

1354

local_size = (1 << (22 - 10));

1364  if

(local_size != 0) {

1365  if

(local_size > 0xfff) {

1367

local_size &= 0xfff;

1370  if

(local_size > 512 || local_size == 0) {

1371  if

(local_size != 0)

1392  CHECK

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

1393

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

1395

saved_regs_size = GET_SAVED_REGISTERS_SIZE(scratches, saveds - SLJIT_KEPT_SAVEDS_COUNT(options), 2);

1396

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

1398

compiler->

local_size

= (local_size + saved_regs_size + 0xf) & ~0xf;

1409  if

(!is_return_to) {

1410  if

(local_size > 512 && local_size <= 512 + 496) {

1417  if

(local_size > 512 && local_size <= 512 + 248) {

1424  if

(local_size > 512) {

1426  if

(local_size > 0xfff) {

1428

| (((

sljit_ins

)local_size >> 12) << 10) | (1 << 22)));

1429

local_size &= 0xfff;

1436

offs = (

sljit_ins

)(local_size - 2 * SSIZE_OF(

sw

)) << (15 - 3);

1496  CHECK

(check_sljit_emit_return_void(compiler));

1507  CHECK

(check_sljit_emit_return_to(compiler, src, srcw));

1510

ADJUST_LOCAL_OFFSET(src, srcw);

1522

SLJIT_SKIP_CHECKS(compiler);

1535  CHECK

(check_sljit_emit_op0(compiler, op));

1537

op = GET_OPCODE(op);

1573  CHECK

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

1574

ADJUST_LOCAL_OFFSET(dst, dstw);

1575

ADJUST_LOCAL_OFFSET(src, srcw);

1577

dst_r = FAST_IS_REG(dst) ? dst :

TMP_REG1

;

1579

op = GET_OPCODE(op);

1582  if

(FAST_IS_REG(dst) && FAST_IS_REG(src))

1680  CHECK

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

1681

ADJUST_LOCAL_OFFSET(dst, dstw);

1682

ADJUST_LOCAL_OFFSET(src1, src1w);

1683

ADJUST_LOCAL_OFFSET(src2, src2w);

1685

dst_r = FAST_IS_REG(dst) ? dst :

TMP_REG1

;

1729  CHECK

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

1731

SLJIT_SKIP_CHECKS(compiler);

1741  CHECK

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

1743  switch

(GET_OPCODE(op)) {

1745

SLJIT_SKIP_CHECKS(compiler);

1746  return sljit_emit_op2

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

1763  CHECK

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

1767  if

(src1_reg == src2_reg) {

1768

SLJIT_SKIP_CHECKS(compiler);

1772

ADJUST_LOCAL_OFFSET(src3, src3w);

1777  mask

= inv_bits ? 0x1f : 0x3f;

1784

src3w = (src3w ^

mask

) + 1;

1786  return push_inst

(compiler, (

EXTR

^ (inv_bits | (inv_bits >> 9))) |

RD

(dst_reg)

1787

|

RN

(is_left ? src1_reg : src2_reg) |

RM

(is_left ? src2_reg : src1_reg) | ((

sljit_ins

)src3w << 10));

1793

}

else if

(dst_reg == src3) {

1803

imm = (

sljit_ins

)(inv_bits ? ((1 << 16) | (31 << 10)) : ((1 << 16) | (63 << 10) | (1 << 22)));

1805

imm = (

sljit_ins

)(inv_bits ? ((31 << 16) | (30 << 10)) : ((63 << 16) | (62 << 10) | (1 << 22)));

1810

imm = (

sljit_ins

)(inv_bits ? (4 << 10) : ((5 << 10) | (1 << 22)));

1825  CHECK

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

1826

ADJUST_LOCAL_OFFSET(src, srcw);

1830  if

(FAST_IS_REG(src))

1867  CHECK

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

1868

ADJUST_LOCAL_OFFSET(dst, dstw);

1872  if

(FAST_IS_REG(dst))

1876

dst_r = FAST_IS_REG(dst) ? dst :

TMP_REG1

;

1889

CHECK_REG_INDEX(check_sljit_get_register_index(

type

, reg));

1905  CHECK

(check_sljit_emit_op_custom(compiler, instruction,

size

));

1924  if

(arg & OFFS_REG_MASK) {

1926  if

(argw == 0 || argw == shift)

1928

|

RN

(arg & REG_MASK) |

RM

(OFFS_REG(arg)) | (argw ? (1 << 12) : 0));

1939

argw = (argw >> shift) & 0xfff;

1944  if

(argw >= 0 && (argw & ((1 << shift) - 1)) == 0) {

1945  if

((argw >> shift) <= 0xfff)

1948  if

(argw <= 0xffffff) {

1951

argw = ((argw & 0xfff) >> shift);

1956  if

(argw <= 255 && argw >= -256)

2074

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

2076

inv_bits = (op &

SLJIT_32

) ? (1 << 22) : 0;

2077

dst_r = FAST_IS_REG(dst) ? dst :

TMP_FREG1

;

2084  switch

(GET_OPCODE(op)) {

2118  CHECK

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

2119

ADJUST_LOCAL_OFFSET(dst, dstw);

2120

ADJUST_LOCAL_OFFSET(src1, src1w);

2121

ADJUST_LOCAL_OFFSET(src2, src2w);

2123

dst_r = FAST_IS_REG(dst) ? dst :

TMP_FREG1

;

2133  switch

(GET_OPCODE(op)) {

2168  CHECK

(check_sljit_emit_fset32(compiler, freg,

value

));

2175  if

((u.imm << (32 - 19)) == 0) {

2176

exp = (u.imm >> (23 + 2)) & 0x3f;

2178  if

(exp == 0x20 || exp == 0x1f)

2179  return push_inst

(compiler, (

FMOV_I

^ (1 << 22)) | (

sljit_ins

)((((u.imm >> 24) & 0x80) | ((u.imm >> 19) & 0x7f)) << 13) |

VD

(freg));

2196  CHECK

(check_sljit_emit_fset64(compiler, freg,

value

));

2203  if

((u.imm << (64 - 48)) == 0) {

2204

exp = (u.imm >> (52 + 2)) & 0x1ff;

2206  if

(exp == 0x100 || exp == 0xff)

2220  CHECK

(check_sljit_emit_fcopy(compiler, op, freg, reg));

2223

inst =

FMOV_R

|

RN

(reg) |

VD

(freg) | (1 << 16);

2228

inst ^=

W_OP

| (1 << 22);

2331

CHECK_PTR(check_sljit_emit_label(compiler));

2338

set_label(

label

, compiler);

2347

CHECK_PTR(check_sljit_emit_jump(compiler,

type

));

2355

jump->

flags

|= IS_COND;

2358

jump->

flags

|= IS_BL;

2364

compiler->

size

+= JUMP_MAX_SIZE - 1;

2373

CHECK_PTR(check_sljit_emit_call(compiler,

type

, arg_types));

2380

SLJIT_SKIP_CHECKS(compiler);

2391

ADJUST_LOCAL_OFFSET(src, srcw);

2396

jump->

flags

|= IS_CBZ | IS_COND;

2410

inv_bits |= 1 << 24;

2417

compiler->

size

+= JUMP_MAX_SIZE - 1;

2426  CHECK

(check_sljit_emit_ijump(compiler,

type

, src, srcw));

2430

ADJUST_LOCAL_OFFSET(src, srcw);

2445

compiler->

size

+= JUMP_MAX_SIZE - 1;

2455  CHECK

(check_sljit_emit_icall(compiler,

type

, arg_types, src, srcw));

2458

ADJUST_LOCAL_OFFSET(src, srcw);

2473

SLJIT_SKIP_CHECKS(compiler);

2485  CHECK

(check_sljit_emit_op_flags(compiler, op, dst, dstw,

type

));

2486

ADJUST_LOCAL_OFFSET(dst, dstw);

2489

dst_r = FAST_IS_REG(dst) ? dst :

TMP_REG1

;

2534  CHECK

(check_sljit_emit_select(compiler,

type

, dst_reg, src1, src1w, src2_reg));

2536

ADJUST_LOCAL_OFFSET(src1, src1w);

2549  return push_inst

(compiler, (

CSEL

^ inv_bits) | (cc << 12) |

RD

(dst_reg) |

RN

(src2_reg) |

RM

(src1));

2561  CHECK

(check_sljit_emit_fselect(compiler,

type

, dst_freg, src1, src1w, src2_freg));

2563

ADJUST_LOCAL_OFFSET(src1, src1w);

2571  return push_inst

(compiler, (

FCSEL

^ inv_bits) | (cc << 12) |

VD

(dst_freg) |

VN

(src2_freg) |

VM

(src1));

2581  CHECK

(check_sljit_emit_mem(compiler,

type

, reg, mem, memw));

2583  if

(!(reg & REG_PAIR_MASK))

2584  return

sljit_emit_mem_unaligned(compiler,

type

, reg, mem, memw);

2586

ADJUST_LOCAL_OFFSET(mem, memw);

2588  if

(!(mem & REG_MASK)) {

2593

}

else if

(mem & OFFS_REG_MASK) {

2598

}

else if

((memw & 0x7) != 0 || memw > 0x1f8 || memw < -0x200) {

2605

}

else if

((memw & 0x7) == 0 && memw <= 0x7ff0) {

2614  return push_inst

(compiler, inst |

RD

(REG_PAIR_SECOND(reg)) |

RN

(mem & REG_MASK) | ((

sljit_ins

)(memw + 0x8) << 7));

2620

}

else if

((

sljit_uw

)memw <= 0xffffff) {

2623  if

((memw & 0xe07) != 0) {

2641  SLJIT_ASSERT

((memw & 0x7) == 0 && memw <= 0x1f8 && memw >= -0x200);

2652  CHECK

(check_sljit_emit_mem_update(compiler,

type

, reg, mem, memw));

2654  if

((mem & OFFS_REG_MASK) || (memw > 255 || memw < -256))

2660  switch

(

type

& 0xff) {

2691

inst |= sign ? 0x00800000 : 0x00400000;

2696  return push_inst

(compiler, inst |

RT

(reg) |

RN

(mem & REG_MASK) | (

sljit_ins

)((memw & 0x1ff) << 12));

2706  CHECK

(check_sljit_emit_fmem_update(compiler,

type

, freg, mem, memw));

2708  if

((mem & OFFS_REG_MASK) || (memw > 255 || memw < -256))

2725  return push_inst

(compiler, inst |

VT

(freg) |

RN

(mem & REG_MASK) | (

sljit_ins

)((memw & 0x1ff) << 12));

2738  if

(!(mem & REG_MASK)) {

2752  if

(memw < -0xffffff || memw > 0xffffff) {

2786  CHECK

(check_sljit_emit_simd_mov(compiler,

type

, freg, srcdst, srcdstw));

2788

ADJUST_LOCAL_OFFSET(srcdst, srcdstw);

2790  if

(reg_size != 3 && reg_size != 4)

2801

ins =

VD

(srcdst) |

VN

(freg) |

VM

(freg);

2803

ins =

VD

(freg) |

VN

(srcdst) |

VM

(srcdst);

2843  switch

(elem_size) {

2853  if

(

value

<= 0xff) {

2858  if

((

value

& 0xff) == 0) {

2876  if

(

value

<= 0xff) {

2934  CHECK

(check_sljit_emit_simd_replicate(compiler,

type

, freg, src, srcw));

2936

ADJUST_LOCAL_OFFSET(src, srcw);

2938  if

(reg_size != 3 && reg_size != 4)

2958

ins = (

sljit_ins

)1 << (16 + elem_size);

2998  CHECK

(check_sljit_emit_simd_lane_mov(compiler,

type

, freg, lane_index, srcdst, srcdstw));

3000

ADJUST_LOCAL_OFFSET(srcdst, srcdstw);

3002  if

(reg_size != 3 && reg_size != 4)

3012

ins = (reg_size == 3) ? 0 : ((

sljit_ins

)1 << 30);

3028  else if

(elem_size == 0)

3033

lane_index = lane_index << elem_size;

3034

ins |= (

sljit_ins

)(((lane_index & 0x8) << 27) | ((lane_index & 0x7) << 10));

3043

ins =

INS_e

| ((((

sljit_ins

)lane_index << 1) | 1) << (16 + elem_size)) |

VD

(freg) |

VN

(srcdst);

3057

ins =

RD

(srcdst) |

VN

(freg);

3067

ins =

INS

|

VD

(freg) |

RN

(srcdst);

3072  return push_inst

(compiler, ins | ((((

sljit_ins

)lane_index << 1) | 1) << (16 + elem_size)));

3084  CHECK

(check_sljit_emit_simd_lane_replicate(compiler,

type

, freg, src, src_lane_index));

3086  if

(reg_size != 3 && reg_size != 4)

3095

ins = (((

sljit_ins

)src_lane_index << 1) | 1) << (16 + elem_size);

3112  CHECK

(check_sljit_emit_simd_extend(compiler,

type

, freg, src, srcw));

3114

ADJUST_LOCAL_OFFSET(src, srcw);

3116  if

(reg_size != 3 && reg_size != 4)

3128  if

(reg_size == 4 && elem2_size - elem_size == 1)

3142

| ((

sljit_ins

)1 << (19 + elem_size)) |

VD

(freg) |

VN

(src)));

3144

}

while

(++elem_size < elem2_size);

3159  CHECK

(check_sljit_emit_simd_sign(compiler,

type

, freg, dst, dstw));

3161

ADJUST_LOCAL_OFFSET(dst, dstw);

3163  if

(reg_size != 3 && reg_size != 4)

3172  switch

(elem_size) {

3175

ins =

USHR

| (0x9 << 16);

3178

imms = (reg_size == 4) ? 0x643219 : 0x6231;

3179

ins =

USHR

| (0x11 << 16);

3182

imms = (reg_size == 4) ? 0x6231 : 0x61;

3183

ins =

USHR

| (0x21 << 16);

3187

ins =

USHR

| (0x41 << 16);

3196  if

(reg_size == 4 && elem_size > 0)

3199  if

(imms >= 0x100) {

3200

ins = (reg_size == 4 && elem_size == 0) ? (1 << 30) : 0;

3205

}

while

(imms >= 0x100);

3210

dst_r = FAST_IS_REG(dst) ? dst :

TMP_REG2

;

3213  if

(reg_size == 4 && elem_size == 0) {

3234  CHECK

(check_sljit_emit_simd_op2(compiler,

type

, dst_freg, src1_freg, src2_freg));

3236  if

(reg_size != 3 && reg_size != 4)

3242  switch

(SLJIT_SIMD_GET_OPCODE(

type

)) {

3260  return push_inst

(compiler, ins |

VD

(dst_freg) |

VN

(src1_freg) |

VM

(src2_freg));

3270  CHECK

(check_sljit_emit_atomic_load(compiler, op, dst_reg, mem_reg));

3272 #ifdef __ARM_FEATURE_ATOMICS 3273  switch

(GET_OPCODE(op)) {

3276

ins =

LDR

^ (1 << 30);

3289  switch

(GET_OPCODE(op)) {

3292

ins =

LDXR

^ (1 << 30);

3305  return push_inst

(compiler, ins |

RN

(mem_reg) |

RT

(dst_reg));

3319  CHECK

(check_sljit_emit_atomic_store(compiler, op, src_reg, mem_reg, temp_reg));

3321 #ifdef __ARM_FEATURE_ATOMICS 3325  switch

(GET_OPCODE(op)) {

3328

ins =

CAS

^ (1 << 30);

3362  switch

(GET_OPCODE(op)) {

3365

ins =

STXR

^ (1 << 30);

3389  CHECK

(check_sljit_get_local_base(compiler, dst, dstw,

offset

));

3392

dst_reg = FAST_IS_REG(dst) ? dst :

TMP_REG1

;

3395  if

(offset <= 0xffffff && offset >= -0xffffff) {

3429

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

3430

ADJUST_LOCAL_OFFSET(dst, dstw);

3434

set_const(const_, compiler);

3436

dst_r = FAST_IS_REG(dst) ? dst :

TMP_REG1

;

3450

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

3451

ADJUST_LOCAL_OFFSET(dst, dstw);

3453

dst_r = FAST_IS_REG(dst) ? dst :

TMP_REG1

;

3458

set_mov_addr(jump, compiler, 1);

3460

compiler->

size

+= 3;

3476

dst = inst[0] & 0x1f;

3477  SLJIT_ASSERT

((inst[0] & 0xffe00000) ==

MOVZ

&& (inst[1] & 0xffe00000) == (

MOVK

| (1 << 21)));

3478

inst[0] =

MOVZ

| dst | (((

sljit_u32

)new_target & 0xffff) << 5);

3479

inst[1] =

MOVK

| dst | (((

sljit_u32

)(new_target >> 16) & 0xffff) << 5) | (1 << 21);

3480

inst[2] =

MOVK

| dst | (((

sljit_u32

)(new_target >> 32) & 0xffff) << 5) | (2 << 21);

3481

inst[3] =

MOVK

| dst | ((

sljit_u32

)(new_target >> 48) << 5) | (3 << 21);

3484

inst = (

sljit_ins

*)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset);

ncbi::TMaskedQueryRegions mask

#define CHECK_ERROR(name, s)

static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)

static DLIST_TYPE *DLIST_NAME() prev(DLIST_LIST_TYPE *list, DLIST_TYPE *item)

static const char label[]

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

#define SLJIT_ATOMIC_NOT_STORED

#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_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_COPYSIGN_F64

#define SLJIT_ORDERED_EQUAL

#define SLJIT_ERR_UNSUPPORTED

#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_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_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_SIMD_REG_128

#define SLJIT_F_LESS_EQUAL

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

#define SLJIT_CURRENT_FLAGS_SUB

#define SLJIT_PREFETCH_ONCE

#define SLJIT_ORDERED_NOT_EQUAL

#define SLJIT_UNORDERED_OR_GREATER_EQUAL

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 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]

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

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 void generate_jump_or_mov_addr(struct sljit_jump *jump, 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_cmp_info(sljit_s32 type)

static sljit_s32 load_immediate(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw simm)

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)

static sljit_ins get_cc(struct sljit_compiler *compiler, sljit_s32 type)

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_s32 sljit_emit_simd_mem_offset(struct sljit_compiler *compiler, sljit_s32 *mem_ptr, sljit_sw memw)

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

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

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)

#define CHECK_FLAGS(flag_bits)

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)

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)

#define COUNT_TRAILING_ZERO(value, result)

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

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

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 sljit_s32 sljit_emit_op0(struct sljit_compiler *compiler, sljit_s32 op)

static SLJIT_INLINE sljit_s32 emit_imm64_const(struct sljit_compiler *compiler, sljit_s32 dst, sljit_uw imm)

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_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_s32 sljit_emit_simd_mov(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 freg, sljit_s32 srcdst, sljit_sw srcdstw)

static sljit_ins logical_imm(sljit_sw imm, sljit_u32 len)

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 struct sljit_jump * emit_cmp_to0(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 src, sljit_sw srcw)

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

#define LOGICAL_IMM_CHECK

SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fset64(struct sljit_compiler *compiler, sljit_s32 freg, sljit_f64 value)

static sljit_s32 emit_op_imm(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 dst, sljit_sw arg1, sljit_sw arg2)

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

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)

#define MEM_SIZE_SHIFT(flags)

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)

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)

static const sljit_u8 reg_map[SLJIT_NUMBER_OF_REGISTERS+8]

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)

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 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_INLINE sljit_sw mov_addr_get_length(struct sljit_jump *jump, sljit_ins *code_ptr, sljit_ins *code, sljit_sw executable_offset)

static sljit_ins simd_get_imm(sljit_s32 elem_size, sljit_uw value)

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)

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)

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)

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)

#define SLJIT_IS_FPU_AVAILABLE

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