Lines Matching refs:imm
318 u32 insn, u64 imm) in aarch64_insn_encode_immediate() argument
329 immlo = (imm & ADR_IMM_LOMASK) << ADR_IMM_LOSHIFT; in aarch64_insn_encode_immediate()
330 imm >>= ADR_IMM_HILOSPLIT; in aarch64_insn_encode_immediate()
331 immhi = (imm & ADR_IMM_HIMASK) << ADR_IMM_HISHIFT; in aarch64_insn_encode_immediate()
332 imm = immlo | immhi; in aarch64_insn_encode_immediate()
346 insn |= (imm & mask) << shift; in aarch64_insn_encode_immediate()
838 int imm, enum aarch64_insn_variant variant, in aarch64_insn_gen_add_sub_imm() argument
873 if (imm & ~(BIT(24) - 1)) in aarch64_insn_gen_add_sub_imm()
877 if (imm & ~(SZ_4K - 1)) { in aarch64_insn_gen_add_sub_imm()
879 if (imm & (SZ_4K - 1)) in aarch64_insn_gen_add_sub_imm()
882 imm >>= 12; in aarch64_insn_gen_add_sub_imm()
890 return aarch64_insn_encode_immediate(AARCH64_INSN_IMM_12, insn, imm); in aarch64_insn_gen_add_sub_imm()
893 pr_err("%s: invalid immediate encoding %d\n", __func__, imm); in aarch64_insn_gen_add_sub_imm()
953 int imm, int shift, in aarch64_insn_gen_movewide() argument
974 if (imm & ~(SZ_64K - 1)) { in aarch64_insn_gen_movewide()
975 pr_err("%s: invalid immediate encoding %d\n", __func__, imm); in aarch64_insn_gen_movewide()
1004 return aarch64_insn_encode_immediate(AARCH64_INSN_IMM_16, insn, imm); in aarch64_insn_gen_movewide()
1307 s32 imm; in aarch64_get_branch_offset() local
1310 imm = aarch64_insn_decode_immediate(AARCH64_INSN_IMM_26, insn); in aarch64_get_branch_offset()
1311 return (imm << 6) >> 4; in aarch64_get_branch_offset()
1316 imm = aarch64_insn_decode_immediate(AARCH64_INSN_IMM_19, insn); in aarch64_get_branch_offset()
1317 return (imm << 13) >> 11; in aarch64_get_branch_offset()
1321 imm = aarch64_insn_decode_immediate(AARCH64_INSN_IMM_14, insn); in aarch64_get_branch_offset()
1322 return (imm << 18) >> 16; in aarch64_get_branch_offset()
1506 static u32 aarch64_encode_immediate(u64 imm, in aarch64_encode_immediate() argument
1514 if (!imm || !~imm) in aarch64_encode_immediate()
1519 if (upper_32_bits(imm)) in aarch64_encode_immediate()
1539 if ((imm & emask) != ((imm >> tmp) & emask)) in aarch64_encode_immediate()
1550 imm &= mask; in aarch64_encode_immediate()
1553 ones = hweight64(imm); in aarch64_encode_immediate()
1564 if (range_of_ones(imm)) { in aarch64_encode_immediate()
1570 ror = __ffs64(imm); in aarch64_encode_immediate()
1579 imm |= ~mask; in aarch64_encode_immediate()
1580 if (!range_of_ones(~imm)) in aarch64_encode_immediate()
1587 ror = fls(~imm); in aarch64_encode_immediate()
1606 u64 imm) in aarch64_insn_gen_logical_immediate() argument
1630 return aarch64_encode_immediate(imm, variant, insn); in aarch64_insn_gen_logical_immediate()