31 if (imm <= SIMM_MAX && imm >=
SIMM_MIN)
32 return push_inst(compiler,
ADDI |
D(reg) |
A(0) |
IMM(imm));
42#define INS_CLEAR_LEFT(dst, src, from) \
43 (RLWINM | S(src) | A(dst) | RLWI_MBE(from, 31))
57 return push_inst(compiler,
OR |
S(src2) |
A(dst) |
B(src2));
65 return push_inst(compiler,
EXTSB |
S(src2) |
A(dst));
69 return push_inst(compiler,
EXTSB |
S(src2) |
A(dst));
80 return push_inst(compiler,
EXTSH |
S(src2) |
A(dst));
90 return push_inst(compiler,
CNTLZW |
S(src2) |
A(dst));
113 return push_inst(compiler,
ADDIS |
D(dst) |
A(src1) | compiler->imm);
118 FAIL_IF(push_inst(compiler,
ADDIS |
D(dst) |
A(src1) | (((imm >> 16) & 0xffff) + ((imm >> 15) & 0x1))));
122 return push_inst(compiler,
ADDI |
D(dst) |
A(src1) | (imm & 0xffff));
126 return push_inst(compiler,
ADDIC |
D(dst) |
A(src1) | compiler->imm);
130 return push_inst(compiler,
ADD |
D(dst) |
A(src1) |
B(src2));
133 return push_inst(compiler,
ADD |
RC(
flags) |
D(dst) |
A(src1) |
B(src2));
136 return push_inst(compiler,
ADDE |
D(dst) |
A(src1) |
B(src2));
144 return push_inst(compiler,
ADDI |
D(dst) |
A(src1) | (-compiler->imm & 0xffff));
149 return push_inst(compiler,
SUBF |
D(dst) |
A(src2) |
B(src1));
157 return push_inst(compiler,
ADDI |
D(dst) |
A(src1) | (-compiler->imm & 0xffff));
162 return push_inst(compiler,
SUBF |
D(dst) |
A(src2) |
B(src1));
175 return push_inst(compiler,
SUBFIC |
D(dst) |
A(src1) | compiler->imm);
180 return push_inst(compiler,
SUBF |
D(dst) |
A(src2) |
B(src1));
191 return push_inst(compiler,
SUBFE |
D(dst) |
A(src2) |
B(src1));
196 return push_inst(compiler,
MULLI |
D(dst) |
A(src1) | compiler->imm);
203 return push_inst(compiler,
ANDI |
S(src1) |
A(dst) | compiler->imm);
207 return push_inst(compiler,
ANDIS |
S(src1) |
A(dst) | compiler->imm);
209 return push_inst(compiler,
AND |
RC(
flags) |
S(src1) |
A(dst) |
B(src2));
214 return push_inst(compiler,
ORI |
S(src1) |
A(dst) | compiler->imm);
218 return push_inst(compiler,
ORIS |
S(src1) |
A(dst) | compiler->imm);
225 return push_inst(compiler,
ORIS |
S(dst) |
A(dst) |
IMM(imm >> 16));
227 return push_inst(compiler,
OR |
RC(
flags) |
S(src1) |
A(dst) |
B(src2));
232 return push_inst(compiler,
XORI |
S(src1) |
A(dst) | compiler->imm);
236 return push_inst(compiler,
XORIS |
S(src1) |
A(dst) | compiler->imm);
243 return push_inst(compiler,
XORIS |
S(dst) |
A(dst) |
IMM(imm >> 16));
247 return push_inst(compiler,
NOR |
RC(
flags) |
S(src2) |
A(dst) |
B(src2));
249 return push_inst(compiler,
XOR |
RC(
flags) |
S(src1) |
A(dst) |
B(src2));
255 imm = compiler->imm & 0x1f;
256 return push_inst(compiler,
SLWI(imm) |
RC(
flags) |
S(src1) |
A(dst));
264 return push_inst(compiler,
SLW |
RC(
flags) |
S(src1) |
A(dst) |
B(src2));
270 imm = compiler->imm & 0x1f;
280 return push_inst(compiler,
SRW |
RC(
flags) |
S(src1) |
A(dst) |
B(src2));
286 imm = compiler->imm & 0x1f;
287 return push_inst(compiler,
SRAWI |
RC(
flags) |
S(src1) |
A(dst) | (imm << 11));
295 return push_inst(compiler,
SRAW |
RC(
flags) |
S(src1) |
A(dst) |
B(src2));
315 return push_inst(compiler,
RLWNM |
S(src1) |
A(dst) |
B(src2) |
RLWI_MBE(0, 31));
325 return push_inst(compiler,
ORI |
S(reg) |
A(reg) |
IMM(init_value));
339 }
else if (!FAST_IS_REG(src)) {
379 }
else if (!FAST_IS_REG(src)) {
416 CHECK(check_sljit_emit_fset64(compiler, freg,
value));
437 CHECK(check_sljit_emit_fcopy(compiler, op, freg, reg));
449 if (reg & REG_PAIR_MASK) {
450 reg2 = REG_PAIR_SECOND(reg);
451 reg = REG_PAIR_FIRST(reg);
480 inst[0] = (inst[0] & 0xffff0000) | ((new_target >> 16) & 0xffff);
481 inst[1] = (inst[1] & 0xffff0000) | (new_target & 0xffff);
483 inst = (
sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset);
#define SLJIT_UNREACHABLE()
#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 SLJIT_COPY_TO_F64
#define SLJIT_COPY32_TO_F32
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_fset64(struct sljit_compiler *compiler, sljit_s32 freg, sljit_f64 value)
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset)
#define INS_CLEAR_LEFT(dst, src, from)
#define TMP_MEM_OFFSET_HI
#define TMP_MEM_OFFSET_LO