x86: fold VAES/VPCLMULQDQ VEX and EVEX templates
authorJan Beulich <jbeulich@suse.com>
Wed, 27 Sep 2023 12:15:44 +0000 (14:15 +0200)
committerJan Beulich <jbeulich@suse.com>
Wed, 27 Sep 2023 12:15:44 +0000 (14:15 +0200)
Following the folding of some generic AVX/AVX2 templates with their
AVX512F counterpart ones, do this for VAES and VPCLMULQDQ ones as well.

gas/config/tc-i386.c
opcodes/i386-opc.tbl
opcodes/i386-tbl.h

index 8e5a16ee4b5f27adb553ee92cacee87dcdd368d9..80cc0eeee65ff614132f26c7a5ff249d4141aa02 100644 (file)
@@ -1944,7 +1944,17 @@ cpu_flags_match (const insn_template *t)
       cpu = cpu_flags_and (x, cpu);
       if (!cpu_flags_all_zero (&cpu))
        {
-         if (x.bitfield.cpuavx)
+         if (t->cpu.bitfield.cpuavx && t->cpu.bitfield.cpuavx512f)
+           {
+             if ((need_evex_encoding ()
+                  ? cpu.bitfield.cpuavx512f
+                  : cpu.bitfield.cpuavx)
+                 && (!x.bitfield.cpugfni || cpu.bitfield.cpugfni)
+                 && (!x.bitfield.cpuvaes || cpu.bitfield.cpuvaes)
+                 && (!x.bitfield.cpuvpclmulqdq || cpu.bitfield.cpuvpclmulqdq))
+               match |= CPU_FLAGS_ARCH_MATCH;
+           }
+         else if (x.bitfield.cpuavx)
            {
              /* We need to check a few extra flags with AVX.  */
              if (cpu.bitfield.cpuavx
@@ -1961,9 +1971,7 @@ cpu_flags_match (const insn_template *t)
            {
              /* We need to check a few extra flags with AVX512F.  */
              if (cpu.bitfield.cpuavx512f
-                 && (!x.bitfield.cpugfni || cpu.bitfield.cpugfni)
-                 && (!x.bitfield.cpuvaes || cpu.bitfield.cpuvaes)
-                 && (!x.bitfield.cpuvpclmulqdq || cpu.bitfield.cpuvpclmulqdq))
+                 && (!x.bitfield.cpugfni || cpu.bitfield.cpugfni))
                match |= CPU_FLAGS_ARCH_MATCH;
            }
          else
index 63cc1ab15ad9ef120561b3532f0dc8a59645905e..2ea19394a067601462946a3775f4ba40b08eaa11 100644 (file)
@@ -2068,20 +2068,20 @@ vsm4rnds4, 0xf2da, SM4, Modrm|Space0F38|Vex|VexVVVV|VexW0|CheckOperandSize|NoSuf
 
 // VAES
 
-vaesdec, 0x66de, VAES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM }
-vaesdeclast, 0x66df, VAES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM }
-vaesenc, 0x66dc, VAES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM }
-vaesenclast, 0x66dd, VAES, Modrm|Vex|Space0F38|VexVVVV|VexWIG|CheckOperandSize|NoSuf, { RegXMM|RegYMM|Unspecified|BaseIndex, RegXMM|RegYMM, RegXMM|RegYMM }
+vaesdec, 0x66de, VAES|AVX|AVX512F, Modrm|Vex|EVexDYN|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
+vaesdeclast, 0x66df, VAES|AVX|AVX512F, Modrm|Vex|EVexDYN|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
+vaesenc, 0x66dc, VAES|AVX|AVX512F, Modrm|Vex|EVexDYN|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
+vaesenclast, 0x66dd, VAES|AVX|AVX512F, Modrm|Vex|EVexDYN|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
 
 // VAES instructions end
 
 // VPCLMULQDQ instructions
 
