CpuFMA,
/* FMA4 support required */
CpuFMA4,
+ /* XOP support required */
+ CpuXOP,
+ /* LWP support required */
+ CpuLWP,
/* MOVBE Instuction support required */
CpuMovbe,
/* EPT Instructions required */
unsigned int cpupclmul:1;
unsigned int cpufma:1;
unsigned int cpufma4:1;
+ unsigned int cpuxop:1;
+ unsigned int cpulwp:1;
unsigned int cpumovbe:1;
unsigned int cpuept:1;
unsigned int cpurdtscp:1;
FWait,
/* quick test for string instructions */
IsString,
+ /* quick test for lockable instructions */
+ IsLockable,
/* fake an extra reg operand for clr, imul and special register
processing for some instructions. */
RegKludge,
1: 128bit VEX prefix.
2: 256bit VEX prefix.
*/
+#define VEX128 1
+#define VEX256 2
Vex,
/* insn has VEX NDS. Register-only source is encoded in Vex prefix.
We use VexNDS on insns with VEX DDS since the register-only source
VexNDS,
/* insn has VEX NDD. Register destination is encoded in Vex prefix. */
VexNDD,
- /* insn has VEX W0. */
- VexW0,
- /* insn has VEX W1. */
- VexW1,
+ /* insn has VEX NDD. Register destination is encoded in Vex prefix
+ and one of the operands can access a memory location. */
+ VexLWP,
+ /* How the VEX.W bit is used:
+ 0: Set by the REX.W bit.
+ 1: VEX.W0. Should always be 0.
+ 2: VEX.W1. Should always be 1.
+ */
+#define VEXW0 1
+#define VEXW1 2
+ VexW,
/* insn has VEX 0x0F opcode prefix. */
Vex0F,
/* insn has VEX 0x0F38 opcode prefix. */
Vex0F38,
/* insn has VEX 0x0F3A opcode prefix. */
Vex0F3A,
- /* insn has VEX prefix with 3 soures. */
- Vex3Sources,
+ /* insn has XOP 0x08 opcode prefix. */
+ XOP08,
+ /* insn has XOP 0x09 opcode prefix. */
+ XOP09,
+ /* insn has XOP 0x0A opcode prefix. */
+ XOP0A,
+ /* number of VEX source operands:
+ 0: < 2 source operands.
+ 1: 2 source operands.
+ 2: 3 source operands.
+ */
+#define VEX2SOURCES 1
+#define VEX3SOURCES 2
+ VexSources,
/* instruction has VEX 8 bit imm */
VexImmExt,
/* SSE to AVX support required */
unsigned int no_ldsuf:1;
unsigned int fwait:1;
unsigned int isstring:1;
+ unsigned int islockable:1;
unsigned int regkludge:1;
unsigned int firstxmm0:1;
unsigned int implicit1stxmm0:1;
unsigned int vex:2;
unsigned int vexnds:1;
unsigned int vexndd:1;
- unsigned int vexw0:1;
- unsigned int vexw1:1;
+ unsigned int vexlwp:1;
+ unsigned int vexw:2;
unsigned int vex0f:1;
unsigned int vex0f38:1;
unsigned int vex0f3a:1;
- unsigned int vex3sources:1;
+ unsigned int xop08:1;
+ unsigned int xop09:1;
+ unsigned int xop0a:1;
+ unsigned int vexsources:2;
unsigned int veximmext:1;
unsigned int sse2avx:1;
unsigned int noavx:1;