Lines Matching full:imm
42 static sljit_s32 load_immediate(struct sljit_compiler *compiler, sljit_s32 reg, sljit_sw imm) in load_immediate() argument
49 if (imm <= SIMM_MAX && imm >= SIMM_MIN) in load_immediate()
50 return push_inst(compiler, ADDI | D(reg) | A(0) | IMM(imm)); in load_immediate()
52 if (((sljit_uw)imm >> 16) == 0) in load_immediate()
53 return push_inst(compiler, ORI | S(TMP_ZERO) | A(reg) | IMM(imm)); in load_immediate()
55 if (imm <= 0x7fffffffl && imm >= -0x80000000l) { in load_immediate()
56 FAIL_IF(push_inst(compiler, ADDIS | D(reg) | A(0) | IMM(imm >> 16))); in load_immediate()
57 return (imm & 0xffff) ? push_inst(compiler, ORI | S(reg) | A(reg) | IMM(imm)) : SLJIT_SUCCESS; in load_immediate()
60 if (((sljit_uw)imm >> 32) == 0) { in load_immediate()
61 FAIL_IF(push_inst(compiler, ORIS | S(TMP_ZERO) | A(reg) | IMM(imm >> 16))); in load_immediate()
62 return (imm & 0xffff) ? push_inst(compiler, ORI | S(reg) | A(reg) | IMM(imm)) : SLJIT_SUCCESS; in load_immediate()
66 tmp = (sljit_uw)((imm >= 0) ? imm : ~imm); in load_immediate()
70 tmp = ((sljit_uw)imm << shift); in load_immediate()
80 FAIL_IF(push_inst(compiler, ORI | S(reg) | A(reg) | IMM(tmp >> 32))); in load_immediate()
87 tmp2 = (sljit_uw)imm & (((sljit_uw)1 << (63 - shift)) - 1); in load_immediate()
96 FAIL_IF(push_inst(compiler, ADDI | D(reg) | A(0) | IMM(tmp >> 48))); in load_immediate()
99 return (imm & 0xffff) ? push_inst(compiler, ORI | S(reg) | A(reg) | IMM(tmp2)) : SLJIT_SUCCESS; in load_immediate()
115 FAIL_IF(push_inst(compiler, ADDIS | D(reg) | A(0) | (sljit_ins)((sljit_uw)imm >> 48))); in load_immediate()
116 FAIL_IF(push_inst(compiler, ORI | S(reg) | A(reg) | IMM(imm >> 32))); in load_immediate()
118 FAIL_IF(push_inst(compiler, ORIS | S(reg) | A(reg) | IMM(imm >> 16))); in load_immediate()
119 return push_inst(compiler, ORI | S(reg) | A(reg) | IMM(imm)); in load_immediate()
155 sljit_u32 imm; in emit_single_op() local
215 FAIL_IF(push_inst(compiler, ADDI | D(TMP_REG1) | A(dst) | IMM((flags & ALT_FORM1) ? -32 : -64))); in emit_single_op()
240 return push_inst(compiler, ADDIS | D(dst) | A(src1) | compiler->imm); in emit_single_op()
242 imm = compiler->imm; in emit_single_op()
245 …FAIL_IF(push_inst(compiler, ADDIS | D(dst) | A(src1) | (((imm >> 16) & 0xffff) + ((imm >> 15) & 0x… in emit_single_op()
249 return push_inst(compiler, ADDI | D(dst) | A(src1) | (imm & 0xffff)); in emit_single_op()
254 return push_inst(compiler, ADDIC | D(dst) | A(src1) | compiler->imm); in emit_single_op()
258 FAIL_IF(push_inst(compiler, ADDI | D(dst) | A(src1) | compiler->imm)); in emit_single_op()
277 …(push_inst(compiler, CMPLI | CRD(0 | ((flags & ALT_SIGN_EXT) ? 0 : 1)) | A(src1) | compiler->imm)); in emit_single_op()
280 return push_inst(compiler, ADDI | D(dst) | A(src1) | (-compiler->imm & 0xffff)); in emit_single_op()
290 …F(push_inst(compiler, CMPI | CRD(0 | ((flags & ALT_SIGN_EXT) ? 0 : 1)) | A(src1) | compiler->imm)); in emit_single_op()
293 return push_inst(compiler, ADDI | D(dst) | A(src1) | (-compiler->imm & 0xffff)); in emit_single_op()
327 return push_inst(compiler, SUBFIC | D(dst) | A(src1) | compiler->imm); in emit_single_op()
350 return push_inst(compiler, MULLI | D(dst) | A(src1) | compiler->imm); in emit_single_op()
360 return push_inst(compiler, ANDI | S(src1) | A(dst) | compiler->imm); in emit_single_op()
364 return push_inst(compiler, ANDIS | S(src1) | A(dst) | compiler->imm); in emit_single_op()
371 return push_inst(compiler, ORI | S(src1) | A(dst) | compiler->imm); in emit_single_op()
375 return push_inst(compiler, ORIS | S(src1) | A(dst) | compiler->imm); in emit_single_op()
379 imm = compiler->imm; in emit_single_op()
381 FAIL_IF(push_inst(compiler, ORI | S(src1) | A(dst) | IMM(imm))); in emit_single_op()
382 return push_inst(compiler, ORIS | S(dst) | A(dst) | IMM(imm >> 16)); in emit_single_op()
389 return push_inst(compiler, XORI | S(src1) | A(dst) | compiler->imm); in emit_single_op()
393 return push_inst(compiler, XORIS | S(src1) | A(dst) | compiler->imm); in emit_single_op()
397 imm = compiler->imm; in emit_single_op()
399 FAIL_IF(push_inst(compiler, XORI | S(src1) | A(dst) | IMM(imm))); in emit_single_op()
400 return push_inst(compiler, XORIS | S(dst) | A(dst) | IMM(imm >> 16)); in emit_single_op()
413 imm = compiler->imm; in emit_single_op()
416 imm &= 0x1f; in emit_single_op()
417 return push_inst(compiler, SLWI(imm) | RC(flags) | S(src1) | A(dst)); in emit_single_op()
420 imm &= 0x3f; in emit_single_op()
421 return push_inst(compiler, SLDI(imm) | RC(flags) | S(src1) | A(dst)); in emit_single_op()
435 imm = compiler->imm; in emit_single_op()
438 imm &= 0x1f; in emit_single_op()
439 /* Since imm can be 0, SRWI() cannot be used. */ in emit_single_op()
440 …(compiler, RLWINM | RC(flags) | S(src1) | A(dst) | RLWI_SH((32 - imm) & 0x1f) | RLWI_MBE(imm, 31)); in emit_single_op()
443 imm &= 0x3f; in emit_single_op()
444 /* Since imm can be 0, SRDI() cannot be used. */ in emit_single_op()
445 …_inst(compiler, RLDICL | RC(flags) | S(src1) | A(dst) | RLDI_SH((64 - imm) & 0x3f) | RLDI_MB(imm)); in emit_single_op()
459 imm = compiler->imm; in emit_single_op()
462 imm &= 0x1f; in emit_single_op()
463 return push_inst(compiler, SRAWI | RC(flags) | S(src1) | A(dst) | (imm << 11)); in emit_single_op()
466 imm &= 0x3f; in emit_single_op()
467 return push_inst(compiler, SRADI | RC(flags) | S(src1) | A(dst) | RLDI_SH(imm)); in emit_single_op()
481 imm = compiler->imm; in emit_single_op()
484 imm = (sljit_u32)(-(sljit_s32)imm); in emit_single_op()
487 imm &= 0x1f; in emit_single_op()
488 return push_inst(compiler, RLWINM | S(src1) | A(dst) | RLWI_SH(imm) | RLWI_MBE(0, 31)); in emit_single_op()
491 imm &= 0x3f; in emit_single_op()
492 return push_inst(compiler, RLDICL | S(src1) | A(dst) | RLDI_SH(imm)); in emit_single_op()
564 FAIL_IF(push_inst(compiler, ADDIS | D(reg) | A(0) | IMM(init_value >> 48))); in emit_const()
565 FAIL_IF(push_inst(compiler, ORI | S(reg) | A(reg) | IMM(init_value >> 32))); in emit_const()
567 FAIL_IF(push_inst(compiler, ORIS | S(reg) | A(reg) | IMM(init_value >> 16))); in emit_const()
568 return push_inst(compiler, ORI | S(reg) | A(reg) | IMM(init_value)); in emit_const()
675 sljit_sw imm; in sljit_emit_fset64() member
684 if (u.imm != 0) in sljit_emit_fset64()
685 FAIL_IF(load_immediate(compiler, TMP_REG1, u.imm)); in sljit_emit_fset64()
687 …FAIL_IF(push_inst(compiler, STD | S(u.imm != 0 ? TMP_REG1 : TMP_ZERO) | A(SLJIT_SP) | TMP_MEM_OFFS… in sljit_emit_fset64()