1 #ifndef _ASM_X86_INAT_H
2 #define _ASM_X86_INAT_H
30 #define INAT_OPCODE_TABLE_SIZE 256
31 #define INAT_GROUP_TABLE_SIZE 8
34 #define INAT_PFX_OPNDSZ 1
35 #define INAT_PFX_REPE 2
36 #define INAT_PFX_REPNE 3
38 #define INAT_PFX_LOCK 4
44 #define INAT_PFX_SS 10
45 #define INAT_PFX_ADDRSZ 11
47 #define INAT_PFX_REX 12
49 #define INAT_PFX_VEX2 13
50 #define INAT_PFX_VEX3 14
52 #define INAT_LSTPFX_MAX 3
53 #define INAT_LGCPFX_MAX 11
56 #define INAT_IMM_BYTE 1
57 #define INAT_IMM_WORD 2
58 #define INAT_IMM_DWORD 3
59 #define INAT_IMM_QWORD 4
60 #define INAT_IMM_PTR 5
61 #define INAT_IMM_VWORD32 6
62 #define INAT_IMM_VWORD 7
65 #define INAT_PFX_OFFS 0
66 #define INAT_PFX_BITS 4
67 #define INAT_PFX_MAX ((1 << INAT_PFX_BITS) - 1)
68 #define INAT_PFX_MASK (INAT_PFX_MAX << INAT_PFX_OFFS)
70 #define INAT_ESC_OFFS (INAT_PFX_OFFS + INAT_PFX_BITS)
71 #define INAT_ESC_BITS 2
72 #define INAT_ESC_MAX ((1 << INAT_ESC_BITS) - 1)
73 #define INAT_ESC_MASK (INAT_ESC_MAX << INAT_ESC_OFFS)
75 #define INAT_GRP_OFFS (INAT_ESC_OFFS + INAT_ESC_BITS)
76 #define INAT_GRP_BITS 5
77 #define INAT_GRP_MAX ((1 << INAT_GRP_BITS) - 1)
78 #define INAT_GRP_MASK (INAT_GRP_MAX << INAT_GRP_OFFS)
80 #define INAT_IMM_OFFS (INAT_GRP_OFFS + INAT_GRP_BITS)
81 #define INAT_IMM_BITS 3
82 #define INAT_IMM_MASK (((1 << INAT_IMM_BITS) - 1) << INAT_IMM_OFFS)
84 #define INAT_FLAG_OFFS (INAT_IMM_OFFS + INAT_IMM_BITS)
85 #define INAT_MODRM (1 << (INAT_FLAG_OFFS))
86 #define INAT_FORCE64 (1 << (INAT_FLAG_OFFS + 1))
87 #define INAT_SCNDIMM (1 << (INAT_FLAG_OFFS + 2))
88 #define INAT_MOFFSET (1 << (INAT_FLAG_OFFS + 3))
89 #define INAT_VARIANT (1 << (INAT_FLAG_OFFS + 4))
90 #define INAT_VEXOK (1 << (INAT_FLAG_OFFS + 5))
91 #define INAT_VEXONLY (1 << (INAT_FLAG_OFFS + 6))
93 #define INAT_MAKE_PREFIX(pfx) (pfx << INAT_PFX_OFFS)
94 #define INAT_MAKE_ESCAPE(esc) (esc << INAT_ESC_OFFS)
95 #define INAT_MAKE_GROUP(grp) ((grp << INAT_GRP_OFFS) | INAT_MODRM)
96 #define INAT_MAKE_IMM(imm) (imm << INAT_IMM_OFFS)
123 static inline int inat_is_operand_size_prefix(
insn_attr_t attr)
128 static inline int inat_is_rex_prefix(
insn_attr_t attr)
133 static inline int inat_last_prefix_id(
insn_attr_t attr)
141 static inline int inat_is_vex_prefix(
insn_attr_t attr)
147 static inline int inat_is_vex3_prefix(
insn_attr_t attr)
172 static inline int inat_group_common_attribute(
insn_attr_t attr)
177 static inline int inat_has_immediate(
insn_attr_t attr)
182 static inline int inat_immediate_size(
insn_attr_t attr)
192 static inline int inat_is_force64(
insn_attr_t attr)
197 static inline int inat_has_second_immediate(
insn_attr_t attr)
202 static inline int inat_has_moffset(
insn_attr_t attr)
207 static inline int inat_has_variant(
insn_attr_t attr)
212 static inline int inat_accept_vex(
insn_attr_t attr)