Lines Matching defs:imm
113 u32 insn, u64 imm)
124 immlo = (imm & ADR_IMM_LOMASK) << ADR_IMM_LOSHIFT;
125 imm >>= ADR_IMM_HILOSPLIT;
126 immhi = (imm & ADR_IMM_HIMASK) << ADR_IMM_HISHIFT;
127 imm = immlo | immhi;
141 insn |= (imm & mask) << shift;
412 unsigned int imm,
425 if (imm & ~(BIT(12 + shift) - BIT(shift))) {
426 pr_err("%s: invalid imm: %d\n", __func__, imm);
430 imm >>= shift;
454 return aarch64_insn_encode_immediate(AARCH64_INSN_IMM_12, insn, imm);
732 int imm, enum aarch64_insn_variant variant,
767 if (imm & ~(BIT(24) - 1))
771 if (imm & ~(SZ_4K - 1)) {
773 if (imm & (SZ_4K - 1))
776 imm >>= 12;
784 return aarch64_insn_encode_immediate(AARCH64_INSN_IMM_12, insn, imm);
787 pr_err("%s: invalid immediate encoding %d\n", __func__, imm);
847 int imm, int shift,
868 if (imm & ~(SZ_64K - 1)) {
869 pr_err("%s: invalid immediate encoding %d\n", __func__, imm);
898 return aarch64_insn_encode_immediate(AARCH64_INSN_IMM_16, insn, imm);
1208 * Decode the imm field of a branch, and return the byte offset as a
1214 s32 imm;
1217 imm = aarch64_insn_decode_immediate(AARCH64_INSN_IMM_26, insn);
1218 return (imm << 6) >> 4;
1223 imm = aarch64_insn_decode_immediate(AARCH64_INSN_IMM_19, insn);
1224 return (imm << 13) >> 11;
1228 imm = aarch64_insn_decode_immediate(AARCH64_INSN_IMM_14, insn);
1229 return (imm << 18) >> 16;
1237 * Encode the displacement of a branch in the imm field and return the
1315 static u32 aarch64_encode_immediate(u64 imm,
1338 if (!imm || imm == mask || imm & ~mask)
1348 if ((imm & emask) != ((imm >> tmp) & emask))
1358 /* Trim imm to the element size */
1359 imm &= mask;
1362 ones = hweight64(imm);
1373 if (range_of_ones(imm)) {
1379 ror = __ffs64(imm);
1388 imm |= ~mask;
1389 if (!range_of_ones(~imm))
1396 ror = fls64(~imm);
1415 u64 imm)
1439 return aarch64_encode_immediate(imm, variant, insn);