Lines Matching refs:instr

30 u16 br_get_offset(u64 instr)  in br_get_offset()  argument
34 addr_lo = FIELD_GET(OP_BR_ADDR_LO, instr); in br_get_offset()
35 addr_hi = FIELD_GET(OP_BR_ADDR_HI, instr); in br_get_offset()
41 void br_set_offset(u64 *instr, u16 offset) in br_set_offset() argument
47 *instr &= ~(OP_BR_ADDR_HI | OP_BR_ADDR_LO); in br_set_offset()
48 *instr |= FIELD_PREP(OP_BR_ADDR_HI, addr_hi); in br_set_offset()
49 *instr |= FIELD_PREP(OP_BR_ADDR_LO, addr_lo); in br_set_offset()
52 void br_add_offset(u64 *instr, u16 offset) in br_add_offset() argument
56 addr = br_get_offset(*instr); in br_add_offset()
57 br_set_offset(instr, addr + offset); in br_add_offset()
60 static bool immed_can_modify(u64 instr) in immed_can_modify() argument
62 if (FIELD_GET(OP_IMMED_INV, instr) || in immed_can_modify()
63 FIELD_GET(OP_IMMED_SHIFT, instr) || in immed_can_modify()
64 FIELD_GET(OP_IMMED_WIDTH, instr) != IMMED_WIDTH_ALL) { in immed_can_modify()
71 u16 immed_get_value(u64 instr) in immed_get_value() argument
75 if (!immed_can_modify(instr)) in immed_get_value()
78 reg = FIELD_GET(OP_IMMED_A_SRC, instr); in immed_get_value()
80 reg = FIELD_GET(OP_IMMED_B_SRC, instr); in immed_get_value()
82 return (reg & 0xff) | FIELD_GET(OP_IMMED_IMM, instr) << 8; in immed_get_value()
85 void immed_set_value(u64 *instr, u16 immed) in immed_set_value() argument
87 if (!immed_can_modify(*instr)) in immed_set_value()
90 if (unreg_is_imm(FIELD_GET(OP_IMMED_A_SRC, *instr))) { in immed_set_value()
91 *instr &= ~FIELD_PREP(OP_IMMED_A_SRC, 0xff); in immed_set_value()
92 *instr |= FIELD_PREP(OP_IMMED_A_SRC, immed & 0xff); in immed_set_value()
94 *instr &= ~FIELD_PREP(OP_IMMED_B_SRC, 0xff); in immed_set_value()
95 *instr |= FIELD_PREP(OP_IMMED_B_SRC, immed & 0xff); in immed_set_value()
98 *instr &= ~OP_IMMED_IMM; in immed_set_value()
99 *instr |= FIELD_PREP(OP_IMMED_IMM, immed >> 8); in immed_set_value()
102 void immed_add_value(u64 *instr, u16 offset) in immed_add_value() argument
106 if (!immed_can_modify(*instr)) in immed_add_value()
109 val = immed_get_value(*instr); in immed_add_value()
110 immed_set_value(instr, val + offset); in immed_add_value()