Support APX NDD
authorkonglin1 <lingling.kong@intel.com>
Thu, 28 Dec 2023 01:06:40 +0000 (01:06 +0000)
committerCui, Lili <lili.cui@intel.com>
Thu, 28 Dec 2023 11:37:16 +0000 (11:37 +0000)
opcodes/ChangeLog:

* opcodes/i386-dis-evex-reg.h: Handle for REG_EVEX_MAP4_80,
REG_EVEX_MAP4_81, REG_EVEX_MAP4_83,  REG_EVEX_MAP4_F6,
REG_EVEX_MAP4_F7, REG_EVEX_MAP4_FE, REG_EVEX_MAP4_FF.
* opcodes/i386-dis-evex.h: Add NDD insn.
* opcodes/i386-dis.c (nd): New define.
(VexGb): Ditto.
(VexGv): Ditto.
(get_valid_dis386): Change for NDD decode.
(print_insn): Ditto.
(putop): Ditto.
(intel_operand_size): Ditto.
(OP_E_memory): Ditto.
(OP_VEX): Ditto.
* opcodes/i386-opc.h (VexVVVV_DST): New.
* opcodes/i386-opc.tbl: Add APX NDD instructions and adjust VexVVVV.
* opcodes/i386-tbl.h: Regenerated.

gas/ChangeLog:

* gas/config/tc-i386.c (operand_size_match):
Support APX NDD that the number of operands is 3.
(build_apx_evex_prefix): Change for ndd encode.
(process_operands): Ditto.
(build_modrm_byte): Ditto.
(match_template): Support swap the first two operands for
APX NDD.
* testsuite/gas/i386/x86-64.exp: Add x86-64-apx-ndd.
* testsuite/gas/i386/x86-64-apx-ndd.d: New test.
* testsuite/gas/i386/x86-64-apx-ndd.s: Ditto.
* testsuite/gas/i386/x86-64-pseudos.d: Add test.
* testsuite/gas/i386/x86-64-pseudos.s: Ditto.
* testsuite/gas/i386/x86-64-apx-evex-promoted-bad.d : Ditto.
* testsuite/gas/i386/x86-64-apx-evex-promoted-bad.s : Ditto.

14 files changed:
gas/config/tc-i386.c
gas/testsuite/gas/i386/x86-64-apx-evex-promoted-bad.d
gas/testsuite/gas/i386/x86-64-apx-evex-promoted-bad.s
gas/testsuite/gas/i386/x86-64-apx-ndd.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-apx-ndd.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-pseudos.d
gas/testsuite/gas/i386/x86-64-pseudos.s
gas/testsuite/gas/i386/x86-64.exp
opcodes/i386-dis-evex-reg.h
opcodes/i386-dis-evex.h
opcodes/i386-dis.c
opcodes/i386-opc.h
opcodes/i386-opc.tbl
opcodes/i386-tbl.h

index e41b79a..e828b3c 100644 (file)
@@ -2240,8 +2240,10 @@ operand_size_match (const insn_template *t)
       unsigned int given = i.operands - j - 1;
 
       /* For FMA4 and XOP insns VEX.W controls just the first two
-        register operands.  */
-      if (is_cpu (t, CpuFMA4) || is_cpu (t, CpuXOP))
+        register operands. And APX_F insns just swap the two source operands,
+        with the 3rd one being the destination.  */
+      if (is_cpu (t, CpuFMA4) || is_cpu (t, CpuXOP)
+         || is_cpu (t, CpuAPX_F))
        given = j < 2 ? 1 - j : j;
 
       if (t->operand_types[j].bitfield.class == Reg
@@ -4200,6 +4202,11 @@ build_apx_evex_prefix (void)
   if (i.vex.register_specifier
       && i.vex.register_specifier->reg_flags & RegRex2)
     i.vex.bytes[3] &= ~0x08;
+
+  /* Encode the NDD bit of the instruction promoted from the legacy
+     space.  */
+  if (i.vex.register_specifier && i.tm.opcode_space == SPACE_EVEXMAP4)
+    i.vex.bytes[3] |= 0x10;
 }
 
 static void establish_rex (void)
@@ -7473,18 +7480,22 @@ match_template (char mnem_suffix)
             - the store form is requested, and the template is a load form,
             - the non-default (swapped) form is requested.  */
          overlap1 = operand_type_and (operand_types[0], operand_types[1]);
