Lines Matching defs:imm
385 static SLJIT_INLINE sljit_s32 emit_imm(struct sljit_compiler *compiler, sljit_s32 reg, sljit_sw imm)
387 FAIL_IF(push_inst(compiler, MOVW | RD(reg) | ((imm << 4) & 0xf0000) | (imm & 0xfff)));
388 return push_inst(compiler, MOVT | RD(reg) | ((imm >> 12) & 0xf0000) | ((imm >> 16) & 0xfff));
511 static sljit_uw get_imm(sljit_uw imm);
868 #define TYPE2_TRANSFER_IMM(imm) \
869 (((imm) & 0xf) | (((imm) & 0xf0) << 4) | (1 << 22))
978 src2: reg or imm (if allowed)
1124 /* Tests whether the immediate can be stored in the 12 bit imm field.
1126 static sljit_uw get_imm(sljit_uw imm)
1130 if (imm <= 0xff)
1131 return SRC2_IMM | imm;
1133 if (!(imm & 0xff000000)) {
1134 imm <<= 8;
1138 imm = (imm << 24) | (imm >> 8);
1142 if (!(imm & 0xff000000)) {
1143 imm <<= 8;
1147 if (!(imm & 0xf0000000)) {
1148 imm <<= 4;
1152 if (!(imm & 0xc0000000)) {
1153 imm <<= 2;
1157 if (!(imm & 0x00ffffff))
1158 return SRC2_IMM | (imm >> 24) | (rol << 8);
1164 static sljit_s32 generate_int(struct sljit_compiler *compiler, sljit_s32 reg, sljit_uw imm, sljit_s32 positive)
1175 if (!(imm & mask)) {
1176 /* Rol imm by rol. */
1177 imm = (imm << rol) | (imm >> (32 - rol));
1186 imm = (imm << 8) | (imm >> 24);
1190 if (!(imm & mask)) {
1191 /* Rol imm by rol. */
1192 imm = (imm << rol) | (imm >> (32 - rol));
1207 SLJIT_ASSERT(!(imm & 0xff));
1209 if (!(imm & 0xff000000)) {
1210 imm1 = SRC2_IMM | ((imm >> 16) & 0xff) | (((rol + 4) & 0xf) << 8);
1211 imm2 = SRC2_IMM | ((imm >> 8) & 0xff) | (((rol + 8) & 0xf) << 8);
1213 else if (imm & 0xc0000000) {
1214 imm1 = SRC2_IMM | ((imm >> 24) & 0xff) | ((rol & 0xf) << 8);
1215 imm <<= 8;
1218 if (!(imm & 0xff000000)) {
1219 imm <<= 8;
1223 if (!(imm & 0xf0000000)) {
1224 imm <<= 4;
1228 if (!(imm & 0xc0000000)) {
1229 imm <<= 2;
1233 if (!(imm & 0x00ffffff))
1234 imm2 = SRC2_IMM | (imm >> 24) | ((rol & 0xf) << 8);
1239 if (!(imm & 0xf0000000)) {
1240 imm <<= 4;
1244 if (!(imm & 0xc0000000)) {
1245 imm <<= 2;
1249 imm1 = SRC2_IMM | ((imm >> 24) & 0xff) | ((rol & 0xf) << 8);
1250 imm <<= 8;
1253 if (!(imm & 0xf0000000)) {
1254 imm <<= 4;
1258 if (!(imm & 0xc0000000)) {
1259 imm <<= 2;
1263 if (!(imm & 0x00ffffff))
1264 imm2 = SRC2_IMM | (imm >> 24) | ((rol & 0xf) << 8);
1275 static sljit_s32 load_immediate(struct sljit_compiler *compiler, sljit_s32 reg, sljit_uw imm)
1280 if (!(imm & ~0xffff))
1281 return push_inst(compiler, MOVW | RD(reg) | ((imm << 4) & 0xf0000) | (imm & 0xfff));
1284 /* Create imm by 1 inst. */
1285 tmp = get_imm(imm);
1289 tmp = get_imm(~imm);
1294 /* Create imm by 2 inst. */
1295 FAIL_IF(generate_int(compiler, reg, imm, 1));
1296 FAIL_IF(generate_int(compiler, reg, ~imm, 0));
1299 return push_inst_with_literal(compiler, EMIT_DATA_TRANSFER(WORD_DATA | LOAD_DATA, 1, 0, reg, TMP_PC, 0), imm);
1301 return emit_imm(compiler, reg, imm);
1308 sljit_uw offset_reg, imm;
1343 imm = get_imm(argw & ~0xfff);
1344 if (imm) {
1346 FAIL_IF(push_inst(compiler, EMIT_DATA_PROCESS_INS(ADD_DP, 0, offset_reg, arg, imm)));
1352 imm = get_imm(-argw & ~0xfff);
1353 if (imm) {
1355 FAIL_IF(push_inst(compiler, EMIT_DATA_PROCESS_INS(SUB_DP, 0, offset_reg, arg, imm)));
1370 imm = get_imm(argw & ~0xff);
1371 if (imm) {
1373 FAIL_IF(push_inst(compiler, EMIT_DATA_PROCESS_INS(ADD_DP, 0, offset_reg, arg, imm)));
1379 imm = get_imm(-argw & ~0xff);
1380 if (imm) {
1382 FAIL_IF(push_inst(compiler, EMIT_DATA_PROCESS_INS(SUB_DP, 0, offset_reg, arg, imm)));
1408 src2 is reg, TMP_REG2, or imm
1803 sljit_uw imm;
1822 imm = get_imm(argw & ~0x3fc);
1823 if (imm) {
1824 FAIL_IF(push_inst(compiler, EMIT_DATA_PROCESS_INS(ADD_DP, 0, TMP_REG2, arg & REG_MASK, imm)));
1827 imm = get_imm(-argw & ~0x3fc);
1828 if (imm) {
1830 FAIL_IF(push_inst(compiler, EMIT_DATA_PROCESS_INS(SUB_DP, 0, TMP_REG2, arg & REG_MASK, imm)));