Add VEX_W_3818_P_2_M_0.
[deliverable/binutils-gdb.git] / opcodes / i386-opc.h
index 6c48dbc54e62f58370ff127b10ed1e6220dd55a9..3b0f2c6bc1bf67389c12875beb9f0b41abfe81e5 100644 (file)
@@ -102,6 +102,10 @@ enum
   CpuFMA,
   /* FMA4 support required */
   CpuFMA4,
+  /* XOP support required */
+  CpuXOP,
+  /* LWP support required */
+  CpuLWP,
   /* MOVBE Instuction support required */
   CpuMovbe,
   /* EPT Instructions required */
@@ -168,6 +172,8 @@ typedef union i386_cpu_flags
       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;
@@ -237,6 +243,8 @@ enum
   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,
@@ -266,6 +274,8 @@ enum
        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
@@ -273,6 +283,9 @@ enum
   VexNDS,
   /* insn has VEX NDD. Register destination is encoded in Vex prefix. */
   VexNDD,
+  /* insn has VEX NDD. Register destination is encoded in Vex prefix
+     and one of the operands can access a memory location.  */
+  VexLWP,
   /* insn has VEX W0. */
   VexW0,
   /* insn has VEX W1. */
@@ -283,7 +296,15 @@ enum
   Vex0F38,
   /* insn has VEX 0x0F3A opcode prefix. */
   Vex0F3A,
-  /* insn has VEX prefix with 3 soures. */
+  /* insn has XOP 0x08 opcode prefix. */
+  XOP08,
+  /* insn has XOP 0x09 opcode prefix. */
+  XOP09,
+  /* insn has XOP 0x0A opcode prefix. */
+  XOP0A,
+  /* insn has VEX prefix with 2 sources. */
+  Vex2Sources,
+  /* insn has VEX prefix with 3 sources. */
   Vex3Sources,
   /* instruction has VEX 8 bit imm */
   VexImmExt,
@@ -330,6 +351,7 @@ typedef struct i386_opcode_modifier
   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;
@@ -345,11 +367,16 @@ typedef struct i386_opcode_modifier
   unsigned int vex:2;
   unsigned int vexnds:1;
   unsigned int vexndd:1;
+  unsigned int vexlwp:1;
   unsigned int vexw0:1;
   unsigned int vexw1:1;
   unsigned int vex0f:1;
   unsigned int vex0f38:1;
   unsigned int vex0f3a:1;
+  unsigned int xop08:1;
+  unsigned int xop09:1;
+  unsigned int xop0a:1;
+  unsigned int vex2sources:1;
   unsigned int vex3sources:1;
   unsigned int veximmext:1;
   unsigned int sse2avx:1;
This page took 0.026694 seconds and 4 git commands to generate.