-vpclmulqdq, 0x6644, VPCLMULQDQ, Modrm|Vex|Space0F3A|VexWIG|VexVVVV|CheckOperandSize|NoSuf, { Imm8|Imm8S, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
-vpclmullqlqdq, 0x6644/0x00, VPCLMULQDQ, Modrm|Vex|Space0F3A|VexWIG|VexVVVV|CheckOperandSize|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
-vpclmulhqlqdq, 0x6644/0x01, VPCLMULQDQ, Modrm|Vex|Space0F3A|VexWIG|VexVVVV|CheckOperandSize|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
-vpclmullqhqdq, 0x6644/0x10, VPCLMULQDQ, Modrm|Vex|Space0F3A|VexWIG|VexVVVV|CheckOperandSize|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
-vpclmulhqhqdq, 0x6644/0x11, VPCLMULQDQ, Modrm|Vex|Space0F3A|VexWIG|VexVVVV|CheckOperandSize|NoSuf|ImmExt, { Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegYMM, RegXMM|RegYMM }
+vpclmulqdq, 0x6644, VPCLMULQDQ|AVX|AVX512F, Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8|Imm8S, RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
+vpclmullqlqdq, 0x6644/0x00, VPCLMULQDQ|AVX|AVX512F, Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
+vpclmulhqlqdq, 0x6644/0x01, VPCLMULQDQ|AVX|AVX512F, Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
+vpclmullqhqdq, 0x6644/0x10, VPCLMULQDQ|AVX|AVX512F, Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
+vpclmulhqhqdq, 0x6644/0x11, VPCLMULQDQ|AVX|AVX512F, Modrm|Space0F3A|Vex|EVexDYN|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
 
 // VPCLMULQDQ instructions end
 
@@ -2932,25 +2932,6 @@ vgf2p8affineqb, 0x66ce, GFNI|AVX512F, Modrm|Masking|Space0F3A|VexVVVV|VexW1|Broa
 
 // AVX512 + GFNI instructions end
 
-// AVX512 + VAES instructions
-
-vaesdec, 0x66de, VAES|AVX512F, Modrm|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
-vaesdeclast, 0x66df, VAES|AVX512F, Modrm|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
-vaesenc, 0x66dc, VAES|AVX512F, Modrm|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
-vaesenclast, 0x66dd, VAES|AVX512F, Modrm|Space0F38|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
-
-// AVX512 + VAES instructions end
-
-// AVX512 + VPCLMULQDQ instructions
-
-vpclmulqdq, 0x6644, VPCLMULQDQ|AVX512F, Modrm|Space0F3A|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf, { Imm8|Imm8S, RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
-vpclmullqlqdq, 0x6644/0x00, VPCLMULQDQ|AVX512F, Modrm|Space0F3A|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
-vpclmulhqlqdq, 0x6644/0x01, VPCLMULQDQ|AVX512F, Modrm|Space0F3A|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
-vpclmullqhqdq, 0x6644/0x10, VPCLMULQDQ|AVX512F, Modrm|Space0F3A|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
-vpclmulhqhqdq, 0x6644/0x11, VPCLMULQDQ|AVX512F, Modrm|Space0F3A|VexWIG|VexVVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|ImmExt, { RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
-
-// AVX512 + VPCLMULQDQ instructions end
-
 // INVLPGB instructions
 
 invlpgb, 0xf01fe, INVLPGB, NoSuf, {}
index 572527d8c61b8be8b1a6f90fdb899b082ddca852..957cfe6f9dd96b753999c1f1bf5d8becda6a1b6a 100644 (file)
@@ -22952,20 +22952,9 @@ static const insn_template i386_optab[] =
          1, 0, 0, 0, 0, 0 } } } },
   { MN_vaesdec, 0xde, 3, SPACE_0F38, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 1, 3, 1, 0, 0, 5, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
       0 },
-    { { 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 1, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } } } },
-  { MN_vaesdec, 0xde, 3, SPACE_0F38, None,
-    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
-      0 },
-    { { 111, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } },
+    { { 111, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 } },
     { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
          1, 1, 1, 0, 1, 0 } },
       { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -22985,20 +22974,9 @@ static const insn_template i386_optab[] =
          1, 0, 0, 0, 0, 0 } } } },
   { MN_vaesdeclast, 0xdf, 3, SPACE_0F38, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 1, 3, 1, 0, 0, 5, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
       0 },
-    { { 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 1, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } } } },
-  { MN_vaesdeclast, 0xdf, 3, SPACE_0F38, None,
-    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
-      0 },
-    { { 111, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } },
+    { { 111, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 } },
     { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
          1, 1, 1, 0, 1, 0 } },
       { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -23018,20 +22996,9 @@ static const insn_template i386_optab[] =
          1, 0, 0, 0, 0, 0 } } } },
   { MN_vaesenc, 0xdc, 3, SPACE_0F38, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 1, 3, 1, 0, 0, 5, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
       0 },
