@@ -206,6 +206,17 @@ enum aarch64_insn_data3_type {
206206 AARCH64_INSN_DATA3_MSUB ,
207207};
208208
209+ enum aarch64_insn_logic_type {
210+ AARCH64_INSN_LOGIC_AND ,
211+ AARCH64_INSN_LOGIC_BIC ,
212+ AARCH64_INSN_LOGIC_ORR ,
213+ AARCH64_INSN_LOGIC_ORN ,
214+ AARCH64_INSN_LOGIC_EOR ,
215+ AARCH64_INSN_LOGIC_EON ,
216+ AARCH64_INSN_LOGIC_AND_SETFLAGS ,
217+ AARCH64_INSN_LOGIC_BIC_SETFLAGS
218+ };
219+
209220#define __AARCH64_INSN_FUNCS (abbr , mask , val ) \
210221static __always_inline bool aarch64_insn_is_##abbr(u32 code) \
211222{ return (code & (mask)) == (val); } \
@@ -243,6 +254,14 @@ __AARCH64_INSN_FUNCS(rorv, 0x7FE0FC00, 0x1AC02C00)
243254__AARCH64_INSN_FUNCS (rev16 , 0x7FFFFC00 , 0x5AC00400 )
244255__AARCH64_INSN_FUNCS (rev32 , 0x7FFFFC00 , 0x5AC00800 )
245256__AARCH64_INSN_FUNCS (rev64 , 0x7FFFFC00 , 0x5AC00C00 )
257+ __AARCH64_INSN_FUNCS (and , 0x7F200000 , 0x0A000000 )
258+ __AARCH64_INSN_FUNCS (bic , 0x7F200000 , 0x0A200000 )
259+ __AARCH64_INSN_FUNCS (orr , 0x7F200000 , 0x2A000000 )
260+ __AARCH64_INSN_FUNCS (orn , 0x7F200000 , 0x2A200000 )
261+ __AARCH64_INSN_FUNCS (eor , 0x7F200000 , 0x4A000000 )
262+ __AARCH64_INSN_FUNCS (eon , 0x7F200000 , 0x4A200000 )
263+ __AARCH64_INSN_FUNCS (ands , 0x7F200000 , 0x6A000000 )
264+ __AARCH64_INSN_FUNCS (bics , 0x7F200000 , 0x6A200000 )
246265__AARCH64_INSN_FUNCS (b , 0xFC000000 , 0x14000000 )
247266__AARCH64_INSN_FUNCS (bl , 0xFC000000 , 0x94000000 )
248267__AARCH64_INSN_FUNCS (cbz , 0xFE000000 , 0x34000000 )
@@ -323,6 +342,12 @@ u32 aarch64_insn_gen_data3(enum aarch64_insn_register dst,
323342 enum aarch64_insn_register reg2 ,
324343 enum aarch64_insn_variant variant ,
325344 enum aarch64_insn_data3_type type );
345+ u32 aarch64_insn_gen_logical_shifted_reg (enum aarch64_insn_register dst ,
346+ enum aarch64_insn_register src ,
347+ enum aarch64_insn_register reg ,
348+ int shift ,
349+ enum aarch64_insn_variant variant ,
350+ enum aarch64_insn_logic_type type );
326351
327352bool aarch64_insn_hotpatch_safe (u32 old_insn , u32 new_insn );
328353
0 commit comments