+
+         j = i.operands - 1 - (t->opcode_space == SPACE_EVEXMAP4
+                               && t->opcode_modifier.vexvvvv);
+
          if (t->opcode_modifier.d && i.reg_operands == i.operands
              && !operand_type_all_zero (&overlap1))
            switch (i.dir_encoding)
              {
              case dir_encoding_load:
-               if (operand_type_check (operand_types[i.operands - 1], anymem)
+               if (operand_type_check (operand_types[j], anymem)
                    || t->opcode_modifier.regmem)
                  goto check_reverse;
                break;
 
              case dir_encoding_store:
-               if (!operand_type_check (operand_types[i.operands - 1], anymem)
+               if (!operand_type_check (operand_types[j], anymem)
                    && !t->opcode_modifier.regmem)
                  goto check_reverse;
                break;
@@ -7495,6 +7506,7 @@ match_template (char mnem_suffix)
              case dir_encoding_default:
                break;
              }
+
          /* If we want store form, we skip the current load.  */
          if ((i.dir_encoding == dir_encoding_store
               || i.dir_encoding == dir_encoding_swap)
@@ -7524,11 +7536,13 @@ match_template (char mnem_suffix)
                continue;
              /* Try reversing direction of operands.  */
              j = is_cpu (t, CpuFMA4)
-                 || is_cpu (t, CpuXOP) ? 1 : i.operands - 1;
+                 || is_cpu (t, CpuXOP)
+                 || is_cpu (t, CpuAPX_F) ? 1 : i.operands - 1;
              overlap0 = operand_type_and (i.types[0], operand_types[j]);
              overlap1 = operand_type_and (i.types[j], operand_types[0]);
              overlap2 = operand_type_and (i.types[1], operand_types[1]);
-             gas_assert (t->operands != 3 || !check_register);
+             gas_assert (t->operands != 3 || !check_register
+                         || is_cpu (t, CpuAPX_F));
              if (!operand_type_match (overlap0, i.types[0])
                  || !operand_type_match (overlap1, i.types[j])
                  || (t->operands == 3
@@ -7563,6 +7577,11 @@ match_template (char mnem_suffix)
                  found_reverse_match = Opcode_VexW;
                  goto check_operands_345;
                }
+             else if (is_cpu (t, CpuAPX_F) && i.operands == 3)
+               {
+                 found_reverse_match = Opcode_D;
+                 goto check_operands_345;
+               }
              else if (t->opcode_space != SPACE_BASE
                       && (t->opcode_space != SPACE_0F
                           /* MOV to/from CR/DR/TR, as an exception, follow
@@ -7744,6 +7763,9 @@ match_template (char mnem_suffix)
 
       i.tm.base_opcode ^= found_reverse_match;
 
+      if (i.tm.opcode_space == SPACE_EVEXMAP4)
+       goto swap_first_2;
+
       /* Certain SIMD insns have their load forms specified in the opcode
         table, and hence we need to _set_ RegMem instead of clearing it.
         We need to avoid setting the bit though on insns like KMOVW.  */
@@ -7763,6 +7785,7 @@ match_template (char mnem_suffix)
         flipping VEX.W.  */
       i.tm.opcode_modifier.vexw ^= VEXW0 ^ VEXW1;
 
+    swap_first_2:
       j = i.tm.operand_types[0].bitfield.imm8;
       i.tm.operand_types[j] = operand_types[j + 1];
       i.tm.operand_types[j + 1] = operand_types[j];
@@ -8584,12 +8607,9 @@ process_operands (void)
      unnecessary segment overrides.  */
   const reg_entry *default_seg = NULL;
 
-  /* We only need to check those implicit registers for instructions
-     with 3 operands or less.  */
-  if (i.operands <= 3)
-    for (unsigned int j = 0; j < i.operands; j++)
-      if (i.types[j].bitfield.instance != InstanceNone)
-       i.reg_operands--;
+  for (unsigned int j = 0; j < i.operands; j++)
+    if (i.types[j].bitfield.instance != InstanceNone)
+      i.reg_operands--;
 
   if (i.tm.opcode_modifier.sse2avx)
     {
@@ -8943,11 +8963,19 @@ build_modrm_byte (void)
                                     || i.vec_encoding == vex_encoding_evex));
     }
 
-  for (v = source + 1; v < dest; ++v)
-    if (v != reg_slot)
-      break;
-  if (v >= dest)
-    v = ~0;
+  if (i.tm.opcode_modifier.vexvvvv == VexVVVV_DST)
+    {
+      v = dest;
+      dest-- ;
+    }
+  else
+    {
+      for (v = source + 1; v < dest; ++v)
+       if (v != reg_slot)
+         break;
+      if (v >= dest)
+       v = ~0;
+    }
   if (i.tm.extension_opcode != None)
     {
       if (dest != source)
index 69b2d87..ba14736 100644 (file)
@@ -31,3 +31,6 @@ Disassembly of section .text:
 [      ]*[a-f0-9]+:[   ]+0c 18[        ]+or.*
 [      ]*[a-f0-9]+:[   ]+62 f2 fc 18 f5[       ]+\(bad\)
 [      ]*[a-f0-9]+:[   ]+0c 18[        ]+or.*
+[      ]*[a-f0-9]+:[   ]+62 f4 e4[     ]+\(bad\)
+[      ]*[a-f0-9]+:[   ]+08 ff[        ]+.*
+[      ]*[a-f0-9]+:[   ]+04 08[        ]+.*
index 719c4b6..fcbb1b9 100644 (file)
@@ -37,3 +37,6 @@ _start:
 
        #EVEX from VEX bzhi %rax,(%rax,%rbx),%rcx EVEX.P[20](EVEX.b) == 0b1
        .insn EVEX.L0.NP.0f38.W1 0xf5, %rax, (%rax,%rbx){1to8}, %rcx
+
+       #{evex} inc %rax %rbx EVEX.vvvv != 1111 && EVEX.ND = 0.
+       .insn EVEX.L0.NP.M4.W1 0xff/0, (%rax,%rcx), %rbx
diff --git a/gas/testsuite/gas/i386/x86-64-apx-ndd.d b/gas/testsuite/gas/i386/x86-64-apx-ndd.d
new file mode 100644 (file)
index 0000000..7341060
--- /dev/null
@@ -0,0 +1,160 @@
+#as:
+#objdump: -dw
+#name: x86-64 APX NDD instructions with evex prefix encoding
+#source: x86-64-apx-ndd.s
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 d0 34 12        adc    \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 7c 6c 10 10 f9      adc    %r15b,%r17b,%r18b
+\s*[a-f0-9]+:\s*62 54 6c 10 11 38      adc    %r15d,\(%r8\),%r18d
+\s*[a-f0-9]+:\s*62 c4 3c 18 12 04 07   adc    \(%r15,%rax,1\),%r16b,%r8b
+\s*[a-f0-9]+:\s*62 c4 3d 18 13 04 07   adc    \(%r15,%rax,1\),%r16w,%r8w
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 14 83 11        adcl   \$0x11,\(%r19,%rax,4\),%r20d
+\s*[a-f0-9]+:\s*62 54 6d 10 66 c7      adcx   %r15d,%r8d,%r18d
+\s*[a-f0-9]+:\s*62 14 f9 08 66 04 3f   adcx   \(%r15,%r31,1\),%r8
+\s*[a-f0-9]+:\s*62 14 69 10 66 04 3f   adcx   \(%r15,%r31,1\),%r8d,%r18d
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 c0 34 12        add    \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 d4 fc 10 81 c7 33 44 34 12  add    \$0x12344433,%r15,%r16
+\s*[a-f0-9]+:\s*62 d4 74 10 80 c5 34   add    \$0x34,%r13b,%r17b
+\s*[a-f0-9]+:\s*62 f4 bc 18 81 c0 11 22 33 f4  add    \$0xfffffffff4332211,%rax,%r8
+\s*[a-f0-9]+:\s*62 44 fc 10 01 f8      add    %r31,%r8,%r16
+\s*[a-f0-9]+:\s*62 44 fc 10 01 38      add    %r31,\(%r8\),%r16
+\s*[a-f0-9]+:\s*62 44 f8 10 01 3c c0   add    %r31,\(%r8,%r16,8\),%r16
+\s*[a-f0-9]+:\s*62 44 7c 10 00 f8      add    %r31b,%r8b,%r16b
+\s*[a-f0-9]+:\s*62 44 7c 10 01 f8      add    %r31d,%r8d,%r16d
+\s*[a-f0-9]+:\s*62 44 7d 10 01 f8      add    %r31w,%r8w,%r16w
+\s*[a-f0-9]+:\s*62 5c fc 10 03 07      add    \(%r31\),%r8,%r16
+\s*[a-f0-9]+:\s*62 5c f8 10 03 84 07 90 90 00 00       add    0x9090\(%r31,%r16,1\),%r8,%r16
+\s*[a-f0-9]+:\s*62 44 7c 10 00 f8      add    %r31b,%r8b,%r16b
+\s*[a-f0-9]+:\s*62 44 7c 10 01 f8      add    %r31d,%r8d,%r16d
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 04 83 11        addl   \$0x11,\(%r19,%rax,4\),%r20d
+\s*[a-f0-9]+:\s*62 44 fc 10 01 f8      add    %r31,%r8,%r16
+\s*[a-f0-9]+:\s*62 d4 fc 10 81 04 8f 33 44 34 12       addq   \$0x12344433,\(%r15,%rcx,4\),%r16
+\s*[a-f0-9]+:\s*62 44 7d 10 01 f8      add    %r31w,%r8w,%r16w
+\s*[a-f0-9]+:\s*62 54 6e 10 66 c7      adox   %r15d,%r8d,%r18d
+\s*[a-f0-9]+:\s*62 5c fc 10 03 c7      add    %r31,%r8,%r16
+\s*[a-f0-9]+:\s*62 44 fc 10 01 f8      add    %r31,%r8,%r16
+\s*[a-f0-9]+:\s*62 14 fa 08 66 04 3f   adox   \(%r15,%r31,1\),%r8
+\s*[a-f0-9]+:\s*62 14 6a 10 66 04 3f   adox   \(%r15,%r31,1\),%r8d,%r18d
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 e0 34 12        and    \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 7c 6c 10 20 f9      and    %r15b,%r17b,%r18b
+\s*[a-f0-9]+:\s*62 54 6c 10 21 38      and    %r15d,\(%r8\),%r18d
+\s*[a-f0-9]+:\s*62 c4 3c 18 22 04 07   and    \(%r15,%rax,1\),%r16b,%r8b
+\s*[a-f0-9]+:\s*62 c4 3d 18 23 04 07   and    \(%r15,%rax,1\),%r16w,%r8w
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 24 83 11        andl   \$0x11,\(%r19,%rax,4\),%r20d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 47 90 90 90 90 90       cmova  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 43 90 90 90 90 90       cmovae -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 42 90 90 90 90 90       cmovb  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 46 90 90 90 90 90       cmovbe -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 44 90 90 90 90 90       cmove  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 4f 90 90 90 90 90       cmovg  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 4d 90 90 90 90 90       cmovge -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 4c 90 90 90 90 90       cmovl  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 4e 90 90 90 90 90       cmovle -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 45 90 90 90 90 90       cmovne -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 41 90 90 90 90 90       cmovno -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 4b 90 90 90 90 90       cmovnp -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 49 90 90 90 90 90       cmovns -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 40 90 90 90 90 90       cmovo  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 4a 90 90 90 90 90       cmovp  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 48 90 90 90 90 90       cmovs  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*62 f4 f4 10 ff c8      dec    %rax,%r17
+\s*[a-f0-9]+:\s*62 9c 3c 18 fe 0c 27   decb   \(%r31,%r12,1\),%r8b
+\s*[a-f0-9]+:\s*62 b4 b0 10 af 94 f8 09 09 00 00       imul   0x909\(%rax,%r31,8\),%rdx,%r25
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 af 90 09 09 09 00       imul   0x90909\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*62 dc fc 10 ff c7      inc    %r31,%r16
+\s*[a-f0-9]+:\s*62 dc bc 18 ff c7      inc    %r31,%r8
+\s*[a-f0-9]+:\s*62 f4 e4 18 ff c0      inc    %rax,%rbx
+\s*[a-f0-9]+:\s*62 f4 f4 10 f7 d8      neg    %rax,%r17
+\s*[a-f0-9]+:\s*62 9c 3c 18 f6 1c 27   negb   \(%r31,%r12,1\),%r8b
+\s*[a-f0-9]+:\s*62 f4 f4 10 f7 d0      not    %rax,%r17
+\s*[a-f0-9]+:\s*62 9c 3c 18 f6 14 27   notb   \(%r31,%r12,1\),%r8b
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 c8 34 12        or     \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 7c 6c 10 08 f9      or     %r15b,%r17b,%r18b
+\s*[a-f0-9]+:\s*62 54 6c 10 09 38      or     %r15d,\(%r8\),%r18d
+\s*[a-f0-9]+:\s*62 c4 3c 18 0a 04 07   or     \(%r15,%rax,1\),%r16b,%r8b
+\s*[a-f0-9]+:\s*62 c4 3d 18 0b 04 07   or     \(%r15,%rax,1\),%r16w,%r8w
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 0c 83 11        orl    \$0x11,\(%r19,%rax,4\),%r20d
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 d4 02   rcl    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 d0      rcl    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 10      rclb   \$1,\(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 10 02   rcll   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 10      rclw   \$1,\(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 14 83   rclw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 dc 02   rcr    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 d8      rcr    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 18      rcrb   \$1,\(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 18 02   rcrl   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 18      rcrw   \$1,\(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 1c 83   rcrw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 c4 02   rol    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 c0      rol    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 00      rolb   \$1,\(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 00 02   roll   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 00      rolw   \$1,\(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 04 83   rolw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 cc 02   ror    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 c8      ror    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 08      rorb   \$1,\(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 08 02   rorl   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 08      rorw   \$1,\(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 0c 83   rorw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 fc 02   sar    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 f8      sar    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 38      sarb   \$1,\(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 38 02   sarl   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 38      sarw   \$1,\(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 3c 83   sarw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 d8 34 12        sbb    \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 7c 6c 10 18 f9      sbb    %r15b,%r17b,%r18b
+\s*[a-f0-9]+:\s*62 54 6c 10 19 38      sbb    %r15d,\(%r8\),%r18d
+\s*[a-f0-9]+:\s*62 c4 3c 18 1a 04 07   sbb    \(%r15,%rax,1\),%r16b,%r8b
+\s*[a-f0-9]+:\s*62 c4 3d 18 1b 04 07   sbb    \(%r15,%rax,1\),%r16w,%r8w
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 1c 83 11        sbbl   \$0x11,\(%r19,%rax,4\),%r20d
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 e4 02   shl    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 e4 02   shl    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 e0      shl    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 e0      shl    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 20      shlb   \$1,\(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 20      shlb   \$1,\(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 74 84 10 24 20 01   shld   \$0x1,%r12,\(%rax\),%r31
+\s*[a-f0-9]+:\s*62 74 04 10 24 38 02   shld   \$0x2,%r15d,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 54 05 10 24 c4 02   shld   \$0x2,%r8w,%r12w,%r31w
+\s*[a-f0-9]+:\s*62 7c bc 18 a5 e0      shld   %cl,%r12,%r16,%r8
+\s*[a-f0-9]+:\s*62 7c 05 10 a5 2c 83   shld   %cl,%r13w,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 74 05 10 a5 08      shld   %cl,%r9w,\(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 20 02   shll   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 20 02   shll   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 20      shlw   \$1,\(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 20      shlw   \$1,\(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 24 83   shlw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 24 83   shlw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 ec 02   shr    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 e8      shr    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 28      shrb   \$1,\(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 74 84 10 2c 20 01   shrd   \$0x1,%r12,\(%rax\),%r31
+\s*[a-f0-9]+:\s*62 74 04 10 2c 38 02   shrd   \$0x2,%r15d,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 54 05 10 2c c4 02   shrd   \$0x2,%r8w,%r12w,%r31w
+\s*[a-f0-9]+:\s*62 7c bc 18 ad e0      shrd   %cl,%r12,%r16,%r8
+\s*[a-f0-9]+:\s*62 7c 05 10 ad 2c 83   shrd   %cl,%r13w,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 74 05 10 ad 08      shrd   %cl,%r9w,\(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 28 02   shrl   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 28      shrw   \$1,\(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 2c 83   shrw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 e8 34 12        sub    \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 7c 6c 10 28 f9      sub    %r15b,%r17b,%r18b
+\s*[a-f0-9]+:\s*62 54 6c 10 29 38      sub    %r15d,\(%r8\),%r18d
+\s*[a-f0-9]+:\s*62 c4 3c 18 2a 04 07   sub    \(%r15,%rax,1\),%r16b,%r8b
+\s*[a-f0-9]+:\s*62 c4 3d 18 2b 04 07   sub    \(%r15,%rax,1\),%r16w,%r8w
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 2c 83 11        subl   \$0x11,\(%r19,%rax,4\),%r20d
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 f0 34 12        xor    \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 7c 6c 10 30 f9      xor    %r15b,%r17b,%r18b
+\s*[a-f0-9]+:\s*62 54 6c 10 31 38      xor    %r15d,\(%r8\),%r18d
+\s*[a-f0-9]+:\s*62 c4 3c 18 32 04 07   xor    \(%r15,%rax,1\),%r16b,%r8b
+\s*[a-f0-9]+:\s*62 c4 3d 18 33 04 07   xor    \(%r15,%rax,1\),%r16w,%r8w
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 34 83 11        xorl   \$0x11,\(%r19,%rax,4\),%r20d
diff --git a/gas/testsuite/gas/i386/x86-64-apx-ndd.s b/gas/testsuite/gas/i386/x86-64-apx-ndd.s
new file mode 100644 (file)
index 0000000..4e248f7
--- /dev/null
@@ -0,0 +1,155 @@
+# Check 64bit APX NDD instructions with evex prefix encoding
+
+       .allow_index_reg
+       .text
+_start:
+       adc    $0x1234,%ax,%r30w
+       adc    %r15b,%r17b,%r18b
+       adc    %r15d,(%r8),%r18d
+       adc    (%r15,%rax,1),%r16b,%r8b
+       adc    (%r15,%rax,1),%r16w,%r8w
+       adcl   $0x11,(%r19,%rax,4),%r20d
+       adcx   %r15d,%r8d,%r18d
+       adcx   (%r15,%r31,1),%r8
+       adcx   (%r15,%r31,1),%r8d,%r18d
+       add    $0x1234,%ax,%r30w
+       add    $0x12344433,%r15,%r16
+       add    $0x34,%r13b,%r17b
+       add    $0xfffffffff4332211,%rax,%r8
+       add    %r31,%r8,%r16
+       add    %r31,(%r8),%r16
+       add    %r31,(%r8,%r16,8),%r16
+       add    %r31b,%r8b,%r16b
+       add    %r31d,%r8d,%r16d
+       add    %r31w,%r8w,%r16w
+       add    (%r31),%r8,%r16
+       add    0x9090(%r31,%r16,1),%r8,%r16
+       addb   %r31b,%r8b,%r16b
+       addl   %r31d,%r8d,%r16d
+       addl   $0x11,(%r19,%rax,4),%r20d
+       addq   %r31,%r8,%r16
+       addq   $0x12344433,(%r15,%rcx,4),%r16
+       addw   %r31w,%r8w,%r16w
+       adox   %r15d,%r8d,%r18d
+       {load}  add    %r31,%r8,%r16
+       {store} add    %r31,%r8,%r16
+       adox   (%r15,%r31,1),%r8
+       adox   (%r15,%r31,1),%r8d,%r18d
+       and    $0x1234,%ax,%r30w
+       and    %r15b,%r17b,%r18b
+       and    %r15d,(%r8),%r18d
+       and    (%r15,%rax,1),%r16b,%r8b
+       and    (%r15,%rax,1),%r16w,%r8w
+       andl   $0x11,(%r19,%rax,4),%r20d
+       cmova  0x90909090(%eax),%edx,%r8d
+       cmovae 0x90909090(%eax),%edx,%r8d
+       cmovb  0x90909090(%eax),%edx,%r8d
+       cmovbe 0x90909090(%eax),%edx,%r8d
+       cmove  0x90909090(%eax),%edx,%r8d
+       cmovg  0x90909090(%eax),%edx,%r8d
+       cmovge 0x90909090(%eax),%edx,%r8d
+       cmovl  0x90909090(%eax),%edx,%r8d
+       cmovle 0x90909090(%eax),%edx,%r8d
+       cmovne 0x90909090(%eax),%edx,%r8d
+       cmovno 0x90909090(%eax),%edx,%r8d
+       cmovnp 0x90909090(%eax),%edx,%r8d
+       cmovns 0x90909090(%eax),%edx,%r8d
+       cmovo  0x90909090(%eax),%edx,%r8d
+       cmovp  0x90909090(%eax),%edx,%r8d
+       cmovs  0x90909090(%eax),%edx,%r8d
+       dec    %rax,%r17
+       decb   (%r31,%r12,1),%r8b
+       imul   0x909(%rax,%r31,8),%rdx,%r25
+       imul   0x90909(%eax),%edx,%r8d
+       inc    %r31,%r16
+       inc    %r31,%r8
+       inc    %rax,%rbx
+       neg    %rax,%r17
+       negb   (%r31,%r12,1),%r8b
+       not    %rax,%r17
+       notb   (%r31,%r12,1),%r8b
+       or     $0x1234,%ax,%r30w
+       or     %r15b,%r17b,%r18b
+       or     %r15d,(%r8),%r18d
+       or     (%r15,%rax,1),%r16b,%r8b
+       or     (%r15,%rax,1),%r16w,%r8w
+       orl    $0x11,(%r19,%rax,4),%r20d
+       rcl    $0x2,%r12b,%r31b
+       rcl    %cl,%r16b,%r8b
+       rclb   $0x1,(%rax),%r31b
+       rcll   $0x2,(%rax),%r31d
+       rclw   $0x1,(%rax),%r31w
+       rclw   %cl,(%r19,%rax,4),%r31w
+       rcr    $0x2,%r12b,%r31b
+       rcr    %cl,%r16b,%r8b
+       rcrb   $0x1,(%rax),%r31b
+       rcrl   $0x2,(%rax),%r31d
+       rcrw   $0x1,(%rax),%r31w
+       rcrw   %cl,(%r19,%rax,4),%r31w
+       rol    $0x2,%r12b,%r31b
+       rol    %cl,%r16b,%r8b
+       rolb   $0x1,(%rax),%r31b
+       roll   $0x2,(%rax),%r31d
+       rolw   $0x1,(%rax),%r31w
+       rolw   %cl,(%r19,%rax,4),%r31w
+       ror    $0x2,%r12b,%r31b
+       ror    %cl,%r16b,%r8b
+       rorb   $0x1,(%rax),%r31b
+       rorl   $0x2,(%rax),%r31d
+       rorw   $0x1,(%rax),%r31w
+       rorw   %cl,(%r19,%rax,4),%r31w
+       sar    $0x2,%r12b,%r31b
+       sar    %cl,%r16b,%r8b
+       sarb   $0x1,(%rax),%r31b
+       sarl   $0x2,(%rax),%r31d
+       sarw   $0x1,(%rax),%r31w
+       sarw   %cl,(%r19,%rax,4),%r31w
+       sbb    $0x1234,%ax,%r30w
+       sbb    %r15b,%r17b,%r18b
+       sbb    %r15d,(%r8),%r18d
+       sbb    (%r15,%rax,1),%r16b,%r8b
+       sbb    (%r15,%rax,1),%r16w,%r8w
+       sbbl   $0x11,(%r19,%rax,4),%r20d
+       shl    $0x2,%r12b,%r31b
+       shl    $0x2,%r12b,%r31b
+       shl    %cl,%r16b,%r8b
+       shl    %cl,%r16b,%r8b
+       shlb   $0x1,(%rax),%r31b
+       shlb   $0x1,(%rax),%r31b
+       shld   $0x1,%r12,(%rax),%r31
+       shld   $0x2,%r15d,(%rax),%r31d
+       shld   $0x2,%r8w,%r12w,%r31w
+       shld   %cl,%r12,%r16,%r8
+       shld   %cl,%r13w,(%r19,%rax,4),%r31w
+       shld   %cl,%r9w,(%rax),%r31w
+       shll   $0x2,(%rax),%r31d
+       shll   $0x2,(%rax),%r31d
+       shlw   $0x1,(%rax),%r31w
+       shlw   $0x1,(%rax),%r31w
+       shlw   %cl,(%r19,%rax,4),%r31w
+       shlw   %cl,(%r19,%rax,4),%r31w
+       shr    $0x2,%r12b,%r31b
+       shr    %cl,%r16b,%r8b
+       shrb   $0x1,(%rax),%r31b
+       shrd   $0x1,%r12,(%rax),%r31
+       shrd   $0x2,%r15d,(%rax),%r31d
+       shrd   $0x2,%r8w,%r12w,%r31w
+       shrd   %cl,%r12,%r16,%r8
+       shrd   %cl,%r13w,(%r19,%rax,4),%r31w
+       shrd   %cl,%r9w,(%rax),%r31w
+       shrl   $0x2,(%rax),%r31d
+       shrw   $0x1,(%rax),%r31w
+       shrw   %cl,(%r19,%rax,4),%r31w
+       sub    $0x1234,%ax,%r30w
+       sub    %r15b,%r17b,%r18b
+       sub    %r15d,(%r8),%r18d
+       sub    (%r15,%rax,1),%r16b,%r8b
+       sub    (%r15,%rax,1),%r16w,%r8w
+       subl   $0x11,(%r19,%rax,4),%r20d
+       xor    $0x1234,%ax,%r30w
+       xor    %r15b,%r17b,%r18b
+       xor    %r15d,(%r8),%r18d
+       xor    (%r15,%rax,1),%r16b,%r8b
+       xor    (%r15,%rax,1),%r16w,%r8w
+       xorl   $0x11,(%r19,%rax,4),%r20d
+
index 19dcd84..c55e6f4 100644 (file)
@@ -137,6 +137,48 @@ Disassembly of section .text:
  +[a-f0-9]+:   33 07                   xor    \(%rdi\),%eax
  +[a-f0-9]+:   31 07                   xor    %eax,\(%rdi\)
  +[a-f0-9]+:   33 07                   xor    \(%rdi\),%eax
+ +[a-f0-9]+:   62 44 fc 10 01 38       add    %r31,\(%r8\),%r16
+ +[a-f0-9]+:   62 44 fc 10 03 38       add    \(%r8\),%r31,%r16
+ +[a-f0-9]+:   62 44 fc 10 01 38       add    %r31,\(%r8\),%r16
+ +[a-f0-9]+:   62 44 fc 10 03 38       add    \(%r8\),%r31,%r16
+ +[a-f0-9]+:   62 54 6c 10 29 38       sub    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:   62 54 6c 10 2b 38       sub    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:   62 54 6c 10 29 38       sub    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:   62 54 6c 10 2b 38       sub    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:   62 54 6c 10 19 38       sbb    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:   62 54 6c 10 1b 38       sbb    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:   62 54 6c 10 19 38       sbb    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:   62 54 6c 10 1b 38       sbb    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:   62 54 6c 10 21 38       and    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:   62 54 6c 10 23 38       and    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:   62 54 6c 10 21 38       and    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:   62 54 6c 10 23 38       and    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:   62 54 6c 10 09 38       or     %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:   62 54 6c 10 0b 38       or     \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:   62 54 6c 10 09 38       or     %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:   62 54 6c 10 0b 38       or     \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:   62 54 6c 10 31 38       xor    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:   62 54 6c 10 33 38       xor    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:   62 54 6c 10 31 38       xor    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:   62 54 6c 10 33 38       xor    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:   62 54 6c 10 11 38       adc    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:   62 54 6c 10 13 38       adc    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:   62 54 6c 10 11 38       adc    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:   62 54 6c 10 13 38       adc    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:   62 44 fc 10 01 f8       add    %r31,%r8,%r16
+ +[a-f0-9]+:   62 5c fc 10 03 c7       add    %r31,%r8,%r16
+ +[a-f0-9]+:   62 7c 6c 10 28 f9       sub    %r15b,%r17b,%r18b
+ +[a-f0-9]+:   62 c4 6c 10 2a cf       sub    %r15b,%r17b,%r18b
+ +[a-f0-9]+:   62 7c 6c 10 18 f9       sbb    %r15b,%r17b,%r18b
+ +[a-f0-9]+:   62 c4 6c 10 1a cf       sbb    %r15b,%r17b,%r18b
+ +[a-f0-9]+:   62 7c 6c 10 20 f9       and    %r15b,%r17b,%r18b
+ +[a-f0-9]+:   62 c4 6c 10 22 cf       and    %r15b,%r17b,%r18b
+ +[a-f0-9]+:   62 7c 6c 10 08 f9       or     %r15b,%r17b,%r18b
+ +[a-f0-9]+:   62 c4 6c 10 0a cf       or     %r15b,%r17b,%r18b
+ +[a-f0-9]+:   62 7c 6c 10 30 f9       xor    %r15b,%r17b,%r18b
+ +[a-f0-9]+:   62 c4 6c 10 32 cf       xor    %r15b,%r17b,%r18b
+ +[a-f0-9]+:   62 7c 6c 10 10 f9       adc    %r15b,%r17b,%r18b
+ +[a-f0-9]+:   62 c4 6c 10 12 cf       adc    %r15b,%r17b,%r18b
  +[a-f0-9]+:   b0 12                   mov    \$0x12,%al
  +[a-f0-9]+:   b8 45 03 00 00          mov    \$0x345,%eax
  +[a-f0-9]+:   b0 12                   mov    \$0x12,%al
index 5a53c36..041f98e 100644 (file)
@@ -134,6 +134,49 @@ _start:
        {load} xor (%rdi), %eax
        {store} xor %eax, (%rdi)
        {store} xor (%rdi), %eax
+       {load}  add    %r31,(%r8),%r16
+       {load}  add    (%r8),%r31,%r16
+       {store} add    %r31,(%r8),%r16
+       {store} add    (%r8),%r31,%r16
+       {load}  sub    %r15d,(%r8),%r18d
+       {load}  sub    (%r8),%r15d,%r18d
+       {store} sub    %r15d,(%r8),%r18d
+       {store} sub    (%r8),%r15d,%r18d
+       {load}  sbb    %r15d,(%r8),%r18d
+       {load}  sbb    (%r8),%r15d,%r18d
+       {store} sbb    %r15d,(%r8),%r18d
+       {store} sbb    (%r8),%r15d,%r18d
+       {load}  and    %r15d,(%r8),%r18d
+       {load}  and    (%r8),%r15d,%r18d
+       {store} and    %r15d,(%r8),%r18d
+       {store} and    (%r8),%r15d,%r18d
+       {load}  or     %r15d,(%r8),%r18d
+       {load}  or     (%r8),%r15d,%r18d
+       {store} or     %r15d,(%r8),%r18d
+       {store} or     (%r8),%r15d,%r18d
+       {load}  xor    %r15d,(%r8),%r18d
+       {load}  xor    (%r8),%r15d,%r18d
+       {store} xor    %r15d,(%r8),%r18d
+       {store} xor    (%r8),%r15d,%r18d
+       {load}  adc    %r15d,(%r8),%r18d
+       {load}  adc    (%r8),%r15d,%r18d
+       {store} adc    %r15d,(%r8),%r18d
+       {store} adc    (%r8),%r15d,%r18d
+
+       {store} add    %r31,%r8,%r16
+       {load}  add    %r31,%r8,%r16
+       {store} sub    %r15b,%r17b,%r18b
+       {load}  sub    %r15b,%r17b,%r18b
+       {store} sbb    %r15b,%r17b,%r18b
+       {load}  sbb    %r15b,%r17b,%r18b
+       {store} and    %r15b,%r17b,%r18b
+       {load}  and    %r15b,%r17b,%r18b
+       {store} or     %r15b,%r17b,%r18b
+       {load}  or     %r15b,%r17b,%r18b
+       {store} xor    %r15b,%r17b,%r18b
+       {load}  xor    %r15b,%r17b,%r18b
+       {store} adc    %r15b,%r17b,%r18b
+       {load}  adc    %r15b,%r17b,%r18b
 
        .irp m, mov, adc, add, and, cmp, or, sbb, sub, test, xor
        \m      $0x12, %al
index bfda747..3a3438a 100644 (file)
@@ -370,6 +370,7 @@ run_dump_test "x86-64-apx-rex2"
 run_dump_test "x86-64-apx-evex-promoted"
 run_dump_test "x86-64-apx-evex-promoted-intel"
 run_dump_test "x86-64-apx-evex-egpr"
+run_dump_test "x86-64-apx-ndd"
 run_dump_test "x86-64-avx512f-rcigrz-intel"
 run_dump_test "x86-64-avx512f-rcigrz"
 run_dump_test "x86-64-clwb"
index 2885063..cac3c39 100644 (file)
     { "vscatterpf0qp%XW",  { MVexVSIBQWpX }, PREFIX_DATA },
     { "vscatterpf1qp%XW",  { MVexVSIBQWpX }, PREFIX_DATA },
   },
+  /* REG_EVEX_MAP4_80 */
+  {
+    { "addA",  { VexGb, Eb, Ib }, NO_PREFIX },
+    { "orA",   { VexGb, Eb, Ib }, NO_PREFIX },
+    { "adcA",  { VexGb, Eb, Ib }, NO_PREFIX },
+    { "sbbA",  { VexGb, Eb, Ib }, NO_PREFIX },
+    { "andA",  { VexGb, Eb, Ib }, NO_PREFIX },
+    { "subA",  { VexGb, Eb, Ib }, NO_PREFIX },
+    { "xorA",  { VexGb, Eb, Ib }, NO_PREFIX },
+  },
+  /* REG_EVEX_MAP4_81 */
+  {
+    { "addQ",  { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
+    { "orQ",   { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
+    { "adcQ",  { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
+    { "sbbQ",  { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
+    { "andQ",  { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
+    { "subQ",  { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
+    { "xorQ",  { VexGv, Ev, Iv }, PREFIX_NP_OR_DATA },
+  },
+  /* REG_EVEX_MAP4_83 */
+  {
+    { "addQ",  { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
+    { "orQ",   { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
+    { "adcQ",  { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
+    { "sbbQ",  { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
+    { "andQ",  { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
+    { "subQ",  { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
+    { "xorQ",  { VexGv, Ev, sIb }, PREFIX_NP_OR_DATA },
+  },
+  /* REG_EVEX_MAP4_F6 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "notA",  { VexGb, Eb }, NO_PREFIX },
+    { "negA",  { VexGb, Eb }, NO_PREFIX },
+  },
+  /* REG_EVEX_MAP4_F7 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "notQ",  { VexGv, Ev }, PREFIX_NP_OR_DATA },
+    { "negQ",  { VexGv, Ev }, PREFIX_NP_OR_DATA },
+  },
+  /* REG_EVEX_MAP4_FE */
+  {
+    { "incA",  { VexGb, Eb }, NO_PREFIX },
+    { "decA",  { VexGb, Eb }, NO_PREFIX },
+  },
+  /* REG_EVEX_MAP4_FF */
+  {
+    { "incQ",  { VexGv, Ev }, PREFIX_NP_OR_DATA },
+    { "decQ",  { VexGv, Ev }, PREFIX_NP_OR_DATA },
+  },
index 90c063b..a8a891d 100644 (file)
@@ -875,64 +875,64 @@ static const struct dis386 evex_table[][256] = {
   /* EVEX_MAP4_ */
   {
     /* 00 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "addB",             { VexGb, Eb, Gb }, NO_PREFIX },
+    { "addS",             { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
+    { "addB",             { VexGb, Gb, EbS }, NO_PREFIX },
+    { "addS",             { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 08 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "orB",           { VexGb, Eb, Gb }, NO_PREFIX },
+    { "orS",           { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
+    { "orB",           { VexGb, Gb, EbS }, NO_PREFIX },
+    { "orS",           { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 10 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "adcB",          { VexGb, Eb, Gb }, NO_PREFIX },
+    { "adcS",          { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
+    { "adcB",          { VexGb, Gb, EbS }, NO_PREFIX },
+    { "adcS",          { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 18 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "sbbB",          { VexGb, Eb, Gb }, NO_PREFIX },
+    { "sbbS",          { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
+    { "sbbB",          { VexGb, Gb, EbS }, NO_PREFIX },
+    { "sbbS",          { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 20 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "andB",          { VexGb, Eb, Gb }, NO_PREFIX },
+    { "andS",          { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
+    { "andB",          { VexGb, Gb, EbS }, NO_PREFIX },
+    { "andS",          { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
+    { "shldS",         { VexGv, Ev, Gv, Ib }, PREFIX_NP_OR_DATA },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 28 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "subB",          { VexGb, Eb, Gb }, NO_PREFIX },
+    { "subS",          { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
+    { "subB",          { VexGb, Gb, EbS }, NO_PREFIX },
+    { "subS",          { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
+    { "shrdS",         { VexGv, Ev, Gv, Ib }, PREFIX_NP_OR_DATA },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 30 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "xorB",          { VexGb, Eb, Gb }, NO_PREFIX },
+    { "xorS",          { VexGv, Ev, Gv }, PREFIX_NP_OR_DATA },
+    { "xorB",          { VexGb, Gb, EbS }, NO_PREFIX },
+    { "xorS",          { VexGv, Gv, EvS }, PREFIX_NP_OR_DATA },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
@@ -947,23 +947,23 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     /* 40 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "%CFcmovoS",     { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmovnoS",    { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmovbS",     { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmovaeS",    { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmoveS",     { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmovneS",    { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmovbeS",    { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmovaS",     { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
     /* 48 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "%CFcmovsS",     { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmovnsS",    { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmovpS",     { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmovnpS",    { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmovlS",     { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmovgeS",    { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmovleS",    { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
+    { "%CFcmovgS",     { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
     /* 50 */
     { Bad_Opcode },
     { Bad_Opcode },
@@ -1019,10 +1019,10 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     /* 80 */
+    { REG_TABLE (REG_EVEX_MAP4_80) },
+    { REG_TABLE (REG_EVEX_MAP4_81) },
     { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { REG_TABLE (REG_EVEX_MAP4_83) },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
@@ -1060,7 +1060,7 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
-    { Bad_Opcode },
+    { "shldS", { VexGv, Ev, Gv, CL }, PREFIX_NP_OR_DATA },
     { Bad_Opcode },
     { Bad_Opcode },
     /* A8 */
@@ -1069,9 +1069,9 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
+    { "shrdS", { VexGv, Ev, Gv, CL }, PREFIX_NP_OR_DATA },
     { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "imulS", { VexGv, Gv, Ev }, PREFIX_NP_OR_DATA },
     /* B0 */
     { Bad_Opcode },
     { Bad_Opcode },
@@ -1091,8 +1091,8 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     /* C0 */
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { REG_TABLE (REG_C0) },
+    { REG_TABLE (REG_C1) },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
@@ -1109,10 +1109,10 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     /* D0 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { REG_TABLE (REG_D0) },
+    { REG_TABLE (REG_D1) },
+    { REG_TABLE (REG_D2) },
+    { REG_TABLE (REG_D3) },
     { "sha1rnds4",     { XM, EXxmm, Ib }, NO_PREFIX },
     { Bad_Opcode },
     { Bad_Opcode },
@@ -1151,8 +1151,8 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { REG_TABLE (REG_EVEX_MAP4_F6) },
+    { REG_TABLE (REG_EVEX_MAP4_F7) },
     /* F8 */
     { PREFIX_TABLE (PREFIX_EVEX_MAP4_F8) },
     { "movdiri",       { Mdq, Gdq }, NO_PREFIX },
@@ -1160,8 +1160,8 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { PREFIX_TABLE (PREFIX_0F38FC) },
     { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { REG_TABLE (REG_EVEX_MAP4_FE) },
+    { REG_TABLE (REG_EVEX_MAP4_FF) },
   },
   /* EVEX_MAP5_ */
   {
index 5a72a20..aac08c1 100644 (file)
@@ -226,6 +226,9 @@ struct instr_info
   }
   vex;
 
+/* For APX EVEX-promoted prefix, EVEX.ND shares the same bit as vex.b.  */
+#define nd b
+
   enum evex_type evex_type;
 
   /* Remember if the current op is a jump instruction.  */
@@ -578,6 +581,8 @@ fetch_error (const instr_info *ins)
 #define VexGatherD { OP_VEX, vex_vsib_d_w_dq_mode }
 #define VexGatherQ { OP_VEX, vex_vsib_q_w_dq_mode }
 #define VexGdq { OP_VEX, dq_mode }
+#define VexGb { OP_VEX, b_mode }
+#define VexGv { OP_VEX, v_mode }
 #define VexTmm { OP_VEX, tmm_mode }
 #define XMVexI4 { OP_REG_VexI4, x_mode }
 #define XMVexScalarI4 { OP_REG_VexI4, scalar_mode }
@@ -892,6 +897,13 @@ enum
   REG_EVEX_0F73,
   REG_EVEX_0F38C6_L_2,
   REG_EVEX_0F38C7_L_2,
+  REG_EVEX_MAP4_80,
+  REG_EVEX_MAP4_81,
+  REG_EVEX_MAP4_83,
+  REG_EVEX_MAP4_F6,
+  REG_EVEX_MAP4_F7,
+  REG_EVEX_MAP4_FE,
+  REG_EVEX_MAP4_FF,
 };
 
 enum
@@ -2599,25 +2611,25 @@ static const struct dis386 reg_table[][8] = {
   },
   /* REG_C0 */
   {
-    { "rolA",  { Eb, Ib }, 0 },
-    { "rorA",  { Eb, Ib }, 0 },
-    { "rclA",  { Eb, Ib }, 0 },
-    { "rcrA",  { Eb, Ib }, 0 },
-    { "shlA",  { Eb, Ib }, 0 },
-    { "shrA",  { Eb, Ib }, 0 },
-    { "shlA",  { Eb, Ib }, 0 },
-    { "sarA",  { Eb, Ib }, 0 },
+    { "rolA",  { VexGb, Eb, Ib }, NO_PREFIX },
+    { "rorA",  { VexGb, Eb, Ib }, NO_PREFIX },
+    { "rclA",  { VexGb, Eb, Ib }, NO_PREFIX },
+    { "rcrA",  { VexGb, Eb, Ib }, NO_PREFIX },
+    { "shlA",  { VexGb, Eb, Ib }, NO_PREFIX },
+    { "shrA",  { VexGb, Eb, Ib }, NO_PREFIX },
+    { "shlA",  { VexGb, Eb, Ib }, NO_PREFIX },
+    { "sarA",  { VexGb, Eb, Ib }, NO_PREFIX },
   },
   /* REG_C1 */
   {
-    { "rolQ",  { Ev, Ib }, 0 },
-    { "rorQ",  { Ev, Ib }, 0 },
-    { "rclQ",  { Ev, Ib }, 0 },
-    { "rcrQ",  { Ev, Ib }, 0 },
-    { "shlQ",  { Ev, Ib }, 0 },
-    { "shrQ",  { Ev, Ib }, 0 },
-    { "shlQ",  { Ev, Ib }, 0 },
-    { "sarQ",  { Ev, Ib }, 0 },
+    { "rolQ",  { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
+    { "rorQ",  { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
+    { "rclQ",  { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
+    { "rcrQ",  { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
+    { "shlQ",  { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
+    { "shrQ",  { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
+    { "shlQ",  { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
+    { "sarQ",  { VexGv, Ev, Ib }, PREFIX_NP_OR_DATA },
   },
   /* REG_C6 */
   {
@@ -2643,47 +2655,47 @@ static const struct dis386 reg_table[][8] = {
   },
   /* REG_D0 */
   {
-    { "rolA",  { Eb, I1 }, 0 },
-    { "rorA",  { Eb, I1 }, 0 },
-    { "rclA",  { Eb, I1 }, 0 },
-    { "rcrA",  { Eb, I1 }, 0 },
-    { "shlA",  { Eb, I1 }, 0 },
-    { "shrA",  { Eb, I1 }, 0 },
-    { "shlA",  { Eb, I1 }, 0 },
-    { "sarA",  { Eb, I1 }, 0 },
+    { "rolA",  { VexGb, Eb, I1 }, NO_PREFIX },
+    { "rorA",  { VexGb, Eb, I1 }, NO_PREFIX },
+    { "rclA",  { VexGb, Eb, I1 }, NO_PREFIX },
+    { "rcrA",  { VexGb, Eb, I1 }, NO_PREFIX },
+    { "shlA",  { VexGb, Eb, I1 }, NO_PREFIX },
+    { "shrA",  { VexGb, Eb, I1 }, NO_PREFIX },
+    { "shlA",  { VexGb, Eb, I1 }, NO_PREFIX },
+    { "sarA",  { VexGb, Eb, I1 }, NO_PREFIX },
   },
   /* REG_D1 */
   {
-    { "rolQ",  { Ev, I1 }, 0 },
-    { "rorQ",  { Ev, I1 }, 0 },
-    { "rclQ",  { Ev, I1 }, 0 },
-    { "rcrQ",  { Ev, I1 }, 0 },
-    { "shlQ",  { Ev, I1 }, 0 },
-    { "shrQ",  { Ev, I1 }, 0 },
-    { "shlQ",  { Ev, I1 }, 0 },
-    { "sarQ",  { Ev, I1 }, 0 },
+    { "rolQ",  { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
+    { "rorQ",  { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
+    { "rclQ",  { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
+    { "rcrQ",  { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
+    { "shlQ",  { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
+    { "shrQ",  { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
+    { "shlQ",  { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
+    { "sarQ",  { VexGv, Ev, I1 }, PREFIX_NP_OR_DATA },
   },
   /* REG_D2 */
   {
-    { "rolA",  { Eb, CL }, 0 },
-    { "rorA",  { Eb, CL }, 0 },
-    { "rclA",  { Eb, CL }, 0 },
-    { "rcrA",  { Eb, CL }, 0 },
-    { "shlA",  { Eb, CL }, 0 },
-    { "shrA",  { Eb, CL }, 0 },
-    { "shlA",  { Eb, CL }, 0 },
-    { "sarA",  { Eb, CL }, 0 },
+    { "rolA",  { VexGb, Eb, CL }, NO_PREFIX },
+    { "rorA",  { VexGb, Eb, CL }, NO_PREFIX },
+    { "rclA",  { VexGb, Eb, CL }, NO_PREFIX },
+    { "rcrA",  { VexGb, Eb, CL }, NO_PREFIX },
+    { "shlA",  { VexGb, Eb, CL }, NO_PREFIX },
+    { "shrA",  { VexGb, Eb, CL }, NO_PREFIX },
+    { "shlA",  { VexGb, Eb, CL }, NO_PREFIX },
+    { "sarA",  { VexGb, Eb, CL }, NO_PREFIX },
   },
   /* REG_D3 */
   {
-    { "rolQ",  { Ev, CL }, 0 },
-    { "rorQ",  { Ev, CL }, 0 },
-    { "rclQ",  { Ev, CL }, 0 },
-    { "rcrQ",  { Ev, CL }, 0 },
-    { "shlQ",  { Ev, CL }, 0 },
-    { "shrQ",  { Ev, CL }, 0 },
-    { "shlQ",  { Ev, CL }, 0 },
-    { "sarQ",  { Ev, CL }, 0 },
+    { "rolQ",  { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
+    { "rorQ",  { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
+    { "rclQ",  { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
+    { "rcrQ",  { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
+    { "shlQ",  { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
+    { "shrQ",  { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
+    { "shlQ",  { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
+    { "sarQ",  { VexGv, Ev, CL }, PREFIX_NP_OR_DATA },
   },
   /* REG_F6 */
   {
@@ -3633,8 +3645,8 @@ static const struct dis386 prefix_table[][4] = {
   /* PREFIX_0F38F6 */
   {
     { "wrssK", { M, Gdq }, 0 },
-    { "adoxS", { Gdq, Edq}, 0 },
-    { "adcxS", { Gdq, Edq}, 0 },
+    { "adoxS", { VexGdq, Gdq, Edq}, 0 },
+    { "adcxS", { VexGdq, Gdq, Edq}, 0 },
     { Bad_Opcode },
   },
 
@@ -9120,6 +9132,12 @@ get_valid_dis386 (const struct dis386 *dp, instr_info *ins)
          ins->rex2 &= ~REX_R;
        }
 
+      /* EVEX from legacy instructions, when the EVEX.ND bit is 0,
+        all bits of EVEX.vvvv and EVEX.V' must be 1.  */
+      if (ins->evex_type == evex_from_legacy && !ins->vex.nd
+         && (ins->vex.register_specifier || !ins->vex.v))
+       return &bad_opcode;
+
       ins->need_vex = 4;
 
       /* EVEX from legacy instructions require that EVEX.z, EVEX.L’L and the
@@ -9137,8 +9155,10 @@ get_valid_dis386 (const struct dis386 *dp, instr_info *ins)
       if (!fetch_modrm (ins))
        return &err_opcode;
 
-      /* Set vector length.  */
-      if (ins->modrm.mod == 3 && ins->vex.b)
+      /* Set vector length. For EVEX-promoted instructions, evex.ll == 0b00,
+        which has the same encoding as vex.length == 128 and they can share
+        the same processing with vex.length in OP_VEX.  */
+      if (ins->modrm.mod == 3 && ins->vex.b && ins->evex_type != evex_from_legacy)
        ins->vex.length = 512;
       else
        {
@@ -9605,8 +9625,8 @@ print_insn (bfd_vma pc, disassemble_info *info, int intel_syntax)
            }
 
          /* Check whether rounding control was enabled for an insn not
-            supporting it.  */
-         if (ins.modrm.mod == 3 && ins.vex.b
+            supporting it, when evex.b is not treated as evex.nd.  */
+         if (ins.modrm.mod == 3 && ins.vex.b && ins.evex_type == evex_default
              && !(ins.evex_used & EVEX_b_used))
            {
              for (i = 0; i < MAX_OPERANDS; ++i)
@@ -10499,16 +10519,23 @@ putop (instr_info *ins, const char *in_template, int sizeflag)
          ins->used_prefixes |= (ins->prefixes & PREFIX_ADDR);
          break;
        case 'F':
-         if (ins->intel_syntax)
-           break;
-         if ((ins->prefixes & PREFIX_ADDR) || (sizeflag & SUFFIX_ALWAYS))
+         if (l == 0)
            {
-             if (sizeflag & AFLAG)
-               *ins->obufp++ = ins->address_mode == mode_64bit ? 'q' : 'l';
-             else
-               *ins->obufp++ = ins->address_mode == mode_64bit ? 'l' : 'w';
-             ins->used_prefixes |= (ins->prefixes & PREFIX_ADDR);
+             if (ins->intel_syntax)
+               break;
+             if ((ins->prefixes & PREFIX_ADDR) || (sizeflag & SUFFIX_ALWAYS))
+               {
+                 if (sizeflag & AFLAG)
+                   *ins->obufp++ = ins->address_mode == mode_64bit ? 'q' : 'l';
+                 else
+                   *ins->obufp++ = ins->address_mode == mode_64bit ? 'l' : 'w';
+                 ins->used_prefixes |= (ins->prefixes & PREFIX_ADDR);
+               }
            }
+         else if (l == 1 && last[0] == 'C')
+           break;
+         else
+           abort ();
          break;
        case 'G':
          if (ins->intel_syntax || (ins->obufp[-1] != 's'
@@ -11072,7 +11099,8 @@ print_displacement (instr_info *ins, bfd_signed_vma val)
 static void
 intel_operand_size (instr_info *ins, int bytemode, int sizeflag)
 {
-  if (ins->vex.b)
+  /* Check if there is a broadcast, when evex.b is not treated as evex.nd.  */
+  if (ins->vex.b && ins->evex_type == evex_default)
     {
       if (!ins->vex.no_broadcast)
        switch (bytemode)
@@ -11569,6 +11597,7 @@ OP_E_memory (instr_info *ins, int bytemode, int sizeflag)
 
   add += (ins->rex2 & REX_B) ? 16 : 0;
 
+  /* Handles EVEX other than APX EVEX-promoted instructions.  */
   if (ins->vex.evex && ins->evex_type == evex_default)
     {
 
@@ -12004,7 +12033,7 @@ OP_E_memory (instr_info *ins, int bytemode, int sizeflag)
          print_operand_value (ins, disp & 0xffff, dis_style_text);
        }
     }
-  if (ins->vex.b)
+  if (ins->vex.b && ins->evex_type == evex_default)
     {
       ins->evex_used |= EVEX_b_used;
 
@@ -13370,6 +13399,13 @@ OP_VEX (instr_info *ins, int bytemode, int sizeflag ATTRIBUTE_UNUSED)
   if (!ins->need_vex)
     return true;
 
+  if (ins->evex_type == evex_from_legacy)
+    {
+      ins->evex_used |= EVEX_b_used;
+      if (!ins->vex.nd)
+       return true;
+    }
+
   reg = ins->vex.register_specifier;
   ins->vex.register_specifier = 0;
   if (ins->address_mode != mode_64bit)
@@ -13461,12 +13497,19 @@ OP_VEX (instr_info *ins, int bytemode, int sizeflag ATTRIBUTE_UNUSED)
          names = att_names_xmm;
          ins->evex_used |= EVEX_len_used;
          break;
+       case v_mode:
        case dq_mode:
          if (ins->rex & REX_W)
            names = att_names64;
+         else if (bytemode == v_mode
+                  && !(sizeflag & DFLAG))
+           names = att_names16;
          else
            names = att_names32;
          break;
+       case b_mode:
+         names = att_names8rex;
+         break;
        case mask_bd_mode:
        case mask_mode:
          if (reg > 0x7)
index 064ec48..9e8c827 100644 (file)
@@ -638,8 +638,10 @@ enum
   Vex,
   /* How to encode VEX.vvvv:
      0: VEX.vvvv must be 1111b.
-     1: VEX.vvvv encodes one of the register operands.
+     1: VEX.vvvv encodes one of the src register operands.
+     2: VEX.vvvv encodes the dest register operand.
    */
+#define VexVVVV_DST   2
   VexVVVV,
   /* How the VEX.W bit is used:
      0: Set by the REX.W bit.
@@ -776,7 +778,7 @@ typedef struct i386_opcode_modifier
   unsigned int immext:1;
   unsigned int norex64:1;
   unsigned int vex:2;
-  unsigned int vexvvvv:1;
+  unsigned int vexvvvv:2;
   unsigned int vexw:2;
   unsigned int opcodeprefix:2;
   unsigned int sib:3;
index 11b8c0b..54c6590 100644 (file)
 
 #define Disp8ShiftVL Disp8MemShift=DISP8_SHIFT_VL
 
+#define DstVVVV VexVVVV=VexVVVV_DST
+
 // The template supports VEX format for cpuid and EVEX format for cpuid & apx_f.
 #define APX_F(cpuid) cpuid&(cpuid|APX_F)
 
 // The EVEX purpose of StaticRounding appears only together with SAE. Re-use
 // the bit to mark commutative VEX encodings where swapping the source
 // operands may allow to switch from 3-byte to 2-byte VEX encoding.
+// And re-use the bit to mark some NDD insns that swapping the source operands
+// may allow to switch from EVEX encoding to REX2 encoding.
 #define C StaticRounding
 
 #define FP 387|287|8087
@@ -292,26 +296,38 @@ std, 0xfd, 0, NoSuf, {}
 sti, 0xfb, 0, NoSuf, {}
 
 // Arithmetic.
+add, 0x0, APX_F, D|C|W|CheckOperandSize|Modrm|No_sSuf|DstVVVV|EVexMap4|NF, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 add, 0x0, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+add, 0x83/0, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 add, 0x83/0, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 add, 0x4, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
+add, 0x80/0, APX_F, W|Modrm|CheckOperandSize|No_sSuf|DstVVVV|EVexMap4|NF, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64}
 add, 0x80/0, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
 inc, 0x40, No64, No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32 }
+inc, 0xfe/0, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, {Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64}
 inc, 0xfe/0, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+sub, 0x28, APX_F, D|W|CheckOperandSize|Modrm|No_sSuf|DstVVVV|EVexMap4|NF, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64, }
 sub, 0x28, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+sub, 0x83/5, APX_F, Modrm|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 sub, 0x83/5, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 sub, 0x2c, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
+sub, 0x80/5, APX_F, W|Modrm|CheckOperandSize|No_sSuf|DstVVVV|EVexMap4|NF, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 sub, 0x80/5, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
 dec, 0x48, No64, No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32 }
+dec, 0xfe/1, APX_F, W|Modrm|CheckOperandSize|No_sSuf|DstVVVV|EVexMap4|NF, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 dec, 0xfe/1, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+sbb, 0x18, APX_F, D|W|CheckOperandSize|Modrm|No_sSuf|DstVVVV|EVexMap4, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 sbb, 0x18, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+sbb, 0x83/3, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 sbb, 0x83/3, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 sbb, 0x1c, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
+sbb, 0x80/3, APX_F, W|Modrm|CheckOperandSize|No_sSuf|DstVVVV|EVexMap4, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 sbb, 0x80/3, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+sbb, 0x80/3, APX_F, W|Modrm|EVexMap4|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
 cmp, 0x38, 0, D|W|CheckOperandSize|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 cmp, 0x83/7, 0, Modrm|No_bSuf|No_sSuf, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
@@ -322,30 +338,45 @@ test, 0x84, 0, D|W|C|CheckOperandSize|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64, R
 test, 0xa8, 0, W|No_sSuf|Optimize, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
 test, 0xf6/0, 0, W|Modrm|No_sSuf|Optimize, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+and, 0x20, APX_F, D|C|W|CheckOperandSize|Modrm|No_sSuf|DstVVVV|EVexMap4|NF, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 and, 0x20, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+and, 0x83/4, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 and, 0x83/4, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock|Optimize, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 and, 0x24, 0, W|No_sSuf|Optimize, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
+and, 0x80/4, APX_F, W|Modrm|CheckOperandSize|No_sSuf|DstVVVV|EVexMap4|NF, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 and, 0x80/4, 0, W|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+or, 0x8, APX_F, D|C|W|CheckOperandSize|Modrm|No_sSuf|DstVVVV|EVexMap4|NF, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 or, 0x8, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+or, 0x83/1, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 or, 0x83/1, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 or, 0xc, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
+or, 0x80/1, APX_F, W|Modrm|CheckOperandSize|No_sSuf|DstVVVV|EVexMap4|NF, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 or, 0x80/1, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+xor, 0x30, APX_F, D|C|W|CheckOperandSize|Modrm|No_sSuf|DstVVVV|EVexMap4|NF, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 xor, 0x30, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+xor, 0x83/6, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 xor, 0x83/6, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 xor, 0x34, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
+xor, 0x80/6, APX_F, W|Modrm|CheckOperandSize|No_sSuf|DstVVVV|EVexMap4|NF, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 xor, 0x80/6, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
 // clr with 1 operand is really xor with 2 operands.
 clr, 0x30, 0, W|Modrm|No_sSuf|RegKludge|Optimize, { Reg8|Reg16|Reg32|Reg64 }
 
+adc, 0x10, APX_F, D|C|W|CheckOperandSize|Modrm|No_sSuf|DstVVVV|EVexMap4, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 adc, 0x10, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+adc, 0x83/2, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 adc, 0x83/2, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 adc, 0x14, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
+adc, 0x80/2, APX_F, W|Modrm|CheckOperandSize|No_sSuf|DstVVVV|EVexMap4, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 adc, 0x80/2, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+neg, 0xf6/3, APX_F, W|Modrm|CheckOperandSize|No_sSuf|DstVVVV|EVexMap4|NF, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 neg, 0xf6/3, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+
+not, 0xf6/2, APX_F, W|Modrm|CheckOperandSize|No_sSuf|DstVVVV|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 not, 0xf6/2, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
 aaa, 0x37, No64, NoSuf, {}
@@ -379,6 +410,7 @@ cqto, 0x99, x64, Size64|NoSuf, {}
 // These multiplies can only be selected with single operand forms.
 mul, 0xf6/4, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 imul, 0xf6/5, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+imul, 0xaf, APX_F, C|Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64 }
 imul, 0xfaf, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 imul, 0x6b, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm8S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 imul, 0x69, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm16|Imm32|Imm32S, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
@@ -393,52 +425,90 @@ div, 0xf6/6, 0, W|CheckOperandSize|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspe
 idiv, 0xf6/7, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 idiv, 0xf6/7, 0, W|CheckOperandSize|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Acc|Byte|Word|Dword|Qword }
 
+rol, 0xd0/0, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 rol, 0xd0/0, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rol, 0xc0/0, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { Imm8|Imm8S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 rol, 0xc0/0, i186, W|Modrm|No_sSuf, { Imm8|Imm8S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rol, 0xd2/0, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 rol, 0xd2/0, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 rol, 0xd0/0, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+ror, 0xd0/1, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 ror, 0xd0/1, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+ror, 0xc0/1, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { Imm8|Imm8S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 ror, 0xc0/1, i186, W|Modrm|No_sSuf, { Imm8|Imm8S, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+ror, 0xd2/1, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 ror, 0xd2/1, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 ror, 0xd0/1, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+rcl, 0xd0/2, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 rcl, 0xd0/2, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rcl, 0xd0/2, APX_F, W|Modrm|No_sSuf|EVexMap4, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rcl, 0xc0/2, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 rcl, 0xc0/2, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rcl, 0xc0/2, APX_F, W|Modrm|No_sSuf|EVexMap4, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rcl, 0xd2/2, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 rcl, 0xd2/2, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rcl, 0xd2/2, APX_F, W|Modrm|No_sSuf|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 rcl, 0xd0/2, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rcl, 0xd0/2, APX_F, W|Modrm|No_sSuf|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+rcr, 0xd0/3, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 rcr, 0xd0/3, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rcr, 0xd0/3, APX_F, W|Modrm|No_sSuf|EVexMap4, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rcr, 0xc0/3, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 rcr, 0xc0/3, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rcr, 0xc0/3, APX_F, W|Modrm|No_sSuf|EVexMap4, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rcr, 0xd2/3, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 rcr, 0xd2/3, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rcr, 0xd2/3, APX_F, W|Modrm|No_sSuf|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 rcr, 0xd0/3, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+rcr, 0xd0/3, APX_F, W|Modrm|No_sSuf|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+sal, 0xd0/4, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 sal, 0xd0/4, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+sal, 0xc0/4, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 sal, 0xc0/4, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+sal, 0xd2/4, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 sal, 0xd2/4, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 sal, 0xd0/4, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+shl, 0xd0/4, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 shl, 0xd0/4, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+shl, 0xc0/4, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 shl, 0xc0/4, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+shl, 0xd2/4, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 shl, 0xd2/4, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 shl, 0xd0/4, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+shr, 0xd0/5, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 shr, 0xd0/5, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+shr, 0xc0/5, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 shr, 0xc0/5, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+shr, 0xd2/5, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 shr, 0xd2/5, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 shr, 0xd0/5, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+sar, 0xd0/7, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 sar, 0xd0/7, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+sar, 0xc0/7, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 sar, 0xc0/7, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+sar, 0xd2/7, APX_F, W|Modrm|No_sSuf|CheckOperandSize|DstVVVV|EVexMap4|NF, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 sar, 0xd2/7, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 sar, 0xd0/7, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+shld, 0x24, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { Imm8, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 shld, 0xfa4, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm8, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+shld, 0xa5, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { ShiftCount, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 shld, 0xfa5, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { ShiftCount, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+shld, 0xa5, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 shld, 0xfa5, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
+shrd, 0x2c, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { Imm8, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 shrd, 0xfac, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm8, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+shrd, 0xad, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { ShiftCount, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 shrd, 0xfad, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { ShiftCount, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
+shrd, 0xad, APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4|NF, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 shrd, 0xfad, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Unspecified|BaseIndex }
 
 // Control transfer instructions.
@@ -940,6 +1010,7 @@ ud2b, 0xfb9, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|U
 // 3rd official undefined instr (older CPUs don't take a ModR/M byte)
 ud0, 0xfff, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 
+cmov<cc>, 0x4<cc:opc>, CMOV&APX_F, Modrm|CheckOperandSize|No_bSuf|No_sSuf|DstVVVV|EVexMap4, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64 }
 cmov<cc>, 0xf4<cc:opc>, CMOV, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 
 fcmovb, 0xda/0, i687, Modrm|NoSuf, { FloatReg, FloatAcc }
@@ -2031,8 +2102,12 @@ xcryptofb, 0xf30fa7e8, PadLock, NoSuf|RepPrefixOk, {}
 xstore, 0xfa7c0, PadLock, NoSuf|RepPrefixOk, {}
 
 // Multy-precision Add Carry, rdseed instructions.
+adcx, 0x6666, ADX&APX_F, C|Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|DstVVVV|EVexMap4, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64, Reg32|Reg64 }
 adcx, 0x660f38f6, ADX, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
+adcx, 0x6666, ADX&APX_F, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|EVexMap4, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
+adox, 0xf366, ADX&APX_F, C|Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|DstVVVV|EVexMap4, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64, Reg32|Reg64 }
 adox, 0xf30f38f6, ADX, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
+adox, 0xf366, ADX&APX_F, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|EVexMap4, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
 rdseed, 0xfc7/7, RdSeed, Modrm|NoSuf, { Reg16|Reg32|Reg64 }
 
 // SMAP instructions.
index 481c98f..b451f5b 100644 (file)
@@ -686,6 +686,17 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_add, 0x00, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_add, 0x00, 2, SPACE_BASE, None,
     { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -695,6 +706,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_add, 0x83, 3, SPACE_EVEXMAP4, 0,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_add, 0x83, 2, SPACE_BASE, 0,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -713,6 +735,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_add, 0x80, 3, SPACE_EVEXMAP4, 0,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_add, 0x80, 2, SPACE_BASE, 0,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -729,6 +762,15 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_inc, 0xfe, 2, SPACE_EVEXMAP4, 0,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_inc, 0xfe, 1, SPACE_BASE, 0,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -736,6 +778,17 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_sub, 0x28, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_sub, 0x28, 2, SPACE_BASE, None,
     { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
@@ -745,6 +798,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_sub, 0x83, 3, SPACE_EVEXMAP4, 5,
+    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_sub, 0x83, 2, SPACE_BASE, 5,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -763,6 +827,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_sub, 0x80, 3, SPACE_EVEXMAP4, 5,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_sub, 0x80, 2, SPACE_BASE, 5,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -779,6 +854,15 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_dec, 0xfe, 2, SPACE_EVEXMAP4, 1,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_dec, 0xfe, 1, SPACE_BASE, 1,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -786,6 +870,17 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_sbb, 0x18, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_sbb, 0x18, 2, SPACE_BASE, None,
     { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -795,6 +890,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_sbb, 0x83, 3, SPACE_EVEXMAP4, 3,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_sbb, 0x83, 2, SPACE_BASE, 3,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -813,6 +919,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_sbb, 0x80, 3, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_sbb, 0x80, 2, SPACE_BASE, 3,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -822,6 +939,15 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_sbb, 0x80, 2, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } } } },
   { MN_cmp, 0x38, 2, SPACE_BASE, None,
     { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -885,6 +1011,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_and, 0x20, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_and, 0x20, 2, SPACE_BASE, None,
     { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
@@ -894,6 +1031,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_and, 0x83, 3, SPACE_EVEXMAP4, 4,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_and, 0x83, 2, SPACE_BASE, 4,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
@@ -912,6 +1060,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_and, 0x80, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_and, 0x80, 2, SPACE_BASE, 4,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
@@ -921,6 +1080,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_or, 0x08, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_or, 0x08, 2, SPACE_BASE, None,
     { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
@@ -930,6 +1100,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_or, 0x83, 3, SPACE_EVEXMAP4, 1,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_or, 0x83, 2, SPACE_BASE, 1,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -948,6 +1129,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_or, 0x80, 3, SPACE_EVEXMAP4, 1,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_or, 0x80, 2, SPACE_BASE, 1,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -957,6 +1149,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_xor, 0x30, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_xor, 0x30, 2, SPACE_BASE, None,
     { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
@@ -966,6 +1169,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_xor, 0x83, 3, SPACE_EVEXMAP4, 6,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_xor, 0x83, 2, SPACE_BASE, 6,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -984,6 +1198,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_xor, 0x80, 3, SPACE_EVEXMAP4, 6,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_xor, 0x80, 2, SPACE_BASE, 6,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1000,6 +1225,17 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_adc, 0x10, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_adc, 0x10, 2, SPACE_BASE, None,
     { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1009,6 +1245,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_adc, 0x83, 3, SPACE_EVEXMAP4, 2,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_adc, 0x83, 2, SPACE_BASE, 2,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1027,6 +1274,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_adc, 0x80, 3, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_adc, 0x80, 2, SPACE_BASE, 2,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1036,6 +1294,15 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_neg, 0xf6, 2, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_neg, 0xf6, 1, SPACE_BASE, 3,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1043,6 +1310,15 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_not, 0xf6, 2, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_not, 0xf6, 1, SPACE_BASE, 2,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1204,6 +1480,17 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_imul, 0xaf, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_imul, 0xaf, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1285,6 +1572,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_rol, 0xd0, 3, SPACE_EVEXMAP4, 0,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_rol, 0xd0, 2, SPACE_BASE, 0,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1294,6 +1592,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_rol, 0xc0, 3, SPACE_EVEXMAP4, 0,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_rol, 0xc0, 2, SPACE_BASE, 0,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1303,6 +1612,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_rol, 0xd2, 3, SPACE_EVEXMAP4, 0,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_rol, 0xd2, 2, SPACE_BASE, 0,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1319,6 +1639,17 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_ror, 0xd0, 3, SPACE_EVEXMAP4, 1,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_ror, 0xd0, 2, SPACE_BASE, 1,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1328,6 +1659,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_ror, 0xc0, 3, SPACE_EVEXMAP4, 1,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_ror, 0xc0, 2, SPACE_BASE, 1,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1337,6 +1679,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_ror, 0xd2, 3, SPACE_EVEXMAP4, 1,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_ror, 0xd2, 2, SPACE_BASE, 1,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1353,6 +1706,17 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcl, 0xd0, 3, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_rcl, 0xd0, 2, SPACE_BASE, 2,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1362,6 +1726,26 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcl, 0xd0, 2, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcl, 0xc0, 3, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_rcl, 0xc0, 2, SPACE_BASE, 2,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1371,6 +1755,26 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcl, 0xc0, 2, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcl, 0xd2, 3, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_rcl, 0xd2, 2, SPACE_BASE, 2,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1380,6 +1784,15 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcl, 0xd2, 2, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } } } },
   { MN_rcl, 0xd0, 1, SPACE_BASE, 2,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1387,6 +1800,24 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcl, 0xd0, 1, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcr, 0xd0, 3, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_rcr, 0xd0, 2, SPACE_BASE, 3,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1396,6 +1827,26 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcr, 0xd0, 2, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcr, 0xc0, 3, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_rcr, 0xc0, 2, SPACE_BASE, 3,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1405,6 +1856,26 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcr, 0xc0, 2, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcr, 0xd2, 3, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_rcr, 0xd2, 2, SPACE_BASE, 3,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1414,6 +1885,15 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcr, 0xd2, 2, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } } } },
   { MN_rcr, 0xd0, 1, SPACE_BASE, 3,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1421,6 +1901,24 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcr, 0xd0, 1, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } } } },
+  { MN_sal, 0xd0, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_sal, 0xd0, 2, SPACE_BASE, 4,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1430,6 +1928,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_sal, 0xc0, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_sal, 0xc0, 2, SPACE_BASE, 4,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1439,6 +1948,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_sal, 0xd2, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_sal, 0xd2, 2, SPACE_BASE, 4,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1455,6 +1975,17 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_shl, 0xd0, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_shl, 0xd0, 2, SPACE_BASE, 4,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1464,6 +1995,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_shl, 0xc0, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_shl, 0xc0, 2, SPACE_BASE, 4,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1473,6 +2015,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_shl, 0xd2, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_shl, 0xd2, 2, SPACE_BASE, 4,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1489,6 +2042,17 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_shr, 0xd0, 3, SPACE_EVEXMAP4, 5,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_shr, 0xd0, 2, SPACE_BASE, 5,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1498,6 +2062,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_shr, 0xc0, 3, SPACE_EVEXMAP4, 5,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_shr, 0xc0, 2, SPACE_BASE, 5,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1507,6 +2082,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_shr, 0xd2, 3, SPACE_EVEXMAP4, 5,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_shr, 0xd2, 2, SPACE_BASE, 5,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1523,6 +2109,17 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_sar, 0xd0, 3, SPACE_EVEXMAP4, 7,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_sar, 0xd0, 2, SPACE_BASE, 7,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1532,6 +2129,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_sar, 0xc0, 3, SPACE_EVEXMAP4, 7,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_sar, 0xc0, 2, SPACE_BASE, 7,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1541,6 +2149,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_sar, 0xd2, 3, SPACE_EVEXMAP4, 7,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_sar, 0xd2, 2, SPACE_BASE, 7,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1557,6 +2176,19 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_shld, 0x24, 4, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_shld, 0xa4, 3, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1568,6 +2200,19 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_shld, 0xa5, 4, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_shld, 0xa5, 3, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1579,6 +2224,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_shld, 0xa5, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_shld, 0xa5, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1588,6 +2244,19 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_shrd, 0x2c, 4, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_shrd, 0xac, 3, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1599,6 +2268,19 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_shrd, 0xad, 4, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_shrd, 0xad, 3, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -1610,6 +2292,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 1, 0 } } } },
+  { MN_shrd, 0xad, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_shrd, 0xad, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4804,6 +5497,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovo, 0x40, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovo, 0x40, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4813,6 +5517,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovno, 0x41, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovno, 0x41, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4822,6 +5537,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovb, 0x42, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovb, 0x42, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4831,6 +5557,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovc, 0x42, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovc, 0x42, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4840,6 +5577,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnae, 0x42, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnae, 0x42, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4849,6 +5597,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnb, 0x43, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnb, 0x43, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4858,6 +5617,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnc, 0x43, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnc, 0x43, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4867,6 +5637,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovae, 0x43, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovae, 0x43, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4876,6 +5657,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmove, 0x44, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmove, 0x44, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4885,6 +5677,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovz, 0x44, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovz, 0x44, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4894,6 +5697,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovne, 0x45, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovne, 0x45, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4903,6 +5717,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnz, 0x45, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnz, 0x45, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4912,6 +5737,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovbe, 0x46, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovbe, 0x46, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4921,6 +5757,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovna, 0x46, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovna, 0x46, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4930,6 +5777,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnbe, 0x47, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnbe, 0x47, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4939,6 +5797,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmova, 0x47, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmova, 0x47, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4948,6 +5817,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovs, 0x48, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovs, 0x48, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4957,6 +5837,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovns, 0x49, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovns, 0x49, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4966,6 +5857,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovp, 0x4a, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovp, 0x4a, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4975,6 +5877,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovpe, 0x4a, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovpe, 0x4a, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4984,6 +5897,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnp, 0x4b, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnp, 0x4b, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -4993,6 +5917,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovpo, 0x4b, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovpo, 0x4b, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -5002,6 +5937,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovl, 0x4c, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovl, 0x4c, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -5011,6 +5957,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnge, 0x4c, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnge, 0x4c, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -5020,6 +5977,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnl, 0x4d, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnl, 0x4d, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -5029,6 +5997,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovge, 0x4d, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovge, 0x4d, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -5038,6 +6017,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovle, 0x4e, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovle, 0x4e, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -5047,6 +6037,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovng, 0x4e, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovng, 0x4e, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -5056,6 +6057,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnle, 0x4f, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnle, 0x4f, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -5065,6 +6077,17 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovg, 0x4f, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovg, 0x4f, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -26910,6 +27933,17 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_adcx, 0x66, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 1, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
+    { { 61, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_adcx, 0xf6, 2, SPACE_0F38, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 },
@@ -26919,6 +27953,26 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_adcx, 0x66, 2, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 61, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
+  { MN_adox, 0x66, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 2, 0, 2, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
+    { { 61, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_adox, 0xf6, 2, SPACE_0F38, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 },
@@ -26928,6 +27982,15 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
          0, 0, 0, 0, 0, 0 } } } },
+  { MN_adox, 0x66, 2, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+    { { 61, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+         0, 0, 0, 0, 0, 0 } } } },
   { MN_rdseed, 0xc7, 1, SPACE_0F, 7,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
@@ -36235,295 +37298,295 @@ static const i386_op_off_t i386_op_sets[] =
     26,   27,   28,   29,   39,   40,   46,   47,
     49,   53,   57,   58,   59,   60,   62,   64,
     66,   67,   68,   69,   70,   71,   73,   75,
-    77,   79,   80,   81,   82,   86,   88,   92,
-    94,   98,  102,  105,  109,  113,  117,  118,
-   122,  123,  124,  125,  126,  127,  128,  130,
-   132,  133,  134,  135,  136,  137,  138,  139,
-   140,  141,  142,  143,  144,  145,  151,  153,
-   155,  159,  163,  167,  171,  175,  179,  183,
-   187,  190,  193,  202,  205,  213,  216,  222,
-   224,  226,  228,  230,  231,  232,  233,  234,
-   235,  236,  237,  238,  239,  240,  241,  242,
-   243,  244,  245,  246,  247,  248,  249,  250,
-   251,  252,  253,  254,  255,  256,  257,  258,
-   259,  260,  261,  262,  263,  265,  267,  269,
-   271,  273,  274,  275,  276,  277,  278,  279,
-   280,  281,  282,  283,  284,  285,  286,  287,
-   288,  289,  290,  291,  292,  293,  294,  295,
-   296,  297,  298,  299,  300,  301,  302,  303,
-   305,  307,  309,  311,  314,  317,  319,  321,
-   324,  327,  330,  333,  335,  336,  337,  339,
-   341,  343,  345,  346,  347,  348,  349,  350,
-   351,  352,  353,  355,  357,  359,  361,  363,
-   365,  366,  368,  370,  372,  374,  376,  378,
-   380,  382,  384,  388,  390,  391,  392,  393,
-   396,  397,  401,  403,  404,  405,  406,  408,
-   412,  413,  417,  418,  419,  421,  423,  424,
-   425,  426,  427,  428,  429,  430,  431,  432,
-   433,  437,  438,  441,  445,  446,  452,  456,
-   457,  463,  467,  468,  471,  475,  476,  482,
-   486,  487,  493,  494,  495,  496,  497,  498,
-   499,  500,  501,  502,  503,  504,  505,  506,
-   507,  508,  509,  510,  511,  512,  513,  514,
-   515,  516,  519,  522,  523,  524,  525,  526,
-   527,  528,  529,  530,  531,  532,  533,  534,
-   535,  536,  537,  538,  539,  540,  541,  542,
-   543,  544,  545,  546,  547,  548,  549,  550,
-   551,  552,  553,  554,  555,  556,  557,  558,
-   559,  560,  561,  562,  563,  564,  565,  566,
-   567,  568,  569,  570,  571,  572,  573,  574,
-   575,  576,  577,  578,  579,  580,  581,  582,
-   583,  584,  585,  586,  587,  588,  589,  590,
-   591,  592,  593,  594,  595,  596,  597,  598,
-   599,  600,  601,  602,  603,  604,  605,  606,
-   607,  608,  609,  610,  611,  612,  613,  614,
-   615,  616,  617,  618,  620,  622,  623,  624,
-   625,  626,  627,  628,  629,  630,  631,  632,
-   633,  634,  635,  636,  637,  638,  639,  640,
-   641,  642,  643,  644,  645,  646,  647,  648,
-   649,  650,  651,  652,  653,  654,  655,  656,
-   657,  658,  659,  660,  661,  662,  663,  664,
-   665,  666,  667,  668,  669,  670,  671,  672,
-   673,  674,  677,  680,  683,  686,  689,  692,
-   693,  694,  695,  696,  697,  698,  704,  712,
-   715,  718,  721,  724,  727,  730,  733,  736,
-   739,  742,  745,  748,  751,  754,  757,  760,
-   763,  766,  769,  772,  775,  778,  781,  787,
-   793,  799,  805,  811,  817,  823,  829,  832,
-   835,  838,  841,  844,  847,  850,  853,  856,
-   859,  862,  865,  868,  871,  874,  876,  878,
-   880,  882,  884,  886,  888,  890,  892,  894,
-   896,  898,  900,  902,  904,  906,  908,  910,
-   912,  914,  916,  918,  920,  921,  922,  928,
-   930,  931,  933,  935,  937,  939,  940,  942,
-   944,  946,  948,  950,  952,  955,  957,  960,
-   962,  964,  965,  967,  970,  972,  974,  976,
-   978,  981,  984,  991,  997, 1000, 1003, 1006,
-  1009, 1012, 1015, 1016, 1017, 1018, 1019, 1022,
-  1023, 1025, 1027, 1029, 1031, 1032, 1034, 1036,
-  1038, 1040, 1042, 1044, 1046, 1048, 1050, 1052,
-  1054, 1056, 1058, 1060, 1062, 1064, 1066, 1068,
-  1070, 1072, 1074, 1076, 1078, 1080, 1082, 1084,
-  1086, 1088, 1090, 1092, 1094, 1096, 1098, 1101,
-  1107, 1109, 1111, 1113, 1115, 1117, 1119, 1121,
-  1124, 1127, 1129, 1131, 1134, 1136, 1138, 1140,
-  1142, 1144, 1146, 1148, 1150, 1152, 1154, 1156,
-  1158, 1160, 1162, 1164, 1166, 1167, 1169, 1171,
-  1173, 1175, 1177, 1179, 1180, 1182, 1184, 1186,
-  1188, 1190, 1192, 1193, 1194, 1197, 1199, 1201,
-  1203, 1205, 1207, 1209, 1211, 1213, 1215, 1217,
-  1219, 1221, 1223, 1225, 1227, 1229, 1231, 1233,
-  1234, 1235, 1238, 1240, 1241, 1242, 1243, 1244,
-  1245, 1246, 1248, 1250, 1251, 1252, 1253, 1254,
-  1257, 1260, 1263, 1266, 1269, 1272, 1275, 1278,
-  1281, 1284, 1287, 1290, 1293, 1296, 1299, 1302,
-  1305, 1308, 1311, 1313, 1315, 1319, 1323, 1325,
-  1327, 1331, 1333, 1335, 1337, 1339, 1343, 1345,
-  1347, 1351, 1353, 1355, 1357, 1361, 1363, 1365,
-  1367, 1369, 1371, 1373, 1375, 1377, 1379, 1381,
-  1383, 1385, 1387, 1389, 1391, 1393, 1395, 1397,
-  1399, 1401, 1403, 1405, 1407, 1409, 1411, 1413,
-  1415, 1417, 1419, 1421, 1425, 1429, 1431, 1433,
-  1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444,
-  1445, 1447, 1449, 1451, 1453, 1455, 1457, 1459,
-  1461, 1463, 1465, 1467, 1469, 1471, 1473, 1475,
-  1477, 1479, 1481, 1482, 1483, 1485, 1487, 1489,
-  1491, 1492, 1493, 1494, 1495, 1496, 1499, 1501,
-  1503, 1505, 1507, 1509, 1511, 1513, 1515, 1517,
-  1519, 1521, 1523, 1525, 1527, 1529, 1531, 1533,
-  1535, 1537, 1539, 1541, 1543, 1545, 1547, 1549,
-  1551, 1553, 1555, 1557, 1559, 1561, 1563, 1565,
-  1567, 1569, 1571, 1573, 1575, 1577, 1579, 1581,
-  1583, 1585, 1587, 1589, 1591, 1593, 1595, 1597,
-  1599, 1601, 1603, 1605, 1607, 1609, 1611, 1613,
-  1615, 1617, 1619, 1621, 1623, 1625, 1627, 1629,
-  1631, 1633, 1635, 1637, 1639, 1641, 1643, 1645,
-  1647, 1649, 1651, 1653, 1655, 1657, 1659, 1661,
-  1663, 1665, 1667, 1669, 1671, 1673, 1675, 1677,
-  1679, 1681, 1683, 1685, 1687, 1689, 1691, 1693,
-  1695, 1697, 1699, 1701, 1703, 1705, 1707, 1709,
-  1711, 1713, 1715, 1717, 1719, 1721, 1723, 1725,
-  1727, 1729, 1731, 1733, 1735, 1737, 1739, 1741,
-  1743, 1745, 1747, 1749, 1751, 1753, 1755, 1757,
-  1759, 1761, 1763, 1765, 1767, 1769, 1771, 1773,
-  1775, 1777, 1779, 1781, 1783, 1785, 1787, 1789,
-  1791, 1793, 1795, 1797, 1799, 1801, 1803, 1805,
-  1807, 1809, 1811, 1813, 1815, 1817, 1819, 1821,
-  1823, 1825, 1827, 1829, 1831, 1833, 1835, 1837,
-  1839, 1841, 1843, 1845, 1847, 1849, 1851, 1853,
-  1855, 1857, 1859, 1861, 1863, 1865, 1867, 1869,
-  1871, 1873, 1875, 1877, 1879, 1881, 1886, 1888,
-  1893, 1895, 1897, 1902, 1904, 1906, 1908, 1913,
-  1915, 1917, 1919, 1923, 1929, 1931, 1936, 1938,
-  1940, 1942, 1944, 1946, 1948, 1950, 1952, 1954,
-  1955, 1956, 1957, 1959, 1960, 1961, 1962, 1963,
-  1964, 1966, 1967, 1968, 1969, 1971, 1973, 1975,
-  1977, 1979, 1981, 1983, 1985, 1987, 1989, 1991,
-  1993, 1995, 1999, 2000, 2001, 2003, 2007, 2011,
-  2013, 2017, 2021, 2022, 2023, 2025, 2027, 2029,
-  2031, 2036, 2040, 2044, 2046, 2048, 2050, 2052,
-  2053, 2055, 2057, 2059, 2061, 2063, 2065, 2067,
-  2069, 2071, 2073, 2075, 2077, 2079, 2081, 2083,
-  2085, 2087, 2089, 2091, 2093, 2095, 2097, 2098,
-  2099, 2101, 2103, 2104, 2105, 2108, 2111, 2114,
-  2117, 2119, 2121, 2123, 2125, 2127, 2129, 2130,
-  2131, 2132, 2134, 2138, 2140, 2142, 2148, 2152,
-  2153, 2154, 2155, 2156, 2157, 2158, 2159, 2163,
-  2165, 2167, 2171, 2173, 2175, 2177, 2179, 2181,
-  2183, 2185, 2187, 2189, 2191, 2193, 2195, 2197,
-  2199, 2200, 2203, 2206, 2211, 2216, 2219, 2222,
-  2225, 2228, 2233, 2238, 2241, 2244, 2246, 2248,
-  2250, 2252, 2254, 2256, 2258, 2259, 2261, 2263,
-  2265, 2267, 2269, 2270, 2271, 2272, 2276, 2280,
-  2282, 2286, 2290, 2294, 2298, 2302, 2304, 2308,
-  2310, 2312, 2314, 2316, 2318, 2320, 2322, 2324,
-  2325, 2327, 2329, 2331, 2333, 2335, 2337, 2339,
-  2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348,
-  2349, 2350, 2352, 2354, 2356, 2358, 2360, 2362,
-  2363, 2365, 2367, 2369, 2371, 2372, 2373, 2375,
-  2377, 2379, 2381, 2383, 2385, 2387, 2389, 2390,
-  2391, 2392, 2393, 2396, 2399, 2401, 2404, 2405,
-  2406, 2408, 2409, 2411, 2412, 2413, 2415, 2417,
-  2418, 2419, 2420, 2421, 2422, 2425, 2430, 2435,
-  2440, 2445, 2448, 2453, 2458, 2460, 2462, 2464,
-  2466, 2467, 2468, 2470, 2472, 2474, 2476, 2478,
-  2480, 2482, 2483, 2484, 2485, 2486, 2487, 2488,
-  2493, 2498, 2499, 2500, 2501, 2502, 2503, 2504,
-  2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512,
-  2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520,
-  2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528,
-  2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536,
-  2537, 2538, 2539, 2540, 2541, 2542, 2543, 2544,
-  2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552,
-  2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560,
-  2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568,
-  2569, 2570, 2571, 2572, 2573, 2574, 2575, 2576,
-  2577, 2578, 2579, 2580, 2581, 2582, 2583, 2584,
-  2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592,
-  2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600,
-  2601, 2602, 2603, 2604, 2605, 2606, 2607, 2608,
-  2609, 2610, 2611, 2612, 2613, 2614, 2615, 2616,
-  2617, 2618, 2619, 2620, 2621, 2622, 2623, 2624,
-  2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632,
-  2633, 2634, 2635, 2636, 2637, 2638, 2639, 2640,
-  2641, 2642, 2643, 2644, 2645, 2646, 2647, 2648,
-  2649, 2650, 2651, 2652, 2653, 2654, 2655, 2656,
-  2657, 2658, 2659, 2660, 2661, 2662, 2663, 2664,
-  2665, 2666, 2667, 2668, 2669, 2670, 2671, 2672,
-  2673, 2674, 2675, 2676, 2677, 2678, 2679, 2680,
-  2681, 2682, 2683, 2684, 2685, 2686, 2687, 2688,
-  2689, 2690, 2691, 2692, 2693, 2694, 2695, 2696,
-  2697, 2698, 2699, 2701, 2703, 2704, 2705, 2706,
-  2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714,
-  2715, 2716, 2717, 2718, 2719, 2720, 2721, 2722,
-  2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730,
-  2731, 2733, 2735, 2737, 2739, 2740, 2741, 2742,
-  2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750,
-  2751, 2752, 2754, 2755, 2756, 2757, 2758, 2759,
+    77,   79,   80,   81,   82,   89,   92,   99,
+   102,  110,  114,  117,  124,  131,  138,  139,
+   146,  148,  150,  151,  152,  153,  154,  156,
+   158,  159,  160,  161,  162,  163,  164,  165,
+   166,  167,  168,  169,  170,  171,  178,  180,
+   182,  189,  196,  207,  218,  225,  232,  239,
+   246,  252,  258,  267,  270,  278,  281,  287,
+   289,  291,  293,  295,  296,  297,  298,  299,
+   300,  301,  302,  303,  304,  305,  306,  307,
+   308,  309,  310,  311,  312,  313,  314,  315,
+   316,  317,  318,  319,  320,  321,  322,  323,
+   324,  325,  326,  327,  328,  330,  332,  334,
+   336,  338,  339,  340,  341,  342,  343,  344,
+   345,  346,  347,  348,  349,  350,  351,  352,
+   353,  354,  355,  356,  357,  358,  359,  360,
+   361,  362,  363,  364,  365,  366,  367,  368,
+   370,  372,  374,  376,  379,  382,  384,  386,
+   389,  392,  395,  398,  400,  401,  402,  404,
+   406,  408,  410,  411,  412,  413,  414,  415,
+   416,  417,  418,  420,  422,  424,  426,  428,
+   430,  431,  433,  435,  437,  439,  441,  443,
+   445,  447,  449,  453,  455,  456,  457,  458,
+   461,  462,  466,  468,  469,  470,  471,  473,
+   477,  478,  482,  483,  484,  486,  488,  489,
+   490,  491,  492,  493,  494,  495,  496,  497,
+   498,  502,  503,  506,  510,  511,  517,  521,
+   522,  528,  532,  533,  536,  540,  541,  547,
+   551,  552,  558,  559,  560,  561,  562,  563,
+   564,  565,  566,  567,  568,  569,  570,  571,
+   572,  573,  574,  575,  576,  577,  578,  579,
+   580,  581,  584,  587,  588,  589,  590,  591,
+   592,  593,  594,  595,  596,  597,  598,  599,
+   600,  601,  602,  603,  604,  605,  606,  607,
+   608,  609,  610,  611,  612,  613,  614,  615,
+   616,  617,  618,  619,  620,  621,  622,  623,
+   624,  625,  626,  627,  628,  629,  630,  631,
+   632,  633,  634,  635,  636,  637,  638,  639,
+   640,  641,  642,  643,  644,  645,  646,  647,
+   648,  649,  650,  651,  652,  653,  654,  655,
+   656,  657,  658,  659,  660,  661,  662,  663,
+   664,  665,  666,  667,  668,  669,  670,  671,
+   672,  673,  674,  675,  676,  677,  678,  679,
+   680,  681,  682,  683,  685,  687,  688,  689,
+   690,  691,  692,  693,  694,  695,  696,  697,
+   699,  701,  703,  705,  707,  709,  711,  713,
+   715,  717,  719,  721,  723,  725,  727,  729,
+   731,  733,  735,  737,  739,  741,  743,  745,
+   747,  749,  751,  753,  755,  757,  758,  759,
+   760,  761,  762,  763,  764,  765,  766,  767,
+   768,  769,  772,  775,  778,  781,  784,  787,
+   788,  789,  790,  791,  792,  793,  799,  807,
+   810,  813,  816,  819,  822,  825,  828,  831,
+   834,  837,  840,  843,  846,  849,  852,  855,
+   858,  861,  864,  867,  870,  873,  876,  882,
+   888,  894,  900,  906,  912,  918,  924,  927,
+   930,  933,  936,  939,  942,  945,  948,  951,
+   954,  957,  960,  963,  966,  969,  971,  973,
+   975,  977,  979,  981,  983,  985,  987,  989,
+   991,  993,  995,  997,  999, 1001, 1003, 1005,
+  1007, 1009, 1011, 1013, 1015, 1016, 1017, 1023,
+  1025, 1026, 1028, 1030, 1032, 1034, 1035, 1037,
+  1039, 1041, 1043, 1045, 1047, 1050, 1052, 1055,
+  1057, 1059, 1060, 1062, 1065, 1067, 1069, 1071,
+  1073, 1076, 1079, 1086, 1092, 1095, 1098, 1101,
+  1104, 1107, 1110, 1111, 1112, 1113, 1114, 1117,
+  1118, 1120, 1122, 1124, 1126, 1127, 1129, 1131,
+  1133, 1135, 1137, 1139, 1141, 1143, 1145, 1147,
+  1149, 1151, 1153, 1155, 1157, 1159, 1161, 1163,
+  1165, 1167, 1169, 1171, 1173, 1175, 1177, 1179,
+  1181, 1183, 1185, 1187, 1189, 1191, 1193, 1196,
+  1202, 1204, 1206, 1208, 1210, 1212, 1214, 1216,
+  1219, 1222, 1224, 1226, 1229, 1231, 1233, 1235,
+  1237, 1239, 1241, 1243, 1245, 1247, 1249, 1251,
+  1253, 1255, 1257, 1259, 1261, 1262, 1264, 1266,
+  1268, 1270, 1272, 1274, 1275, 1277, 1279, 1281,
+  1283, 1285, 1287, 1288, 1289, 1292, 1294, 1296,
+  1298, 1300, 1302, 1304, 1306, 1308, 1310, 1312,
+  1314, 1316, 1318, 1320, 1322, 1324, 1326, 1328,
+  1329, 1330, 1333, 1335, 1336, 1337, 1338, 1339,
+  1340, 1341, 1343, 1345, 1346, 1347, 1348, 1349,
+  1352, 1355, 1358, 1361, 1364, 1367, 1370, 1373,
+  1376, 1379, 1382, 1385, 1388, 1391, 1394, 1397,
+  1400, 1403, 1406, 1408, 1410, 1414, 1418, 1420,
+  1422, 1426, 1428, 1430, 1432, 1434, 1438, 1440,
+  1442, 1446, 1448, 1450, 1452, 1456, 1458, 1460,
+  1462, 1464, 1466, 1468, 1470, 1472, 1474, 1476,
+  1478, 1480, 1482, 1484, 1486, 1488, 1490, 1492,
+  1494, 1496, 1498, 1500, 1502, 1504, 1506, 1508,
+  1510, 1512, 1514, 1516, 1520, 1524, 1526, 1528,
+  1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539,
+  1540, 1542, 1544, 1546, 1548, 1550, 1552, 1554,
+  1556, 1558, 1560, 1562, 1564, 1566, 1568, 1570,
+  1572, 1574, 1576, 1577, 1578, 1580, 1582, 1584,
+  1586, 1587, 1588, 1589, 1590, 1591, 1594, 1596,
+  1598, 1600, 1602, 1604, 1606, 1608, 1610, 1612,
+  1614, 1616, 1618, 1620, 1622, 1624, 1626, 1628,
+  1630, 1632, 1634, 1636, 1638, 1640, 1642, 1644,
+  1646, 1648, 1650, 1652, 1654, 1656, 1658, 1660,
+  1662, 1664, 1666, 1668, 1670, 1672, 1674, 1676,
+  1678, 1680, 1682, 1684, 1686, 1688, 1690, 1692,
+  1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708,
+  1710, 1712, 1714, 1716, 1718, 1720, 1722, 1724,
+  1726, 1728, 1730, 1732, 1734, 1736, 1738, 1740,
+  1742, 1744, 1746, 1748, 1750, 1752, 1754, 1756,
+  1758, 1760, 1762, 1764, 1766, 1768, 1770, 1772,
+  1774, 1776, 1778, 1780, 1782, 1784, 1786, 1788,
+  1790, 1792, 1794, 1796, 1798, 1800, 1802, 1804,
+  1806, 1808, 1810, 1812, 1814, 1816, 1818, 1820,
+  1822, 1824, 1826, 1828, 1830, 1832, 1834, 1836,
+  1838, 1840, 1842, 1844, 1846, 1848, 1850, 1852,
+  1854, 1856, 1858, 1860, 1862, 1864, 1866, 1868,
+  1870, 1872, 1874, 1876, 1878, 1880, 1882, 1884,
+  1886, 1888, 1890, 1892, 1894, 1896, 1898, 1900,
+  1902, 1904, 1906, 1908, 1910, 1912, 1914, 1916,
+  1918, 1920, 1922, 1924, 1926, 1928, 1930, 1932,
+  1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948,
+  1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964,
+  1966, 1968, 1970, 1972, 1974, 1976, 1981, 1983,
+  1988, 1990, 1992, 1997, 1999, 2001, 2003, 2008,
+  2010, 2012, 2014, 2018, 2024, 2026, 2031, 2033,
+  2035, 2037, 2039, 2041, 2043, 2045, 2047, 2049,
+  2050, 2051, 2052, 2054, 2055, 2056, 2057, 2058,
+  2059, 2061, 2062, 2063, 2064, 2066, 2068, 2070,
+  2072, 2074, 2076, 2078, 2080, 2082, 2084, 2086,
+  2088, 2090, 2094, 2095, 2096, 2098, 2102, 2106,
+  2108, 2112, 2116, 2117, 2118, 2120, 2122, 2124,
+  2126, 2131, 2135, 2139, 2141, 2143, 2145, 2147,
+  2148, 2150, 2152, 2154, 2156, 2158, 2160, 2162,
+  2164, 2166, 2168, 2170, 2172, 2174, 2176, 2178,
+  2180, 2182, 2184, 2186, 2188, 2190, 2192, 2193,
+  2194, 2196, 2198, 2199, 2200, 2203, 2206, 2209,
+  2212, 2214, 2216, 2218, 2220, 2222, 2224, 2225,
+  2226, 2227, 2229, 2233, 2235, 2237, 2243, 2247,
+  2248, 2249, 2250, 2251, 2252, 2253, 2254, 2258,
+  2260, 2262, 2266, 2268, 2270, 2272, 2274, 2276,
+  2278, 2280, 2282, 2284, 2286, 2288, 2290, 2292,
+  2294, 2295, 2298, 2301, 2306, 2311, 2314, 2317,
+  2320, 2323, 2328, 2333, 2336, 2339, 2341, 2343,
+  2345, 2347, 2349, 2351, 2353, 2354, 2356, 2358,
+  2360, 2362, 2364, 2365, 2366, 2367, 2371, 2375,
+  2377, 2381, 2385, 2389, 2393, 2397, 2399, 2403,
+  2405, 2407, 2409, 2411, 2413, 2415, 2417, 2419,
+  2420, 2422, 2424, 2426, 2428, 2430, 2432, 2434,
+  2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443,
+  2444, 2445, 2447, 2449, 2451, 2453, 2455, 2457,
+  2458, 2460, 2462, 2464, 2466, 2467, 2468, 2470,
+  2472, 2474, 2476, 2478, 2480, 2482, 2484, 2485,
+  2486, 2487, 2488, 2491, 2494, 2496, 2499, 2500,
+  2501, 2503, 2504, 2506, 2507, 2508, 2510, 2512,
+  2513, 2514, 2515, 2516, 2517, 2520, 2525, 2530,
+  2535, 2540, 2543, 2548, 2553, 2555, 2557, 2559,
+  2561, 2562, 2563, 2565, 2567, 2569, 2571, 2573,
+  2575, 2577, 2578, 2579, 2580, 2581, 2582, 2583,
+  2588, 2593, 2594, 2595, 2596, 2597, 2598, 2599,
+  2600, 2601, 2602, 2603, 2604, 2605, 2606, 2607,
+  2608, 2609, 2610, 2611, 2612, 2613, 2614, 2615,
+  2616, 2617, 2618, 2619, 2620, 2621, 2622, 2623,
+  2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631,
+  2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639,
+  2640, 2641, 2642, 2643, 2644, 2645, 2646, 2647,
+  2648, 2649, 2650, 2651, 2652, 2653, 2654, 2655,
+  2656, 2657, 2658, 2659, 2660, 2661, 2662, 2663,
+  2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671,
+  2672, 2673, 2674, 2675, 2676, 2677, 2678, 2679,
+  2680, 2681, 2682, 2683, 2684, 2685, 2686, 2687,
+  2688, 2689, 2690, 2691, 2692, 2693, 2694, 2695,
+  2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703,
+  2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711,
+  2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719,
+  2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727,
+  2728, 2729, 2730, 2731, 2732, 2733, 2734, 2735,
+  2736, 2737, 2738, 2739, 2740, 2741, 2742, 2743,
+  2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751,
+  2752, 2753, 2754, 2755, 2756, 2757, 2758, 2759,
   2760, 2761, 2762, 2763, 2764, 2765, 2766, 2767,
   2768, 2769, 2770, 2771, 2772, 2773, 2774, 2775,
   2776, 2777, 2778, 2779, 2780, 2781, 2782, 2783,
   2784, 2785, 2786, 2787, 2788, 2789, 2790, 2791,
-  2792, 2793, 2794, 2795, 2796, 2797, 2798, 2799,
-  2801, 2803, 2804, 2805, 2807, 2808, 2810, 2812,
-  2813, 2814, 2816, 2818, 2819, 2820, 2821, 2822,
-  2823, 2824, 2825, 2826, 2827, 2828, 2829, 2830,
-  2831, 2832, 2833, 2834, 2835, 2836, 2837, 2838,
-  2839, 2840, 2841, 2842, 2843, 2844, 2846, 2848,
-  2850, 2851, 2852, 2854, 2856, 2858, 2860, 2864,
-  2866, 2868, 2869, 2870, 2871, 2872, 2873, 2874,
-  2875, 2876, 2877, 2878, 2879, 2880, 2881, 2882,
-  2883, 2884, 2885, 2886, 2889, 2892, 2893, 2894,
-  2895, 2896, 2897, 2898, 2899, 2900, 2901, 2902,
-  2903, 2904, 2905, 2906, 2907, 2908, 2909, 2910,
-  2911, 2912, 2913, 2914, 2915, 2916, 2917, 2918,
-  2919, 2920, 2921, 2922, 2923, 2924, 2925, 2926,
-  2927, 2928, 2929, 2930, 2931, 2932, 2933, 2934,
-  2935, 2936, 2937, 2938, 2939, 2940, 2941, 2942,
-  2943, 2944, 2945, 2946, 2949, 2951, 2954, 2957,
-  2959, 2962, 2965, 2968, 2971, 2972, 2975, 2976,
-  2977, 2978, 2979, 2980, 2984, 2986, 2989, 2990,
-  2991, 2992, 2993, 2994, 2995, 2996, 2997, 2998,
-  2999, 3000, 3001, 3002, 3003, 3004, 3005, 3006,
-  3007, 3008, 3009, 3010, 3011, 3012, 3013, 3014,
-  3015, 3016, 3017, 3018, 3019, 3020, 3021, 3022,
-  3023, 3024, 3025, 3026, 3027, 3028, 3029, 3030,
-  3031, 3032, 3033, 3034, 3035, 3036, 3037, 3038,
-  3039, 3040, 3041, 3042, 3043, 3044, 3046, 3047,
-  3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055,
-  3056, 3057, 3058, 3059, 3060, 3061, 3062, 3063,
-  3064, 3065, 3066, 3067, 3068, 3069, 3070, 3071,
-  3072, 3073, 3074, 3075, 3076, 3077, 3078, 3079,
-  3080, 3081, 3082, 3083, 3084, 3085, 3088, 3091,
-  3094, 3097, 3100, 3103, 3106, 3109, 3112, 3115,
-  3118, 3121, 3124, 3127, 3130, 3131, 3132, 3133,
-  3134, 3136, 3137, 3138, 3139, 3140, 3141, 3142,
-  3143, 3144, 3145, 3146, 3147, 3148, 3149, 3150,
-  3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158,
-  3159, 3160, 3161, 3162, 3163, 3164, 3165, 3166,
-  3167, 3168, 3169, 3170, 3171, 3172, 3173, 3174,
-  3175, 3176, 3177, 3178, 3179, 3180, 3181, 3182,
-  3183, 3184, 3185, 3186, 3187, 3188, 3189, 3190,
-  3191, 3192, 3193, 3194, 3195, 3196, 3197, 3200,
-  3203, 3204, 3205, 3206, 3207, 3208, 3209, 3210,
-  3211, 3212, 3213, 3214, 3215, 3216, 3217, 3218,
-  3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226,
-  3227, 3228, 3229, 3230, 3231, 3232, 3233, 3234,
-  3235, 3236, 3237, 3238, 3239, 3240, 3241, 3242,
-  3243, 3244, 3245, 3246, 3247, 3248, 3249, 3250,
-  3251, 3252, 3253, 3254, 3255, 3256, 3257, 3258,
-  3259, 3260, 3261, 3262, 3263, 3264, 3265, 3268,
-  3271, 3274, 3275, 3276, 3277, 3278, 3279, 3280,
-  3281, 3282, 3283, 3284, 3285, 3286, 3287, 3288,
-  3289, 3290, 3293, 3296, 3297, 3298, 3301, 3302,
-  3303, 3304, 3305, 3308, 3311, 3314, 3315, 3316,
-  3317, 3318, 3319, 3320, 3321, 3322, 3323, 3324,
-  3326, 3328, 3329, 3330, 3331, 3332, 3333, 3334,
-  3335, 3336, 3337, 3338, 3339, 3340, 3341, 3342,
-  3343, 3344, 3345, 3346, 3347, 3348, 3349, 3350,
-  3351, 3352, 3353, 3355, 3357, 3358, 3359, 3360,
-  3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368,
-  3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376,
-  3377, 3378, 3379, 3380, 3381, 3382, 3384, 3386,
-  3388, 3390, 3391, 3392, 3393, 3394, 3395, 3396,
-  3397, 3398, 3399, 3400, 3401, 3402, 3403, 3404,
-  3405, 3407, 3408, 3410, 3413, 3415, 3416, 3417,
-  3419, 3421, 3422, 3423, 3424, 3425, 3426, 3427,
-  3429, 3431, 3433, 3435, 3436, 3437, 3438, 3439,
-  3440, 3441, 3442, 3443, 3444, 3446, 3448, 3449,
-  3451, 3453, 3454, 3459, 3461, 3463, 3464, 3465,
-  3466, 3467, 3468, 3469, 3470, 3472, 3474, 3475,
-  3476, 3477, 3479, 3482, 3485, 3488, 3490, 3491,
-  3492, 3493, 3494, 3495, 3496, 3497, 3498, 3499,
-  3500, 3501, 3502, 3503, 3504, 3505, 3506, 3507,
-  3508, 3509, 3510, 3512, 3514, 3516, 3518, 3520,
-  3522, 3524, 3526, 3528, 3530, 3531, 3532, 3533,
-  3534, 3535, 3536, 3537, 3538, 3539, 3540, 3541,
-  3542, 3543, 3544, 3545, 3546, 3547, 3548, 3549,
-  3550, 3551, 3552, 3553, 3554, 3555, 3556, 3557,
-  3558, 3559, 3560, 3561, 3562, 3563, 3564, 3565,
-  3566, 3567, 3568, 3569, 3570, 3571, 3572, 3573,
-  3574, 3575, 3576, 3577, 3578, 3579, 3580, 3581,
-  3582, 3583, 3584, 3585, 3586, 3587, 3588, 3589,
-  3590, 3591, 3592, 3593, 3594, 3595, 3596, 3597,
-  3598, 3599, 3600, 3601, 3602, 3603, 3604, 3605,
-  3606, 3607, 3608, 3609, 3610, 3611, 3612, 3613,
-  3614, 3615, 3616, 3617, 3618, 3619, 3620, 3621,
-  3622, 3623, 3624, 3625, 3626, 3627, 3628, 3629,
-  3630, 3631, 3632, 3633, 3634, 3635, 3636, 3637,
-  3638, 3639, 3640, 3641, 3642, 3645, 3646, 3647,
-  3650, 3651, 3652, 3654, 3655, 3656, 3657, 3659,
-  3660, 3661, 3662, 3664, 3665, 3666, 3667, 3670,
-  3671, 3672, 3673, 3674, 3677, 3680, 3683, 3686,
-  3689, 3690, 3691, 3692, 3693, 3695, 3697, 3698,
-  3699, 3700, 3703, 3706, 3709, 3712, 3715, 3716,
-  3717, 3718, 3720, 3721, 3722, 3723, 3725, 3726,
-  3727, 3728, 3729, 3730, 3731, 3732, 3733, 3734,
-  3735, 3736, 3737, 3738, 3739, 3740, 3741, 3742,
-  3743, 3744, 3745, 3746, 3747, 3748, 3749, 3750,
-  3751, 3752, 3753, 3754, 3755, 3756, 3757, 3758,
-  3759, 3760, 3761, 3762, 3763, 3764, 3766, 3768,
-  3770, 3772, 3774, 3775, 3776, 3778, 3780
+  2792, 2793, 2794, 2796, 2798, 2799, 2800, 2801,
+  2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809,
+  2810, 2811, 2812, 2813, 2814, 2815, 2816, 2817,
+  2818, 2819, 2820, 2821, 2822, 2823, 2824, 2825,
+  2826, 2828, 2830, 2832, 2834, 2835, 2836, 2837,
+  2838, 2839, 2840, 2841, 2842, 2843, 2844, 2845,
+  2846, 2847, 2849, 2850, 2851, 2852, 2853, 2854,
+  2855, 2856, 2857, 2858, 2859, 2860, 2861, 2862,
+  2863, 2864, 2865, 2866, 2867, 2868, 2869, 2870,
+  2871, 2872, 2873, 2874, 2875, 2876, 2877, 2878,
+  2879, 2880, 2881, 2882, 2883, 2884, 2885, 2886,
+  2887, 2888, 2889, 2890, 2891, 2892, 2893, 2894,
+  2896, 2898, 2899, 2900, 2902, 2903, 2905, 2907,
+  2908, 2909, 2911, 2913, 2914, 2915, 2916, 2917,
+  2918, 2919, 2920, 2921, 2922, 2923, 2924, 2925,
+  2926, 2927, 2928, 2929, 2930, 2931, 2934, 2937,
+  2938, 2939, 2940, 2941, 2942, 2943, 2945, 2947,
+  2949, 2950, 2951, 2953, 2955, 2957, 2959, 2963,
+  2965, 2967, 2968, 2969, 2970, 2971, 2972, 2973,
+  2974, 2975, 2976, 2977, 2978, 2979, 2980, 2981,
+  2982, 2983, 2984, 2985, 2988, 2991, 2992, 2993,
+  2994, 2995, 2996, 2997, 2998, 2999, 3000, 3001,
+  3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009,
+  3010, 3011, 3012, 3013, 3014, 3015, 3016, 3017,
+  3018, 3019, 3020, 3021, 3022, 3023, 3024, 3025,
+  3026, 3027, 3028, 3029, 3030, 3031, 3032, 3033,
+  3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041,
+  3042, 3043, 3044, 3045, 3048, 3050, 3053, 3056,
+  3058, 3061, 3064, 3067, 3070, 3071, 3074, 3075,
+  3076, 3077, 3078, 3079, 3083, 3085, 3088, 3089,
+  3090, 3091, 3092, 3093, 3094, 3095, 3096, 3097,
+  3098, 3099, 3100, 3101, 3102, 3103, 3104, 3105,
+  3106, 3107, 3108, 3109, 3110, 3111, 3112, 3113,
+  3114, 3115, 3116, 3117, 3118, 3119, 3120, 3121,
+  3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129,
+  3130, 3131, 3132, 3133, 3134, 3135, 3136, 3137,
+  3138, 3139, 3140, 3141, 3142, 3143, 3145, 3146,
+  3147, 3148, 3149, 3150, 3151, 3152, 3153, 3154,
+  3155, 3156, 3157, 3158, 3159, 3160, 3161, 3162,
+  3163, 3164, 3165, 3166, 3167, 3168, 3169, 3170,
+  3171, 3172, 3173, 3174, 3175, 3176, 3177, 3178,
+  3179, 3180, 3181, 3182, 3183, 3184, 3187, 3190,
+  3193, 3196, 3199, 3202, 3205, 3208, 3211, 3214,
+  3217, 3220, 3223, 3226, 3229, 3230, 3231, 3232,
+  3233, 3235, 3236, 3237, 3238, 3239, 3240, 3241,
+  3242, 3243, 3244, 3245, 3246, 3247, 3248, 3249,
+  3250, 3251, 3252, 3253, 3254, 3255, 3256, 3257,
+  3258, 3259, 3260, 3261, 3262, 3263, 3264, 3265,
+  3266, 3267, 3268, 3269, 3270, 3271, 3272, 3273,
+  3274, 3275, 3276, 3277, 3278, 3279, 3280, 3281,
+  3282, 3283, 3284, 3285, 3286, 3287, 3288, 3289,
+  3290, 3291, 3292, 3293, 3294, 3295, 3296, 3299,
+  3302, 3303, 3304, 3305, 3306, 3307, 3308, 3309,
+  3310, 3311, 3312, 3313, 3314, 3315, 3316, 3317,
+  3318, 3319, 3320, 3321, 3322, 3323, 3324, 3325,
+  3326, 3327, 3328, 3329, 3330, 3331, 3332, 3333,
+  3334, 3335, 3336, 3337, 3338, 3339, 3340, 3341,
+  3342, 3343, 3344, 3345, 3346, 3347, 3348, 3349,
+  3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357,
+  3358, 3359, 3360, 3361, 3362, 3363, 3364, 3367,
+  3370, 3373, 3374, 3375, 3376, 3377, 3378, 3379,
+  3380, 3381, 3382, 3383, 3384, 3385, 3386, 3387,
+  3388, 3389, 3392, 3395, 3396, 3397, 3400, 3401,
+  3402, 3403, 3404, 3407, 3410, 3413, 3414, 3415,
+  3416, 3417, 3418, 3419, 3420, 3421, 3422, 3423,
+  3425, 3427, 3428, 3429, 3430, 3431, 3432, 3433,
+  3434, 3435, 3436, 3437, 3438, 3439, 3440, 3441,
+  3442, 3443, 3444, 3445, 3446, 3447, 3448, 3449,
+  3450, 3451, 3452, 3454, 3456, 3457, 3458, 3459,
+  3460, 3461, 3462, 3463, 3464, 3465, 3466, 3467,
+  3468, 3469, 3470, 3471, 3472, 3473, 3474, 3475,
+  3476, 3477, 3478, 3479, 3480, 3481, 3483, 3485,
+  3487, 3489, 3490, 3491, 3492, 3493, 3494, 3495,
+  3496, 3497, 3498, 3499, 3500, 3501, 3502, 3503,
+  3504, 3506, 3507, 3509, 3512, 3514, 3515, 3516,
+  3518, 3520, 3521, 3522, 3523, 3524, 3525, 3526,
+  3528, 3530, 3532, 3534, 3535, 3536, 3537, 3538,
+  3539, 3540, 3541, 3542, 3543, 3545, 3547, 3548,
+  3550, 3552, 3553, 3558, 3560, 3562, 3563, 3564,
+  3565, 3566, 3567, 3568, 3569, 3571, 3573, 3574,
+  3575, 3576, 3578, 3581, 3584, 3587, 3589, 3590,
+  3591, 3592, 3593, 3594, 3595, 3596, 3597, 3598,
+  3599, 3600, 3601, 3602, 3603, 3604, 3605, 3606,
+  3607, 3608, 3609, 3611, 3613, 3615, 3617, 3619,
+  3621, 3623, 3625, 3627, 3629, 3630, 3631, 3632,
+  3633, 3634, 3635, 3636, 3637, 3638, 3639, 3640,
+  3641, 3642, 3643, 3644, 3645, 3646, 3647, 3648,
+  3649, 3650, 3651, 3652, 3653, 3654, 3655, 3656,
+  3657, 3658, 3659, 3660, 3661, 3662, 3663, 3664,
+  3665, 3666, 3667, 3668, 3669, 3670, 3671, 3672,
+  3673, 3674, 3675, 3676, 3677, 3678, 3679, 3680,
+  3681, 3682, 3683, 3684, 3685, 3686, 3687, 3688,
+  3689, 3690, 3691, 3692, 3693, 3694, 3695, 3696,
+  3697, 3698, 3699, 3700, 3701, 3702, 3703, 3704,
+  3705, 3706, 3707, 3708, 3709, 3710, 3711, 3712,
+  3713, 3714, 3715, 3716, 3717, 3718, 3719, 3720,
+  3721, 3722, 3723, 3724, 3725, 3726, 3727, 3728,
+  3729, 3730, 3731, 3732, 3733, 3734, 3735, 3736,
+  3737, 3738, 3739, 3740, 3741, 3744, 3745, 3746,
+  3749, 3750, 3751, 3753, 3754, 3755, 3756, 3758,
+  3759, 3760, 3761, 3763, 3764, 3765, 3766, 3769,
+  3770, 3771, 3772, 3773, 3776, 3779, 3782, 3785,
+  3788, 3789, 3790, 3791, 3792, 3794, 3796, 3797,
+  3798, 3799, 3802, 3805, 3808, 3811, 3814, 3815,
+  3816, 3817, 3819, 3820, 3821, 3822, 3824, 3825,
+  3826, 3827, 3828, 3829, 3830, 3831, 3832, 3833,
+  3834, 3835, 3836, 3837, 3838, 3839, 3840, 3841,
+  3842, 3843, 3844, 3845, 3846, 3847, 3848, 3849,
+  3850, 3851, 3852, 3853, 3854, 3855, 3856, 3857,
+  3858, 3859, 3860, 3861, 3862, 3863, 3865, 3867,
+  3869, 3871, 3873, 3874, 3875, 3877, 3879
 };
 
 /* i386 mnemonics table.  */