-    { { 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 1, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } } } },
-  { MN_vaesenc, 0xdc, 3, SPACE_0F38, None,
-    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
-      0 },
-    { { 111, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } },
+    { { 111, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 } },
     { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
          1, 1, 1, 0, 1, 0 } },
       { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -23051,20 +23018,9 @@ static const insn_template i386_optab[] =
          1, 0, 0, 0, 0, 0 } } } },
   { MN_vaesenclast, 0xdd, 3, SPACE_0F38, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-      0 },
-    { { 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 1, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } } } },
-  { MN_vaesenclast, 0xdd, 3, SPACE_0F38, None,
-    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 1, 3, 1, 0, 0, 5, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
       0 },
-    { { 111, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } },
+    { { 111, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 } },
     { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
          1, 1, 1, 0, 1, 0 } },
       { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -23106,22 +23062,9 @@ static const insn_template i386_optab[] =
          1, 0, 0, 0, 0, 0 } } } },
   { MN_vpclmulqdq, 0x44, 4, SPACE_0F3A, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 1, 3, 1, 0, 0, 5, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
       0 },
-    { { 112, 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 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 1, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } } } },
-  { MN_vpclmulqdq, 0x44, 4, SPACE_0F3A, None,
-    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
-      0 },
-    { { 112, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } },
+    { { 112, 0, 0, 0, 0, 0, 1, 0, 1, 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 } },
       { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
@@ -23143,20 +23086,9 @@ static const insn_template i386_optab[] =
          1, 0, 0, 0, 0, 0 } } } },
   { MN_vpclmullqlqdq, 0x44, 3, SPACE_0F3A, 0x00,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 1, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-      0 },
-    { { 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 1, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } } } },
-  { MN_vpclmullqlqdq, 0x44, 3, SPACE_0F3A, 0x00,
-    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 1, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+      0, 1, 0, 1, 1, 3, 1, 0, 0, 5, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
       0 },
-    { { 112, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } },
+    { { 112, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 } },
     { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
          1, 1, 1, 0, 1, 0 } },
       { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -23176,20 +23108,9 @@ static const insn_template i386_optab[] =
          1, 0, 0, 0, 0, 0 } } } },
   { MN_vpclmulhqlqdq, 0x44, 3, SPACE_0F3A, 0x01,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 1, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-      0 },
-    { { 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 1, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } } } },
-  { MN_vpclmulhqlqdq, 0x44, 3, SPACE_0F3A, 0x01,
-    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 1, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+      0, 1, 0, 1, 1, 3, 1, 0, 0, 5, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
       0 },
-    { { 112, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } },
+    { { 112, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 } },
     { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
          1, 1, 1, 0, 1, 0 } },
       { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -23209,20 +23130,9 @@ static const insn_template i386_optab[] =
          1, 0, 0, 0, 0, 0 } } } },
   { MN_vpclmullqhqdq, 0x44, 3, SPACE_0F3A, 0x10,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 1, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-      0 },
-    { { 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 1, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } } } },
-  { MN_vpclmullqhqdq, 0x44, 3, SPACE_0F3A, 0x10,
-    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 1, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+      0, 1, 0, 1, 1, 3, 1, 0, 0, 5, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
       0 },
-    { { 112, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } },
+    { { 112, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 } },
     { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
          1, 1, 1, 0, 1, 0 } },
       { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -23242,20 +23152,9 @@ static const insn_template i386_optab[] =
          1, 0, 0, 0, 0, 0 } } } },
   { MN_vpclmulhqhqdq, 0x44, 3, SPACE_0F3A, 0x11,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 1, 0, 1, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-      0 },
-    { { 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 1, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         1, 1, 0, 0, 0, 0 } } } },
-  { MN_vpclmulhqhqdq, 0x44, 3, SPACE_0F3A, 0x11,
-    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 1, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+      0, 1, 0, 1, 1, 3, 1, 0, 0, 5, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
       0 },
-    { { 112, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } },
+    { { 112, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 } },
     { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
          1, 1, 1, 0, 1, 0 } },
       { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -37892,86 +37791,95 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2445,
   i386_optab + 2450,
   i386_optab + 2455,
-  i386_optab + 2458,
+  i386_optab + 2457,
+  i386_optab + 2459,
   i386_optab + 2461,
+  i386_optab + 2463,
   i386_optab + 2464,
+  i386_optab + 2465,
   i386_optab + 2467,
-  i386_optab + 2468,
   i386_optab + 2469,
-  i386_optab + 2472,
+  i386_optab + 2471,
+  i386_optab + 2473,
   i386_optab + 2475,
-  i386_optab + 2478,
+  i386_optab + 2477,
+  i386_optab + 2479,
+  i386_optab + 2480,
   i386_optab + 2481,
+  i386_optab + 2482,
+  i386_optab + 2483,
   i386_optab + 2484,
-  i386_optab + 2486,
-  i386_optab + 2488,
-  i386_optab + 2489,
+  i386_optab + 2485,
   i386_optab + 2490,
-  i386_optab + 2491,
-  i386_optab + 2492,
-  i386_optab + 2493,
-  i386_optab + 2494,
+  i386_optab + 2495,
+  i386_optab + 2497,
   i386_optab + 2499,
-  i386_optab + 2504,
-  i386_optab + 2506,
-  i386_optab + 2508,
-  i386_optab + 2510,
-  i386_optab + 2512,
-  i386_optab + 2514,
-  i386_optab + 2516,
-  i386_optab + 2518,
-  i386_optab + 2520,
-  i386_optab + 2522,
-  i386_optab + 2524,
-  i386_optab + 2526,
-  i386_optab + 2528,
-  i386_optab + 2530,
-  i386_optab + 2532,
-  i386_optab + 2534,
-  i386_optab + 2536,
-  i386_optab + 2538,
-  i386_optab + 2540,
-  i386_optab + 2542,
-  i386_optab + 2544,
-  i386_optab + 2546,
-  i386_optab + 2548,
-  i386_optab + 2550,
-  i386_optab + 2552,
-  i386_optab + 2554,
-  i386_optab + 2556,
-  i386_optab + 2558,
-  i386_optab + 2560,
-  i386_optab + 2562,
-  i386_optab + 2564,
-  i386_optab + 2566,
-  i386_optab + 2568,
-  i386_optab + 2570,
-  i386_optab + 2572,
-  i386_optab + 2574,
-  i386_optab + 2576,
-  i386_optab + 2578,
-  i386_optab + 2580,
-  i386_optab + 2582,
-  i386_optab + 2584,
-  i386_optab + 2586,
-  i386_optab + 2588,
-  i386_optab + 2590,
-  i386_optab + 2592,
-  i386_optab + 2594,
-  i386_optab + 2596,
-  i386_optab + 2598,
-  i386_optab + 2600,
-  i386_optab + 2602,
-  i386_optab + 2604,
-  i386_optab + 2606,
-  i386_optab + 2608,
-  i386_optab + 2610,
-  i386_optab + 2612,
-  i386_optab + 2614,
+  i386_optab + 2501,
+  i386_optab + 2503,
+  i386_optab + 2505,
+  i386_optab + 2507,
+  i386_optab + 2509,
+  i386_optab + 2511,
+  i386_optab + 2513,
+  i386_optab + 2515,
+  i386_optab + 2517,
+  i386_optab + 2519,
+  i386_optab + 2521,
+  i386_optab + 2523,
+  i386_optab + 2525,
+  i386_optab + 2527,
+  i386_optab + 2529,
+  i386_optab + 2531,
+  i386_optab + 2533,
+  i386_optab + 2535,
+  i386_optab + 2537,
+  i386_optab + 2539,
+  i386_optab + 2541,
+  i386_optab + 2543,
+  i386_optab + 2545,
+  i386_optab + 2547,
+  i386_optab + 2549,
+  i386_optab + 2551,
+  i386_optab + 2553,
+  i386_optab + 2555,
+  i386_optab + 2557,
+  i386_optab + 2559,
+  i386_optab + 2561,
+  i386_optab + 2563,
+  i386_optab + 2565,
+  i386_optab + 2567,
+  i386_optab + 2569,
+  i386_optab + 2571,
+  i386_optab + 2573,
+  i386_optab + 2575,
+  i386_optab + 2577,
+  i386_optab + 2579,
+  i386_optab + 2581,
+  i386_optab + 2583,
+  i386_optab + 2585,
+  i386_optab + 2587,
+  i386_optab + 2589,
+  i386_optab + 2591,
+  i386_optab + 2593,
+  i386_optab + 2595,
+  i386_optab + 2597,
+  i386_optab + 2599,
+  i386_optab + 2601,
+  i386_optab + 2603,
+  i386_optab + 2605,
+  i386_optab + 2607,
+  i386_optab + 2609,
+  i386_optab + 2611,
+  i386_optab + 2613,
+  i386_optab + 2615,
   i386_optab + 2616,
+  i386_optab + 2617,
   i386_optab + 2618,
+  i386_optab + 2619,
   i386_optab + 2620,
+  i386_optab + 2621,
   i386_optab + 2622,
+  i386_optab + 2623,
   i386_optab + 2624,
   i386_optab + 2625,
   i386_optab + 2626,
@@ -38075,16 +37983,16 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2724,
   i386_optab + 2725,
   i386_optab + 2726,
-  i386_optab + 2727,
   i386_optab + 2728,
-  i386_optab + 2729,
   i386_optab + 2730,
   i386_optab + 2731,
   i386_optab + 2732,
   i386_optab + 2733,
   i386_optab + 2734,
   i386_optab + 2735,
+  i386_optab + 2736,
   i386_optab + 2737,
+  i386_optab + 2738,
   i386_optab + 2739,
   i386_optab + 2740,
   i386_optab + 2741,
@@ -38105,24 +38013,23 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2756,
   i386_optab + 2757,
   i386_optab + 2758,
-  i386_optab + 2759,
   i386_optab + 2760,
-  i386_optab + 2761,
   i386_optab + 2762,
-  i386_optab + 2763,
   i386_optab + 2764,
-  i386_optab + 2765,
   i386_optab + 2766,
   i386_optab + 2767,
+  i386_optab + 2768,
   i386_optab + 2769,
+  i386_optab + 2770,
   i386_optab + 2771,
+  i386_optab + 2772,
   i386_optab + 2773,
+  i386_optab + 2774,
   i386_optab + 2775,
   i386_optab + 2776,
   i386_optab + 2777,
   i386_optab + 2778,
   i386_optab + 2779,
-  i386_optab + 2780,
   i386_optab + 2781,
   i386_optab + 2782,
   i386_optab + 2783,
@@ -38131,6 +38038,7 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2786,
   i386_optab + 2787,
   i386_optab + 2788,
+  i386_optab + 2789,
   i386_optab + 2790,
   i386_optab + 2791,
   i386_optab + 2792,
@@ -38168,13 +38076,10 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2824,
   i386_optab + 2825,
   i386_optab + 2826,
-  i386_optab + 2827,
   i386_optab + 2828,
-  i386_optab + 2829,
   i386_optab + 2830,
   i386_optab + 2831,
   i386_optab + 2832,
-  i386_optab + 2833,
   i386_optab + 2834,
   i386_optab + 2835,
   i386_optab + 2837,
@@ -38182,12 +38087,15 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2840,
   i386_optab + 2841,
   i386_optab + 2843,
-  i386_optab + 2844,
+  i386_optab + 2845,
   i386_optab + 2846,
+  i386_optab + 2847,
   i386_optab + 2848,
   i386_optab + 2849,
   i386_optab + 2850,
+  i386_optab + 2851,
   i386_optab + 2852,
+  i386_optab + 2853,
   i386_optab + 2854,
   i386_optab + 2855,
   i386_optab + 2856,
@@ -38206,17 +38114,16 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2869,
   i386_optab + 2870,
   i386_optab + 2871,
-  i386_optab + 2872,
   i386_optab + 2873,
-  i386_optab + 2874,
   i386_optab + 2875,
-  i386_optab + 2876,
   i386_optab + 2877,
   i386_optab + 2878,
   i386_optab + 2879,
   i386_optab + 2880,
+  i386_optab + 2881,
   i386_optab + 2882,
-  i386_optab + 2884,
+  i386_optab + 2883,
+  i386_optab + 2885,
   i386_optab + 2886,
   i386_optab + 2887,
   i386_optab + 2888,
@@ -38224,6 +38131,7 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2890,
   i386_optab + 2891,
   i386_optab + 2892,
+  i386_optab + 2893,
   i386_optab + 2894,
   i386_optab + 2895,
   i386_optab + 2896,
@@ -38236,16 +38144,16 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2903,
   i386_optab + 2904,
   i386_optab + 2905,
-  i386_optab + 2906,
-  i386_optab + 2907,
   i386_optab + 2908,
-  i386_optab + 2909,
-  i386_optab + 2910,
   i386_optab + 2911,
   i386_optab + 2912,
   i386_optab + 2913,
   i386_optab + 2914,
+  i386_optab + 2915,
+  i386_optab + 2916,
   i386_optab + 2917,
+  i386_optab + 2918,
+  i386_optab + 2919,
   i386_optab + 2920,
   i386_optab + 2921,
   i386_optab + 2922,
@@ -38292,33 +38200,33 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2963,
   i386_optab + 2964,
   i386_optab + 2965,
-  i386_optab + 2966,
-  i386_optab + 2967,
   i386_optab + 2968,
-  i386_optab + 2969,
   i386_optab + 2970,
-  i386_optab + 2971,
-  i386_optab + 2972,
   i386_optab + 2973,
-  i386_optab + 2974,
-  i386_optab + 2977,
-  i386_optab + 2979,
-  i386_optab + 2982,
-  i386_optab + 2985,
+  i386_optab + 2976,
+  i386_optab + 2978,
+  i386_optab + 2981,
+  i386_optab + 2984,
   i386_optab + 2987,
   i386_optab + 2990,
-  i386_optab + 2993,
+  i386_optab + 2991,
+  i386_optab + 2994,
+  i386_optab + 2995,
   i386_optab + 2996,
+  i386_optab + 2997,
+  i386_optab + 2998,
   i386_optab + 2999,
-  i386_optab + 3000,
   i386_optab + 3003,
-  i386_optab + 3004,
   i386_optab + 3005,
-  i386_optab + 3006,
-  i386_optab + 3007,
   i386_optab + 3008,
+  i386_optab + 3009,
+  i386_optab + 3010,
+  i386_optab + 3011,
   i386_optab + 3012,
+  i386_optab + 3013,
   i386_optab + 3014,
+  i386_optab + 3015,
+  i386_optab + 3016,
   i386_optab + 3017,
   i386_optab + 3018,
   i386_optab + 3019,
@@ -38396,7 +38304,6 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3091,
   i386_optab + 3092,
   i386_optab + 3093,
-  i386_optab + 3094,
   i386_optab + 3095,
   i386_optab + 3096,
   i386_optab + 3097,
@@ -38405,6 +38312,7 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3100,
   i386_optab + 3101,
   i386_optab + 3102,
+  i386_optab + 3103,
   i386_optab + 3104,
   i386_optab + 3105,
   i386_optab + 3106,
@@ -38436,14 +38344,8 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3132,
   i386_optab + 3133,
   i386_optab + 3134,
-  i386_optab + 3135,
-  i386_optab + 3136,
   i386_optab + 3137,
-  i386_optab + 3138,
-  i386_optab + 3139,
   i386_optab + 3140,
-  i386_optab + 3141,
-  i386_optab + 3142,
   i386_optab + 3143,
   i386_optab + 3146,
   i386_optab + 3149,
@@ -38457,13 +38359,19 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3173,
   i386_optab + 3176,
   i386_optab + 3179,
+  i386_optab + 3180,
+  i386_optab + 3181,
   i386_optab + 3182,
+  i386_optab + 3183,
   i386_optab + 3185,
+  i386_optab + 3186,
+  i386_optab + 3187,
   i386_optab + 3188,
   i386_optab + 3189,
   i386_optab + 3190,
   i386_optab + 3191,
   i386_optab + 3192,
+  i386_optab + 3193,
   i386_optab + 3194,
   i386_optab + 3195,
   i386_optab + 3196,
@@ -38517,16 +38425,16 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3244,
   i386_optab + 3245,
   i386_optab + 3246,
-  i386_optab + 3247,
-  i386_optab + 3248,
   i386_optab + 3249,
-  i386_optab + 3250,
-  i386_optab + 3251,
   i386_optab + 3252,
   i386_optab + 3253,
   i386_optab + 3254,
   i386_optab + 3255,
+  i386_optab + 3256,
+  i386_optab + 3257,
   i386_optab + 3258,
+  i386_optab + 3259,
+  i386_optab + 3260,
   i386_optab + 3261,
   i386_optab + 3262,
   i386_optab + 3263,
@@ -38581,17 +38489,17 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3312,
   i386_optab + 3313,
   i386_optab + 3314,
-  i386_optab + 3315,
-  i386_optab + 3316,
   i386_optab + 3317,
-  i386_optab + 3318,
-  i386_optab + 3319,
   i386_optab + 3320,
-  i386_optab + 3321,
-  i386_optab + 3322,
   i386_optab + 3323,
+  i386_optab + 3324,
+  i386_optab + 3325,
   i386_optab + 3326,
+  i386_optab + 3327,
+  i386_optab + 3328,
   i386_optab + 3329,
+  i386_optab + 3330,
+  i386_optab + 3331,
   i386_optab + 3332,
   i386_optab + 3333,
   i386_optab + 3334,
@@ -38600,38 +38508,38 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3337,
   i386_optab + 3338,
   i386_optab + 3339,
-  i386_optab + 3340,
-  i386_optab + 3341,
   i386_optab + 3342,
-  i386_optab + 3343,
-  i386_optab + 3344,
   i386_optab + 3345,
   i386_optab + 3346,
   i386_optab + 3347,
-  i386_optab + 3348,
+  i386_optab + 3350,
   i386_optab + 3351,
+  i386_optab + 3352,
+  i386_optab + 3353,
   i386_optab + 3354,
-  i386_optab + 3355,
-  i386_optab + 3356,
-  i386_optab + 3359,
+  i386_optab + 3357,
   i386_optab + 3360,
-  i386_optab + 3361,
-  i386_optab + 3362,
   i386_optab + 3363,
+  i386_optab + 3364,
+  i386_optab + 3365,
   i386_optab + 3366,
+  i386_optab + 3367,
+  i386_optab + 3368,
   i386_optab + 3369,
+  i386_optab + 3370,
+  i386_optab + 3371,
   i386_optab + 3372,
   i386_optab + 3373,
-  i386_optab + 3374,
   i386_optab + 3375,
-  i386_optab + 3376,
   i386_optab + 3377,
   i386_optab + 3378,
   i386_optab + 3379,
   i386_optab + 3380,
   i386_optab + 3381,
   i386_optab + 3382,
+  i386_optab + 3383,
   i386_optab + 3384,
+  i386_optab + 3385,
   i386_optab + 3386,
   i386_optab + 3387,
   i386_optab + 3388,
@@ -38649,16 +38557,16 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3400,
   i386_optab + 3401,
   i386_optab + 3402,
-  i386_optab + 3403,
   i386_optab + 3404,
-  i386_optab + 3405,
   i386_optab + 3406,
   i386_optab + 3407,
   i386_optab + 3408,
   i386_optab + 3409,
   i386_optab + 3410,
   i386_optab + 3411,
+  i386_optab + 3412,
   i386_optab + 3413,
+  i386_optab + 3414,
   i386_optab + 3415,
   i386_optab + 3416,
   i386_optab + 3417,
@@ -38676,18 +38584,18 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3429,
   i386_optab + 3430,
   i386_optab + 3431,
-  i386_optab + 3432,
   i386_optab + 3433,
-  i386_optab + 3434,
   i386_optab + 3435,
-  i386_optab + 3436,
   i386_optab + 3437,
-  i386_optab + 3438,
   i386_optab + 3439,
   i386_optab + 3440,
+  i386_optab + 3441,
   i386_optab + 3442,
+  i386_optab + 3443,
   i386_optab + 3444,
+  i386_optab + 3445,
   i386_optab + 3446,
+  i386_optab + 3447,
   i386_optab + 3448,
   i386_optab + 3449,
   i386_optab + 3450,
@@ -38695,23 +38603,23 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3452,
   i386_optab + 3453,
   i386_optab + 3454,
-  i386_optab + 3455,
   i386_optab + 3456,
   i386_optab + 3457,
-  i386_optab + 3458,
   i386_optab + 3459,
-  i386_optab + 3460,
-  i386_optab + 3461,
   i386_optab + 3462,
-  i386_optab + 3463,
+  i386_optab + 3464,
   i386_optab + 3465,
   i386_optab + 3466,
   i386_optab + 3468,
+  i386_optab + 3470,
   i386_optab + 3471,
+  i386_optab + 3472,
   i386_optab + 3473,
   i386_optab + 3474,
   i386_optab + 3475,
+  i386_optab + 3476,
   i386_optab + 3477,
+  i386_optab + 3478,
   i386_optab + 3479,
   i386_optab + 3480,
   i386_optab + 3481,
@@ -38723,40 +38631,40 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3487,
   i386_optab + 3488,
   i386_optab + 3489,
-  i386_optab + 3490,
   i386_optab + 3491,
-  i386_optab + 3492,
   i386_optab + 3493,
   i386_optab + 3494,
   i386_optab + 3495,
   i386_optab + 3496,
   i386_optab + 3497,
-  i386_optab + 3498,
-  i386_optab + 3500,
   i386_optab + 3502,
-  i386_optab + 3503,
   i386_optab + 3504,
-  i386_optab + 3505,
   i386_optab + 3506,
+  i386_optab + 3507,
+  i386_optab + 3508,
+  i386_optab + 3509,
+  i386_optab + 3510,
   i386_optab + 3511,
+  i386_optab + 3512,
   i386_optab + 3513,
+  i386_optab + 3514,
   i386_optab + 3515,
   i386_optab + 3516,
   i386_optab + 3517,
   i386_optab + 3518,
-  i386_optab + 3519,
   i386_optab + 3520,
-  i386_optab + 3521,
-  i386_optab + 3522,
   i386_optab + 3523,
-  i386_optab + 3524,
-  i386_optab + 3525,
   i386_optab + 3526,
-  i386_optab + 3527,
   i386_optab + 3529,
+  i386_optab + 3531,
   i386_optab + 3532,
+  i386_optab + 3533,
+  i386_optab + 3534,
   i386_optab + 3535,
+  i386_optab + 3536,
+  i386_optab + 3537,
   i386_optab + 3538,
+  i386_optab + 3539,
   i386_optab + 3540,
   i386_optab + 3541,
   i386_optab + 3542,
@@ -38891,64 +38799,64 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3671,
   i386_optab + 3672,
   i386_optab + 3673,
-  i386_optab + 3674,
-  i386_optab + 3675,
   i386_optab + 3676,
   i386_optab + 3677,
   i386_optab + 3678,
-  i386_optab + 3679,
-  i386_optab + 3680,
   i386_optab + 3681,
   i386_optab + 3682,
+  i386_optab + 3683,
   i386_optab + 3685,
   i386_optab + 3686,
   i386_optab + 3687,
+  i386_optab + 3688,
   i386_optab + 3690,
   i386_optab + 3691,
   i386_optab + 3692,
-  i386_optab + 3694,
+  i386_optab + 3693,
   i386_optab + 3695,
   i386_optab + 3696,
   i386_optab + 3697,
-  i386_optab + 3699,
-  i386_optab + 3700,
+  i386_optab + 3698,
   i386_optab + 3701,
   i386_optab + 3702,
+  i386_optab + 3703,
   i386_optab + 3704,
   i386_optab + 3705,
-  i386_optab + 3706,
-  i386_optab + 3707,
-  i386_optab + 3710,
+  i386_optab + 3708,
   i386_optab + 3711,
-  i386_optab + 3712,
-  i386_optab + 3713,
   i386_optab + 3714,
   i386_optab + 3717,
   i386_optab + 3720,
+  i386_optab + 3721,
+  i386_optab + 3722,
   i386_optab + 3723,
+  i386_optab + 3724,
   i386_optab + 3726,
+  i386_optab + 3728,
   i386_optab + 3729,
   i386_optab + 3730,
   i386_optab + 3731,
-  i386_optab + 3732,
-  i386_optab + 3733,
-  i386_optab + 3735,
+  i386_optab + 3734,
   i386_optab + 3737,
-  i386_optab + 3738,
-  i386_optab + 3739,
   i386_optab + 3740,
   i386_optab + 3743,
   i386_optab + 3746,
+  i386_optab + 3747,
+  i386_optab + 3748,
   i386_optab + 3749,
+  i386_optab + 3751,
   i386_optab + 3752,
-  i386_optab + 3755,
+  i386_optab + 3753,
+  i386_optab + 3754,
   i386_optab + 3756,
   i386_optab + 3757,
   i386_optab + 3758,
+  i386_optab + 3759,
   i386_optab + 3760,
   i386_optab + 3761,
   i386_optab + 3762,
   i386_optab + 3763,
+  i386_optab + 3764,
   i386_optab + 3765,
   i386_optab + 3766,
   i386_optab + 3767,
@@ -38984,18 +38892,9 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3797,
   i386_optab + 3798,
   i386_optab + 3799,
-  i386_optab + 3800,
   i386_optab + 3801,
   i386_optab + 3802,
   i386_optab + 3803,
-  i386_optab + 3804,
-  i386_optab + 3805,
-  i386_optab + 3806,
-  i386_optab + 3807,
-  i386_optab + 3808,
-  i386_optab + 3810,
-  i386_optab + 3811,
-  i386_optab + 3812,
 };
 
 /* i386 mnemonics table.  */