x86: re-work insn/suffix recognition
authorJan Beulich <jbeulich@suse.com>
Mon, 12 Dec 2022 12:51:46 +0000 (13:51 +0100)
committerJan Beulich <jbeulich@suse.com>
Mon, 12 Dec 2022 12:51:46 +0000 (13:51 +0100)
Having templates with a suffix explicitly present has always been
quirky. Introduce a 2nd matching pass in case the 1st one couldn't find
a suitable template _and_ didn't itself already need to trim off a
suffix to find a match at all. This requires error reporting adjustments
(albeit luckily fewer than I was afraid might be necessary), as errors
previously reported during matching now need deferring until after the
2nd pass (because, obviously, we must not emit any error if the 2nd pass
succeeds). While also related to PR gas/29524, it was requested that
move-with-sign-extend be left as broken as it always was.

PR gas/29525
Note that with the dropped CMPSD and MOVSD Intel Syntax string insn
templates taking operands, mixed IsString/non-IsString template groups
(with memory operands) cannot occur anymore. With that
maybe_adjust_templates() becomes unnecessary (and is hence being
removed).

PR gas/29526
Note further that while the additions to the intel16 testcase aren't
really proper Intel syntax, we've been permitting all of those except
for the MOVD variant. The test therefore is to avoid re-introducing such
an inconsistency.

gas/config/tc-i386-intel.c
gas/config/tc-i386.c
gas/testsuite/gas/i386/code16.d
gas/testsuite/gas/i386/code16.e [new file with mode: 0644]
gas/testsuite/gas/i386/code16.s
gas/testsuite/gas/i386/intel16.d
gas/testsuite/gas/i386/intel16.s
opcodes/i386-opc.tbl
opcodes/i386-tbl.h

index 54b124be9c63089834597f50ce767f8de162026b..ca18f5eaf6184885eefe2f741fde8f3e2b78f3a3 100644 (file)
@@ -1000,10 +1000,7 @@ i386_intel_operand (char *operand_string, int got_a_float)
           || intel_state.is_mem)
     {
       /* Memory operand.  */
-      if (i.mem_operands == 1 && !maybe_adjust_templates ())
-       return 0;
-      if ((int) i.mem_operands
-         >= 2 - !current_templates->start->opcode_modifier.isstring)
+      if (i.mem_operands)
        {
          /* Handle
 
@@ -1048,10 +1045,6 @@ i386_intel_operand (char *operand_string, int got_a_float)
                    }
                }
            }
-
-         as_bad (_("too many memory references for `%s'"),
-                 current_templates->start->name);
-         return 0;
        }
 
       /* Swap base and index in 16-bit memory operands like
@@ -1165,8 +1158,6 @@ i386_intel_operand (char *operand_string, int got_a_float)
        return 0;
 
       i.flags[this_operand] |= Operand_Mem;
-      if (i.mem_operands == 0)
-       i.memop1_string = xstrdup (operand_string);
       ++i.mem_operands;
     }
   else
index e4c4198ae0dc30c8167ac99b070becfba9ca7de1..870e2d1597cb670b18709ab7fc66a693a38c1c25 100644 (file)
@@ -298,9 +298,6 @@ struct _i386_insn
        explicit segment overrides are given.  */
     const reg_entry *seg[2];
 
-    /* Copied first memory operand string, for re-checking.  */
-    char *memop1_string;
-
     /* PREFIX holds all the given prefix opcodes (usually null).
        PREFIXES is the number of prefix opcodes.  */
     unsigned int prefixes;
@@ -4299,7 +4296,20 @@ optimize_encoding (void)
           movq $imm31, %r64   -> movl $imm31, %r32
           movq $imm32, %r64   -> movl $imm32, %r32
         */
-      i.tm.opcode_modifier.norex64 = 1;
+      i.tm.opcode_modifier.size = SIZE32;
+      if (i.imm_operands)
+       {
+         i.types[0].bitfield.imm32 = 1;
+         i.types[0].bitfield.imm32s = 0;
+         i.types[0].bitfield.imm64 = 0;
+       }
+      else
+       {
+         i.types[0].bitfield.dword = 1;
+         i.types[0].bitfield.qword = 0;
+       }
+      i.types[1].bitfield.dword = 1;
+      i.types[1].bitfield.qword = 0;
       if (i.tm.base_opcode == 0xb8 || (i.tm.base_opcode | 1) == 0xc7)
        {
          /* Handle
@@ -4309,11 +4319,6 @@ optimize_encoding (void)
          i.tm.operand_types[0].bitfield.imm32 = 1;
          i.tm.operand_types[0].bitfield.imm32s = 0;
          i.tm.operand_types[0].bitfield.imm64 = 0;
-         i.types[0].bitfield.imm32 = 1;
-         i.types[0].bitfield.imm32s = 0;
-         i.types[0].bitfield.imm64 = 0;
-         i.types[1].bitfield.dword = 1;
-         i.types[1].bitfield.qword = 0;
          if ((i.tm.base_opcode | 1) == 0xc7)
            {
              /* Handle
@@ -4836,6 +4841,18 @@ insert_lfence_before (void)
     }
 }
 
+/* Helper for md_assemble() to decide whether to prepare for a possible 2nd
+   parsing pass. Instead of introducing a rarely use new insn attribute this
+   utilizes a common pattern between affected templates. It is deemed
+   acceptable that this will lead to unnecessary pass 2 preparations in a
+   limited set of cases.  */
+static INLINE bool may_need_pass2 (const insn_template *t)
+{
+  return t->opcode_modifier.sse2avx
+        /* Note that all SSE2AVX templates have at least one operand.  */
+        && t->operand_types[t->operands - 1].bitfield.class == RegSIMD;
+}
+
 /* This is the guts of the machine-dependent assembler.  LINE points to a
    machine dependent instruction.  This function is supposed to emit
    the frags/bytes it assembles to.  */
@@ -4844,11 +4861,14 @@ void
 md_assemble (char *line)
 {
   unsigned int j;
-  char mnemonic[MAX_MNEM_SIZE], mnem_suffix;
-  const char *end;
+  char mnemonic[MAX_MNEM_SIZE], mnem_suffix, *copy = NULL;
+  const char *end, *pass1_mnem = NULL;
+  enum i386_error pass1_err = 0;
   const insn_template *t;
 
   /* Initialize globals.  */
+  current_templates = NULL;
+ retry:
   memset (&i, '\0', sizeof (i));
   i.rounding.type = rc_none;
   for (j = 0; j < MAX_OPERANDS; j++)
@@ -4863,16 +4883,26 @@ md_assemble (char *line)
 
   end = parse_insn (line, mnemonic);
   if (end == NULL)
-    return;
+    {
+      if (pass1_mnem != NULL)
+       goto match_error;
+      return;
+    }
+  if (may_need_pass2 (current_templates->start))
+    {
+      /* Make a copy of the full line in case we need to retry.  */
+      copy = xstrdup (line);
+    }
   line += end - line;
   mnem_suffix = i.suffix;
 
   line = parse_operands (line, mnemonic);
   this_operand = -1;
-  xfree (i.memop1_string);
-  i.memop1_string = NULL;
   if (line == NULL)
-    return;
+    {
+      free (copy);
+      return;
+    }
 
   /* Now we've parsed the mnemonic into a set of templates, and have the
      operands at hand.  */
@@ -4950,7 +4980,97 @@ md_assemble (char *line)
      with the template operand types.  */
 
   if (!(t = match_template (mnem_suffix)))
-    return;
+    {
+      const char *err_msg;
+
+      if (copy && !mnem_suffix)
+       {
+         line = copy;
+         copy = NULL;
+         pass1_err = i.error;
+         pass1_mnem = current_templates->start->name;
+         goto retry;
+       }
+      free (copy);
+  match_error:
+      switch (pass1_mnem ? pass1_err : i.error)
+       {
+       default:
+         abort ();
+       case operand_size_mismatch:
+         err_msg = _("operand size mismatch");
+         break;
+       case operand_type_mismatch:
+         err_msg = _("operand type mismatch");
+         break;
+       case register_type_mismatch:
+         err_msg = _("register type mismatch");
+         break;
+       case number_of_operands_mismatch:
+         err_msg = _("number of operands mismatch");
+         break;
+       case invalid_instruction_suffix:
+         err_msg = _("invalid instruction suffix");
+         break;
+       case bad_imm4:
+         err_msg = _("constant doesn't fit in 4 bits");
+         break;
+       case unsupported_with_intel_mnemonic:
+         err_msg = _("unsupported with Intel mnemonic");
+         break;
+       case unsupported_syntax:
+         err_msg = _("unsupported syntax");
+         break;
+       case unsupported:
+         as_bad (_("unsupported instruction `%s'"),
+                 pass1_mnem ? pass1_mnem : current_templates->start->name);
+         return;
+       case invalid_sib_address:
+         err_msg = _("invalid SIB address");
+         break;
+       case invalid_vsib_address:
+         err_msg = _("invalid VSIB address");
+         break;
+       case invalid_vector_register_set:
+         err_msg = _("mask, index, and destination registers must be distinct");
+         break;
+       case invalid_tmm_register_set:
+         err_msg = _("all tmm registers must be distinct");
+         break;
+       case invalid_dest_and_src_register_set:
+         err_msg = _("destination and source registers must be distinct");
+         break;
+       case unsupported_vector_index_register:
+         err_msg = _("unsupported vector index register");
+         break;
+       case unsupported_broadcast:
+         err_msg = _("unsupported broadcast");
+         break;
+       case broadcast_needed:
+         err_msg = _("broadcast is needed for operand of such type");
+         break;
+       case unsupported_masking:
+         err_msg = _("unsupported masking");
+         break;
+       case mask_not_on_destination:
+         err_msg = _("mask not on destination operand");
+         break;
+       case no_default_mask:
+         err_msg = _("default mask isn't allowed");
+         break;
+       case unsupported_rc_sae:
+         err_msg = _("unsupported static rounding/sae");
+         break;
+       case invalid_register_operand:
+         err_msg = _("invalid register operand");
+         break;
+       }
+      as_bad (_("%s for `%s'"), err_msg,
+             pass1_mnem ? pass1_mnem : current_templates->start->name);
+      return;
+    }
+
+  free (copy);
 
   if (sse_check != check_none
       /* The opcode space check isn't strictly needed; it's there only to
@@ -5267,6 +5387,7 @@ parse_insn (const char *line, char *mnemonic)
 {
   const char *l = line, *token_start = l;
   char *mnem_p;
+  bool pass1 = !current_templates;
   int supported;
   const insn_template *t;
   char *dot_p = NULL;
@@ -5436,8 +5557,10 @@ parse_insn (const char *line, char *mnemonic)
       current_templates = (const templates *) str_hash_find (op_hash, mnemonic);
     }
 
-  if (!current_templates)
+  if (!current_templates || !pass1)
     {
+      current_templates = NULL;
+
     check_suffix:
       if (mnem_p > mnemonic)
        {
@@ -5479,13 +5602,39 @@ parse_insn (const char *line, char *mnemonic)
                  current_templates
                    = (const templates *) str_hash_find (op_hash, mnemonic);
                }
+             /* For compatibility reasons accept MOVSD and CMPSD without
+                operands even in AT&T mode.  */
+             else if (*l == END_OF_INSN
+                      || (is_space_char (*l) && l[1] == END_OF_INSN))
+               {
+                 mnem_p[-1] = '\0';
+                 current_templates
+                   = (const templates *) str_hash_find (op_hash, mnemonic);
+                 if (current_templates != NULL
+                     /* MOVS or CMPS */
+                     && (current_templates->start->base_opcode | 2) == 0xa6
+                     && current_templates->start->opcode_modifier.opcodespace
+                        == SPACE_BASE
+                     && mnem_p[-2] == 's')
+                   {
+                     as_warn (_("found `%sd'; assuming `%sl' was meant"),
+                              mnemonic, mnemonic);
+                     i.suffix = LONG_MNEM_SUFFIX;
+                   }
+                 else
+                   {
+                     current_templates = NULL;
+                     mnem_p[-1] = 'd';
+                   }
+               }
              break;
            }
        }
 
       if (!current_templates)
        {
-         as_bad (_("no such instruction: `%s'"), token_start);
+         if (pass1)
+           as_bad (_("no such instruction: `%s'"), token_start);
          return NULL;
        }
     }
@@ -6873,81 +7022,7 @@ match_template (char mnem_suffix)
   if (t == current_templates->end)
     {
       /* We found no match.  */
-      const char *err_msg;
-      switch (specific_error)
-       {
-       default:
-         abort ();
-       case operand_size_mismatch:
-         err_msg = _("operand size mismatch");
-         break;
-       case operand_type_mismatch:
-         err_msg = _("operand type mismatch");
-         break;
-       case register_type_mismatch:
-         err_msg = _("register type mismatch");
-         break;
-       case number_of_operands_mismatch:
-         err_msg = _("number of operands mismatch");
-         break;
-       case invalid_instruction_suffix:
-         err_msg = _("invalid instruction suffix");
-         break;
-       case bad_imm4:
-         err_msg = _("constant doesn't fit in 4 bits");
-         break;
-       case unsupported_with_intel_mnemonic:
-         err_msg = _("unsupported with Intel mnemonic");
-         break;
-       case unsupported_syntax:
-         err_msg = _("unsupported syntax");
-         break;
-       case unsupported:
-         as_bad (_("unsupported instruction `%s'"),
-                 current_templates->start->name);
-         return NULL;
-       case invalid_sib_address:
-         err_msg = _("invalid SIB address");
-         break;
-       case invalid_vsib_address:
-         err_msg = _("invalid VSIB address");
-         break;
-       case invalid_vector_register_set:
-         err_msg = _("mask, index, and destination registers must be distinct");
-         break;
-       case invalid_tmm_register_set:
-         err_msg = _("all tmm registers must be distinct");
-         break;
-       case invalid_dest_and_src_register_set:
-         err_msg = _("destination and source registers must be distinct");
-         break;
-       case unsupported_vector_index_register:
-         err_msg = _("unsupported vector index register");
-         break;
-       case unsupported_broadcast:
-         err_msg = _("unsupported broadcast");
-         break;
-       case broadcast_needed:
-         err_msg = _("broadcast is needed for operand of such type");
-         break;
-       case unsupported_masking:
-         err_msg = _("unsupported masking");
-         break;
-       case mask_not_on_destination:
-         err_msg = _("mask not on destination operand");
-         break;
-       case no_default_mask:
-         err_msg = _("default mask isn't allowed");
-         break;
-       case unsupported_rc_sae:
-         err_msg = _("unsupported static rounding/sae");
-         break;
-       case invalid_register_operand:
-         err_msg = _("invalid register operand");
-         break;
-       }
-      as_bad (_("%s for `%s'"), err_msg,
-             current_templates->start->name);
+      i.error = specific_error;
       return NULL;
     }
 
@@ -11426,49 +11501,6 @@ RC_SAE_immediate (const char *imm_start)
   return 1;
 }
 
-/* Only string instructions can have a second memory operand, so
-   reduce current_templates to just those if it contains any.  */
-static int
-maybe_adjust_templates (void)
-{
-  const insn_template *t;
-
-  gas_assert (i.mem_operands == 1);
-
-  for (t = current_templates->start; t < current_templates->end; ++t)
-    if (t->opcode_modifier.isstring)
-      break;
-
-  if (t < current_templates->end)
-    {
-      static templates aux_templates;
-      bool recheck;
-
-      aux_templates.start = t;
-      for (; t < current_templates->end; ++t)
-       if (!t->opcode_modifier.isstring)
-         break;
-      aux_templates.end = t;
-
-      /* Determine whether to re-check the first memory operand.  */
-      recheck = (aux_templates.start != current_templates->start
-                || t != current_templates->end);
-
-      current_templates = &aux_templates;
-
-      if (recheck)
-       {
-         i.mem_operands = 0;
-         if (i.memop1_string != NULL
-             && i386_index_check (i.memop1_string) == 0)
-           return 0;
-         i.mem_operands = 1;
-       }
-    }
-
-  return 1;
-}
-
 static INLINE bool starts_memory_operand (char c)
 {
   return ISDIGIT (c)
@@ -11619,17 +11651,6 @@ i386_att_operand (char *operand_string)
       char *displacement_string_end;
 
     do_memory_reference:
-      if (i.mem_operands == 1 && !maybe_adjust_templates ())
-       return 0;
-      if ((i.mem_operands == 1
-          && !current_templates->start->opcode_modifier.isstring)
-         || i.mem_operands == 2)
-       {
-         as_bad (_("too many memory references for `%s'"),
-                 current_templates->start->name);
-         return 0;
-       }
-
       /* Check for base index form.  We detect the base index form by
         looking for an ')' at the end of the operand, searching
         for the '(' matching it, and finding a REGISTER_PREFIX or ','
@@ -11837,8 +11858,6 @@ i386_att_operand (char *operand_string)
       if (i386_index_check (operand_string) == 0)
        return 0;
       i.flags[this_operand] |= Operand_Mem;
-      if (i.mem_operands == 0)
-       i.memop1_string = xstrdup (operand_string);
       i.mem_operands++;
     }
   else
index 246be486ba8d9da4c4f46c2b7a8d68e9edfaaa46..1b5a6ddedbf83f87dd11f1b666410e375d979b30 100644 (file)
@@ -1,5 +1,6 @@
 #objdump: -drw -mi8086
 #name: i386 with .code16
+#warning_output: code16.e
 
 .*: +file format .*
 
diff --git a/gas/testsuite/gas/i386/code16.e b/gas/testsuite/gas/i386/code16.e
new file mode 100644 (file)
index 0000000..7c68875
--- /dev/null
@@ -0,0 +1,3 @@
+.*: Assembler messages:
+.*:3: Warning: .* `movsd'.*`movsl'.*
+.*:4: Warning: .* `cmpsd'.*`cmpsl'.*
index 407bb45f9fea8d781232b9d2a30f4be16461d452..c5774e852ece3085c4197f3cad1454d3d94c3395 100644 (file)
@@ -2,8 +2,8 @@
        .code16
        rep; movsd
        rep; cmpsd
-       rep movsd %ds:(%si),%es:(%di)
-       rep cmpsd %es:(%di),%ds:(%si)
+       rep movsl %ds:(%si),%es:(%di)
+       rep cmpsl %es:(%di),%ds:(%si)
 
        mov     %cr2, %ecx
        mov     %ecx, %cr2
index 45bb2030db84b1336db44b75b516a472bc62d914..4adc41f27d15d1b1f98aad9b519df1f4961cf466 100644 (file)
@@ -20,4 +20,12 @@ Disassembly of section .text:
   2c:  8d 02 [         ]*lea    \(%bp,%si\),%ax
   2e:  8d 01 [         ]*lea    \(%bx,%di\),%ax
   30:  8d 03 [         ]*lea    \(%bp,%di\),%ax
-       ...
+[      ]*[0-9a-f]+:    67 f7 13[       ]+notw[         ]+\(%ebx\)
+[      ]*[0-9a-f]+:    66 f7 17[       ]+notl[         ]+\(%bx\)
+[      ]*[0-9a-f]+:    67 0f 1f 03[    ]+nopw[         ]+\(%ebx\)
+[      ]*[0-9a-f]+:    66 0f 1f 07[    ]+nopl[         ]+\(%bx\)
+[      ]*[0-9a-f]+:    67 83 03 05[    ]+addw[         ]+\$0x5,\(%ebx\)
+[      ]*[0-9a-f]+:    66 83 07 05[    ]+addl[         ]+\$0x5,\(%bx\)
+[      ]*[0-9a-f]+:    67 c7 03 05 00[         ]+movw[         ]+\$0x5,\(%ebx\)
+[      ]*[0-9a-f]+:    66 c7 07 05 00 00 00[   ]+movl[         ]+\$0x5,\(%bx\)
+#pass
index 14a979247954995a4aed10089b7dcbbb8b791963..4314e8ddeb5a8825091290974c5827dcbcd52bb7 100644 (file)
  lea   ax, [di][bx]
  lea   ax, [di][bp]
 
- .p2align 4,0
+ notw  [ebx]
+ notd  [bx]
+
+ nopw  [ebx]
+ nopd  [bx]
+
+ addw  [ebx], 5
+ addd  [bx], 5
+
+ movw  [ebx], 5
+ movd  [bx], 5
index 8c13f85708b38809f274dd5b1e5106eb6feb1f18..a6e820a504652cf04ef9365dadbe756a74204446 100644 (file)
 mov, 0xa0, None, CpuNo64, D|W|CheckRegSize|No_sSuf|No_qSuf, { Disp16|Disp32|Unspecified|Byte|Word|Dword, Acc|Byte|Word|Dword }
 mov, 0xa0, None, Cpu64, D|W|CheckRegSize|No_sSuf, { Disp64|Unspecified|Byte|Word|Dword|Qword, Acc|Byte|Word|Dword|Qword }
 movabs, 0xa0, None, Cpu64, D|W|CheckRegSize|No_sSuf, { Disp64|Unspecified|Byte|Word|Dword|Qword, Acc|Byte|Word|Dword|Qword }
-movq, 0xa1, None, Cpu64, D|Size64|NoSuf, { Disp64|Unspecified|Qword, Acc|Qword }
 mov, 0x88, None, 0, D|W|CheckRegSize|Modrm|No_sSuf|HLEPrefixRelease, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
-movq, 0x89, None, Cpu64, D|Modrm|Size64|NoSuf|HLEPrefixRelease, { Reg64, Reg64|Unspecified|Qword|BaseIndex }
 // In the 64bit mode the short form mov immediate is redefined to have
 // 64bit value.
 mov, 0xb0, None, 0, W|No_sSuf|No_qSuf, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32 }
 mov, 0xc6, 0, 0, W|Modrm|No_sSuf|HLEPrefixRelease|Optimize, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
-movq, 0xc7, 0, Cpu64, Modrm|Size64|NoSuf|HLEPrefixRelease|Optimize, { Imm32S, Reg64|Qword|Unspecified|BaseIndex }
 mov, 0xb8, None, Cpu64, No_bSuf|No_wSuf|No_lSuf|No_sSuf|Optimize, { Imm64, Reg64 }
 movabs, 0xb8, None, Cpu64, No_bSuf|No_wSuf|No_lSuf|No_sSuf, { Imm64, Reg64 }
-movq, 0xb8, None, Cpu64, Size64|NoSuf|Optimize, { Imm64, Reg64 }
 // The segment register moves accept WordReg so that a segment register
 // can be copied to a 32 bit register, and vice versa, without using a
 // size prefix.  When moving to a 32 bit register, the upper 16 bits
 // are set to an implementation defined value (on the Pentium Pro, the
 // implementation defined value is zero).
-mov, 0x8c, None, 0, RegMem|No_bSuf|No_sSuf|No_qSuf|NoRex64, { SReg, Reg16|Reg32|Reg64 }
+mov, 0x8c, None, 0, RegMem|No_bSuf|No_sSuf|NoRex64, { SReg, Reg16|Reg32|Reg64 }
 mov, 0x8c, None, 0, D|Modrm|IgnoreSize|No_bSuf|No_lSuf|No_sSuf|No_qSuf, { SReg, Word|Unspecified|BaseIndex }
-movq, 0x8c, None, Cpu64, D|RegMem|NoSuf|NoRex64, { SReg, Reg64 }
-mov, 0x8e, None, 0, Modrm|IgnoreSize|No_bSuf|No_sSuf|No_qSuf|NoRex64, { Reg16|Reg32|Reg64, SReg }
+mov, 0x8e, None, 0, Modrm|IgnoreSize|No_bSuf|No_sSuf|NoRex64, { Reg16|Reg32|Reg64, SReg }
 // Move to/from control debug registers.  In the 16 or 32bit modes
 // they are 32bit.  In the 64bit mode they are 64bit.
 mov, 0xf20, None, Cpu386|CpuNo64, D|RegMem|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Control, Reg32 }
 mov, 0xf20, None, Cpu64, D|RegMem|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64, { Control, Reg64 }
-movq, 0xf20, None, Cpu64, D|RegMem|Size64|NoSuf|NoRex64, { Control, Reg64 }
 mov, 0xf21, None, Cpu386|CpuNo64, D|RegMem|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Debug, Reg32 }
 mov, 0xf21, None, Cpu64, D|RegMem|No_bSuf|No_wSuf|No_lSuf|No_sSuf|NoRex64, { Debug, Reg64 }
-movq, 0xf21, None, Cpu64, D|RegMem|Size64|NoSuf|NoRex64, { Debug, Reg64 }
 mov, 0xf24, None, Cpu386|CpuNo64, D|RegMem|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf, { Test, Reg32 }
 
 // Move after swapping the bytes
@@ -499,9 +492,6 @@ set<cc>, 0xf9<cc:opc>, 0, Cpu386, Modrm|No_wSuf|No_lSuf|No_sSuf|No_qSuf, { Reg8|
 // String manipulation.
 cmps, 0xa6, None, 0, W|No_sSuf|IsString|RepPrefixOk, {}
 cmps, 0xa6, None, 0, W|No_sSuf|IsStringEsOp0|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Byte|Word|Dword|Qword|Unspecified|BaseIndex }
-// Intel mode string compare.
-cmpsd, 0xa7, None, Cpu386, Size32|NoSuf|IsString|RepPrefixOk, {}
-cmpsd, 0xa7, None, Cpu386, Size32|NoSuf|IsStringEsOp0|RepPrefixOk, { Dword|Unspecified|BaseIndex, Dword|Unspecified|BaseIndex }
 scmp, 0xa6, None, 0, W|No_sSuf|IsString|RepPrefixOk, {}
 scmp, 0xa6, None, 0, W|No_sSuf|IsStringEsOp0|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 ins, 0x6c, None, Cpu186, W|No_sSuf|No_qSuf|IsString|RepPrefixOk, {}
@@ -516,9 +506,6 @@ slod, 0xac, None, 0, W|No_sSuf|IsString|RepPrefixOk, { Byte|Word|Dword|Qword|Uns
 slod, 0xac, None, 0, W|No_sSuf|IsString|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Acc|Byte|Word|Dword|Qword }
 movs, 0xa4, None, 0, W|No_sSuf|IsString|RepPrefixOk, {}
 movs, 0xa4, None, 0, W|No_sSuf|IsStringEsOp1|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Byte|Word|Dword|Qword|Unspecified|BaseIndex }
-// Intel mode string move.
-movsd, 0xa5, None, Cpu386, Size32|NoSuf|IsString|RepPrefixOk, {}
-movsd, 0xa5, None, Cpu386, Size32|NoSuf|IsStringEsOp1|RepPrefixOk, { Dword|Unspecified|BaseIndex, Dword|Unspecified|BaseIndex }
 smov, 0xa4, None, 0, W|No_sSuf|IsString|RepPrefixOk, {}
 smov, 0xa4, None, 0, W|No_sSuf|IsStringEsOp1|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 scas, 0xae, None, 0, W|No_sSuf|IsString|RepPrefixOk, {}
@@ -997,6 +984,7 @@ movd, 0x666e, None, CpuAVX, D|Modrm|Vex128|Space0F|VexW0|NoSuf|SSE2AVX, { Reg32|
 movd, 0x666e, None, CpuAVX|Cpu64, D|Modrm|Vex=1|Space0F|VexW1|NoSuf|Size64|SSE2AVX, { Reg64|BaseIndex, RegXMM }
 movd, 0x660f6e, None, CpuSSE2, D|Modrm|IgnoreSize|NoSuf, { Reg32|Unspecified|BaseIndex, RegXMM }
 movd, 0x660f6e, None, CpuSSE2|Cpu64, D|Modrm|NoSuf|Size64, { Reg64|BaseIndex, RegXMM }
+// The MMX templates have to remain after at least the SSE2AVX ones.
 movd, 0xf6e, None, CpuMMX, D|Modrm|IgnoreSize|NoSuf, { Reg32|Unspecified|BaseIndex, RegMMX }
 movd, 0xf6e, None, CpuMMX|Cpu64, D|Modrm|NoSuf|Size64, { Reg64|BaseIndex, RegMMX }
 movq, 0xf37e, None, CpuAVX, Load|Modrm|Vex=1|Space0F|VexWIG|NoSuf|SSE2AVX, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM }
@@ -1005,6 +993,7 @@ movq, 0x666e, None, CpuAVX|Cpu64, D|Modrm|Vex=1|Space0F|VexW1|NoSuf|Size64|SSE2A
 movq, 0xf30f7e, None, CpuSSE2, Load|Modrm|NoSuf, { Unspecified|Qword|BaseIndex|RegXMM, RegXMM }
 movq, 0x660fd6, None, CpuSSE2, Modrm|NoSuf, { RegXMM, Unspecified|Qword|BaseIndex|RegXMM }
 movq, 0x660f6e, None, CpuSSE2|Cpu64, D|Modrm|NoSuf|Size64, { Reg64|Unspecified|BaseIndex, RegXMM }
+// The MMX templates have to remain after at least the SSE2AVX ones.
 movq, 0xf6f, None, CpuMMX, D|Modrm|NoSuf, { Unspecified|Qword|BaseIndex|RegMMX, RegMMX }
 movq, 0xf6e, None, CpuMMX|Cpu64, D|Modrm|NoSuf|Size64, { Reg64|Unspecified|BaseIndex, RegMMX }
 packssdw<mmx>, 0x<mmx:pfx>0f6b, None, <mmx:cpu>, Modrm|<mmx:attr>|NoSuf, { <mmx:reg>|<mmx:mem>|Unspecified|BaseIndex, <mmx:reg> }
index b27e6236c90636e9a4017c52e41058218890311f..c4200ba6a98d744f98f6a7be111c78e65d792663 100644 (file)
@@ -113,7 +113,7 @@ static const insn_template i386_optab[] =
       { { 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 } } } },
   { "mov", 0x8c, 2, None,
-    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0,
+    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 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 },
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -143,7 +143,7 @@ static const insn_template i386_optab[] =
       { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0,
          0, 0, 0, 0, 1, 0 } } } },
   { "mov", 0x8e, 2, None,
-    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0,
+    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -262,231 +262,6 @@ static const insn_template i386_optab[] =
          0, 0, 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 } } } },
-  { "movq", 0xa1, 2, None,
-    { 1, 0, 0, 0, 0, 0, 3, 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,
-      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, 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, 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, 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, 0, 0, 0, 0, 0, 1, 0,
-         0, 0, 0, 0, 1, 0 } },
-      { { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-         0, 0, 0, 0, 0, 0 } } } },
-  { "movq", 0x89, 2, None,
-    { 1, 0, 0, 1, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2,
-      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, 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, 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, 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, 1, 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 } },
-      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-         0, 0, 0, 0, 1, 0 } } } },
-  { "movq", 0xc7, 2, 0,
-    { 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2,
-      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, 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, 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, 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, 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 } },
-      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-         0, 0, 0, 0, 1, 0 } } } },
-  { "movq", 0xb8, 2, None,
-    { 0, 0, 0, 0, 0, 0, 3, 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, 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, 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, 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,
-        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, 1, 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 } },
-      { { 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 } } } },
-  { "movq", 0x8c, 2, None,
-    { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 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 },
-    { { 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, 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, 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, 0, 0, 0,
-        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, 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, 1, 0,
-         0, 0, 0, 0, 0, 0 } } } },
-  { "movq", 0x20, 2, None,
-    { 1, 0, 0, 1, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0,
-      0, 0, 1, 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, 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, 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, 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, 0, 0, 0, 0, 1, 0, 0 } },
-    { { { 3, 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 } },
-      { { 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 } } } },
-  { "movq", 0x21, 2, None,
-    { 1, 0, 0, 1, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0,
-      0, 0, 1, 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, 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, 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, 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, 0, 0, 0, 0, 1, 0, 0 } },
-    { { { 4, 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 } },
-      { { 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 } } } },
-  { "movq", 0x7e, 2, None,
-    { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 1, 0, 3, 1, 2, 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, 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, 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, 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, 0 } },
-    { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-         1, 0, 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, 0, 0, 0, 0, 0 } } } },
-  { "movq", 0xd6, 2, None,
-    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 1, 0, 3, 1, 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, 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, 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, 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, 0 } },
-    { { { 7, 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 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-         1, 0, 0, 0, 1, 0 } } } },
-  { "movq", 0x6e, 2, None,
-    { 1, 0, 0, 1, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 1, 0, 2, 1, 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, 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, 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, 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, 1, 0, 0 } },
-    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-         0, 0, 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, 0, 0, 0, 0, 0 } } } },
-  { "movq", 0x7e, 2, None,
-    { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 0, 0, 0, 1, 2, 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, 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, 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, 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, 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, 1, 0,
-         1, 0, 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, 0, 0, 0, 0, 0 } } } },
-  { "movq", 0xd6, 2, None,
-    { 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-         1, 0, 0, 0, 1, 0 } } } },
-  { "movq", 0x6e, 2, None,
-    { 1, 0, 0, 1, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 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, 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, 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, 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,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 } },
-    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-         0, 0, 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, 0, 0, 0, 0, 0 } } } },
-  { "movq", 0x6f, 2, None,
-    { 1, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-         0, 0, 0, 0, 1, 0 } },
-      { { 6, 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 } } } },
-  { "movq", 0x6e, 2, None,
-    { 1, 0, 0, 1, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 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, 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,
-        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, 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, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 } },
-    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-         0, 0, 0, 0, 1, 0 } },
-      { { 6, 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 } } } },
   { "movbe", 0xf0, 2, None,
     { 1, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4474,68 +4249,6 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 0, 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 } } } },
-  { "cmpsd", 0xa7, 0, None,
-    { 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 1, 1, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         0, 0, 0, 0, 0, 0 } } } },
-  { "cmpsd", 0xa7, 2, None,
-    { 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 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, 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, 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, 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, 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, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0,
-         0, 0, 0, 0, 1, 0 } },
-      { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0,
-         0, 0, 0, 0, 1, 0 } } } },
-  { "cmpsd", 0xc2, 3, None,
-    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 3, 1, 1, 1, 3, 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, 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, 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, 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, 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 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-         1, 0, 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, 0, 0, 0, 0, 0 } } } },
-  { "cmpsd", 0xc2, 3, None,
-    { 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, 1, 3, 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, 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, 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, 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, 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 } },
-      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-         1, 0, 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, 0, 0, 0, 0, 0 } } } },
   { "scmp", 0xa6, 0, None,
     { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 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,
@@ -4730,79 +4443,6 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 1, 0 } },
       { { 0, 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 } } } },
-  { "movsd", 0xa5, 0, None,
-    { 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 1, 1, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-         0, 0, 0, 0, 0, 0 } } } },
-  { "movsd", 0xa5, 2, None,
-    { 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 1, 1, 0, 3, 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, 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, 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, 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, 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, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0,
-         0, 0, 0, 0, 1, 0 } },
-      { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0,
-         0, 0, 0, 0, 1, 0 } } } },
-  { "movsd", 0x10, 2, None,
-    { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 3, 0, 1, 1, 3, 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, 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, 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, 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, 0 } },
-    { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-         0, 0, 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, 0, 0, 0, 0, 0 } } } },
-  { "movsd", 0x10, 2, None,
-    { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 3, 1, 1, 1, 3, 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, 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, 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, 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, 0 } },
-    { { { 7, 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 } },
-      { { 7, 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 } } } },
-  { "movsd", 0x10, 2, None,
-    { 1, 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, 1, 3, 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, 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, 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, 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, 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, 1, 0,
-         1, 0, 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, 0, 0, 0, 0, 0 } } } },
   { "smov", 0xa4, 0, None,
     { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 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,
@@ -9976,6 +9616,126 @@ static const insn_template i386_optab[] =
          0, 0, 0, 0, 0, 0 } },
       { { 6, 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 } } } },
+  { "movq", 0x7e, 2, None,
+    { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 0, 3, 1, 2, 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, 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, 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, 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, 0 } },
+    { { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
+         1, 0, 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, 0, 0, 0, 0, 0 } } } },
+  { "movq", 0xd6, 2, None,
+    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 0, 3, 1, 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, 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, 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, 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, 0 } },
+    { { { 7, 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 } },
+      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
+         1, 0, 0, 0, 1, 0 } } } },
+  { "movq", 0x6e, 2, None,
+    { 1, 0, 0, 1, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 0, 2, 1, 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, 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, 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, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
+         0, 0, 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, 0, 0, 0, 0, 0 } } } },
+  { "movq", 0x7e, 2, None,
+    { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 1, 2, 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, 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, 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, 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, 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, 1, 0,
+         1, 0, 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, 0, 0, 0, 0, 0 } } } },
+  { "movq", 0xd6, 2, None,
+    { 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0 } },
+      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
+         1, 0, 0, 0, 1, 0 } } } },
+  { "movq", 0x6e, 2, None,
+    { 1, 0, 0, 1, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 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, 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, 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, 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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
+         0, 0, 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, 0, 0, 0, 0, 0 } } } },
+  { "movq", 0x6f, 2, None,
+    { 1, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { { 6, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 6, 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 } } } },
+  { "movq", 0x6e, 2, None,
+    { 1, 0, 0, 1, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 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, 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,
+        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, 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, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
+         0, 0, 0, 0, 1, 0 } },
+      { { 6, 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 } } } },
   { "packssdw", 0x6b, 2, None,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
       0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -15732,6 +15492,40 @@ static const insn_template i386_optab[] =
          1, 0, 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, 0, 0, 0, 0, 0 } } } },
+  { "cmpsd", 0xc2, 3, None,
+    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
+      0, 0, 0, 3, 1, 1, 1, 3, 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, 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, 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, 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, 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 } },
+      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
+         1, 0, 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, 0, 0, 0, 0, 0 } } } },
+  { "cmpsd", 0xc2, 3, None,
+    { 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, 1, 3, 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, 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, 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, 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, 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 } },
+      { { 7, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
+         1, 0, 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, 0, 0, 0, 0, 0 } } } },
   { "comisd", 0x2f, 2, None,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
       0, 0, 0, 3, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -16257,6 +16051,51 @@ static const insn_template i386_optab[] =
          1, 0, 0, 0, 0, 0 } },
       { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
          1, 0, 0, 0, 1, 0 } } } },
+  { "movsd", 0x10, 2, None,
+    { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
+      0, 0, 0, 3, 0, 1, 1, 3, 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, 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, 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, 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, 0 } },
+    { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
+         0, 0, 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, 0, 0, 0, 0, 0 } } } },
+  { "movsd", 0x10, 2, None,
+    { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
+      0, 0, 0, 3, 1, 1, 1, 3, 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, 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, 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, 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, 0 } },
+    { { { 7, 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 } },
+      { { 7, 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 } } } },
+  { "movsd", 0x10, 2, None,
+    { 1, 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, 1, 3, 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, 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, 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, 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, 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, 1, 0,
+         1, 0, 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, 0, 0, 0, 0, 0 } } } },
   { "movupd", 0x10, 2, None,
     { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
       0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -59845,55 +59684,67 @@ static const insn_template *const i386_op_sets[] =
   i386_optab,
   i386_optab + 14,
   i386_optab + 16,
+  i386_optab + 17,
+  i386_optab + 18,
+  i386_optab + 19,
+  i386_optab + 20,
+  i386_optab + 21,
+  i386_optab + 22,
+  i386_optab + 23,
+  i386_optab + 25,
+  i386_optab + 28,
+  i386_optab + 29,
+  i386_optab + 30,
   i386_optab + 31,
-  i386_optab + 32,
-  i386_optab + 33,
-  i386_optab + 34,
-  i386_optab + 35,
-  i386_optab + 36,
-  i386_optab + 37,
-  i386_optab + 38,
-  i386_optab + 40,
-  i386_optab + 43,
-  i386_optab + 44,
-  i386_optab + 45,
-  i386_optab + 46,
-  i386_optab + 56,
-  i386_optab + 57,
-  i386_optab + 63,
+  i386_optab + 41,
+  i386_optab + 42,
+  i386_optab + 48,
+  i386_optab + 49,
+  i386_optab + 51,
+  i386_optab + 55,
+  i386_optab + 59,
+  i386_optab + 60,
+  i386_optab + 61,
+  i386_optab + 62,
   i386_optab + 64,
   i386_optab + 66,
+  i386_optab + 68,
+  i386_optab + 69,
   i386_optab + 70,
+  i386_optab + 71,
+  i386_optab + 72,
+  i386_optab + 73,
   i386_optab + 74,
   i386_optab + 75,
-  i386_optab + 76,
   i386_optab + 77,
   i386_optab + 79,
+  i386_optab + 80,
   i386_optab + 81,
-  i386_optab + 83,
-  i386_optab + 84,
-  i386_optab + 85,
+  i386_optab + 82,
   i386_optab + 86,
-  i386_optab + 87,
   i386_optab + 88,
-  i386_optab + 89,
-  i386_optab + 90,
   i386_optab + 92,
   i386_optab + 94,
-  i386_optab + 95,
-  i386_optab + 96,
-  i386_optab + 97,
-  i386_optab + 101,
-  i386_optab + 103,
-  i386_optab + 107,
+  i386_optab + 98,
+  i386_optab + 102,
+  i386_optab + 105,
   i386_optab + 109,
   i386_optab + 113,
   i386_optab + 117,
-  i386_optab + 120,
+  i386_optab + 118,
+  i386_optab + 122,
+  i386_optab + 123,
   i386_optab + 124,
+  i386_optab + 125,
+  i386_optab + 126,
+  i386_optab + 127,
   i386_optab + 128,
+  i386_optab + 130,
   i386_optab + 132,
   i386_optab + 133,
+  i386_optab + 134,
+  i386_optab + 135,
+  i386_optab + 136,
   i386_optab + 137,
   i386_optab + 138,
   i386_optab + 139,
@@ -59901,42 +59752,44 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 141,
   i386_optab + 142,
   i386_optab + 143,
+  i386_optab + 144,
   i386_optab + 145,
-  i386_optab + 147,
-  i386_optab + 148,
-  i386_optab + 149,
-  i386_optab + 150,
   i386_optab + 151,
-  i386_optab + 152,
   i386_optab + 153,
-  i386_optab + 154,
   i386_optab + 155,
-  i386_optab + 156,
-  i386_optab + 157,
-  i386_optab + 158,
   i386_optab + 159,
-  i386_optab + 160,
-  i386_optab + 166,
-  i386_optab + 168,
-  i386_optab + 170,
-  i386_optab + 174,
-  i386_optab + 178,
-  i386_optab + 182,
-  i386_optab + 186,
+  i386_optab + 163,
+  i386_optab + 167,
+  i386_optab + 171,
+  i386_optab + 175,
+  i386_optab + 179,
+  i386_optab + 183,
+  i386_optab + 187,
   i386_optab + 190,
-  i386_optab + 194,
-  i386_optab + 198,
+  i386_optab + 193,
   i386_optab + 202,
   i386_optab + 205,
-  i386_optab + 208,
-  i386_optab + 217,
-  i386_optab + 220,
+  i386_optab + 213,
+  i386_optab + 216,
+  i386_optab + 222,
+  i386_optab + 224,
+  i386_optab + 226,
   i386_optab + 228,
+  i386_optab + 230,
   i386_optab + 231,
+  i386_optab + 232,
+  i386_optab + 233,
+  i386_optab + 234,
+  i386_optab + 235,
+  i386_optab + 236,
   i386_optab + 237,
+  i386_optab + 238,
   i386_optab + 239,
+  i386_optab + 240,
   i386_optab + 241,
+  i386_optab + 242,
   i386_optab + 243,
+  i386_optab + 244,
   i386_optab + 245,
   i386_optab + 246,
   i386_optab + 247,
@@ -59956,25 +59809,25 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 261,
   i386_optab + 262,
   i386_optab + 263,
-  i386_optab + 264,
   i386_optab + 265,
-  i386_optab + 266,
   i386_optab + 267,
-  i386_optab + 268,
   i386_optab + 269,
-  i386_optab + 270,
   i386_optab + 271,
-  i386_optab + 272,
   i386_optab + 273,
   i386_optab + 274,
   i386_optab + 275,
   i386_optab + 276,
   i386_optab + 277,
   i386_optab + 278,
+  i386_optab + 279,
   i386_optab + 280,
+  i386_optab + 281,
   i386_optab + 282,
+  i386_optab + 283,
   i386_optab + 284,
+  i386_optab + 285,
   i386_optab + 286,
+  i386_optab + 287,
   i386_optab + 288,
   i386_optab + 289,
   i386_optab + 290,
@@ -59991,118 +59844,121 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 301,
   i386_optab + 302,
   i386_optab + 303,
-  i386_optab + 304,
   i386_optab + 305,
-  i386_optab + 306,
   i386_optab + 307,
-  i386_optab + 308,
   i386_optab + 309,
-  i386_optab + 310,
   i386_optab + 311,
-  i386_optab + 312,
-  i386_optab + 313,
   i386_optab + 314,
-  i386_optab + 315,
-  i386_optab + 316,
   i386_optab + 317,
-  i386_optab + 318,
-  i386_optab + 320,
+  i386_optab + 319,
+  i386_optab + 321,
   i386_optab + 324,
-  i386_optab + 326,
-  i386_optab + 328,
+  i386_optab + 327,
   i386_optab + 330,
   i386_optab + 333,
+  i386_optab + 335,
   i386_optab + 336,
-  i386_optab + 338,
+  i386_optab + 337,
+  i386_optab + 339,
+  i386_optab + 341,
   i386_optab + 343,
   i386_optab + 345,
+  i386_optab + 346,
+  i386_optab + 347,
   i386_optab + 348,
+  i386_optab + 349,
+  i386_optab + 350,
   i386_optab + 351,
-  i386_optab + 354,
-  i386_optab + 357,
-  i386_optab + 359,
+  i386_optab + 352,
+  i386_optab + 353,
+  i386_optab + 355,
+  i386_optab + 356,
+  i386_optab + 358,
   i386_optab + 360,
-  i386_optab + 361,
+  i386_optab + 362,
   i386_optab + 363,
-  i386_optab + 365,
+  i386_optab + 364,
+  i386_optab + 366,
   i386_optab + 367,
   i386_optab + 369,
-  i386_optab + 370,
   i386_optab + 371,
-  i386_optab + 372,
   i386_optab + 373,
-  i386_optab + 374,
   i386_optab + 375,
-  i386_optab + 376,
   i386_optab + 377,
+  i386_optab + 378,
   i386_optab + 379,
-  i386_optab + 380,
-  i386_optab + 382,
-  i386_optab + 384,
+  i386_optab + 383,
+  i386_optab + 385,
   i386_optab + 386,
   i386_optab + 387,
   i386_optab + 388,
-  i386_optab + 390,
   i386_optab + 391,
-  i386_optab + 393,
-  i386_optab + 395,
-  i386_optab + 397,
+  i386_optab + 392,
+  i386_optab + 396,
+  i386_optab + 398,
   i386_optab + 399,
+  i386_optab + 400,
   i386_optab + 401,
-  i386_optab + 402,
   i386_optab + 403,
   i386_optab + 407,
-  i386_optab + 409,
-  i386_optab + 410,
-  i386_optab + 411,
+  i386_optab + 408,
   i386_optab + 412,
-  i386_optab + 415,
+  i386_optab + 413,
+  i386_optab + 414,
   i386_optab + 416,
+  i386_optab + 418,
+  i386_optab + 419,
   i386_optab + 420,
+  i386_optab + 421,
   i386_optab + 422,
   i386_optab + 423,
   i386_optab + 424,
   i386_optab + 425,
+  i386_optab + 426,
   i386_optab + 427,
-  i386_optab + 431,
+  i386_optab + 428,
   i386_optab + 432,
+  i386_optab + 433,
   i386_optab + 436,
-  i386_optab + 437,
-  i386_optab + 438,
-  i386_optab + 440,
+  i386_optab + 441,
   i386_optab + 442,
-  i386_optab + 443,
-  i386_optab + 444,
-  i386_optab + 445,
-  i386_optab + 446,
-  i386_optab + 447,
   i386_optab + 448,
-  i386_optab + 449,
-  i386_optab + 450,
-  i386_optab + 451,
-  i386_optab + 452,
-  i386_optab + 456,
-  i386_optab + 457,
+  i386_optab + 453,
+  i386_optab + 454,
   i386_optab + 460,
+  i386_optab + 464,
   i386_optab + 465,
-  i386_optab + 466,
-  i386_optab + 472,
-  i386_optab + 477,
-  i386_optab + 478,
-  i386_optab + 484,
-  i386_optab + 488,
-  i386_optab + 489,
+  i386_optab + 468,
+  i386_optab + 473,
+  i386_optab + 474,
+  i386_optab + 480,
+  i386_optab + 485,
+  i386_optab + 486,
   i386_optab + 492,
+  i386_optab + 493,
+  i386_optab + 494,
+  i386_optab + 495,
+  i386_optab + 496,
   i386_optab + 497,
   i386_optab + 498,
+  i386_optab + 499,
+  i386_optab + 500,
+  i386_optab + 501,
+  i386_optab + 502,
+  i386_optab + 503,
   i386_optab + 504,
+  i386_optab + 505,
+  i386_optab + 506,
+  i386_optab + 507,
+  i386_optab + 508,
   i386_optab + 509,
   i386_optab + 510,
-  i386_optab + 516,
-  i386_optab + 517,
+  i386_optab + 511,
+  i386_optab + 512,
+  i386_optab + 513,
+  i386_optab + 514,
+  i386_optab + 515,
   i386_optab + 518,
-  i386_optab + 519,
-  i386_optab + 520,
   i386_optab + 521,
   i386_optab + 522,
   i386_optab + 523,
@@ -60122,7 +59978,11 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 537,
   i386_optab + 538,
   i386_optab + 539,
+  i386_optab + 540,
+  i386_optab + 541,
   i386_optab + 542,
+  i386_optab + 543,
+  i386_optab + 544,
   i386_optab + 545,
   i386_optab + 546,
   i386_optab + 547,
@@ -60195,9 +60055,7 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 614,
   i386_optab + 615,
   i386_optab + 616,
-  i386_optab + 617,
   i386_optab + 618,
-  i386_optab + 619,
   i386_optab + 620,
   i386_optab + 621,
   i386_optab + 622,
@@ -60219,7 +60077,9 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 638,
   i386_optab + 639,
   i386_optab + 640,
+  i386_optab + 641,
   i386_optab + 642,
+  i386_optab + 643,
   i386_optab + 644,
   i386_optab + 645,
   i386_optab + 646,
@@ -60249,23 +60109,11 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 670,
   i386_optab + 671,
   i386_optab + 672,
-  i386_optab + 673,
-  i386_optab + 674,
   i386_optab + 675,
-  i386_optab + 676,
-  i386_optab + 677,
   i386_optab + 678,
-  i386_optab + 679,
-  i386_optab + 680,
   i386_optab + 681,
-  i386_optab + 682,
-  i386_optab + 683,
   i386_optab + 684,
-  i386_optab + 685,
-  i386_optab + 686,
   i386_optab + 687,
-  i386_optab + 688,
-  i386_optab + 689,
   i386_optab + 690,
   i386_optab + 691,
   i386_optab + 692,
@@ -60273,64 +60121,61 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 694,
   i386_optab + 695,
   i386_optab + 696,
-  i386_optab + 699,
   i386_optab + 702,
-  i386_optab + 705,
-  i386_optab + 708,
-  i386_optab + 711,
-  i386_optab + 714,
-  i386_optab + 715,
+  i386_optab + 710,
+  i386_optab + 713,
   i386_optab + 716,
-  i386_optab + 717,
-  i386_optab + 718,
   i386_optab + 719,
-  i386_optab + 720,
-  i386_optab + 726,
-  i386_optab + 729,
-  i386_optab + 732,
-  i386_optab + 735,
-  i386_optab + 738,
-  i386_optab + 741,
-  i386_optab + 744,
-  i386_optab + 747,
-  i386_optab + 750,
-  i386_optab + 753,
-  i386_optab + 756,
-  i386_optab + 759,
-  i386_optab + 762,
-  i386_optab + 765,
-  i386_optab + 768,
-  i386_optab + 771,
-  i386_optab + 774,
-  i386_optab + 777,
-  i386_optab + 780,
-  i386_optab + 783,
-  i386_optab + 786,
-  i386_optab + 789,
-  i386_optab + 792,
-  i386_optab + 795,
-  i386_optab + 801,
-  i386_optab + 807,
-  i386_optab + 813,
-  i386_optab + 819,
-  i386_optab + 825,
-  i386_optab + 831,
-  i386_optab + 837,
-  i386_optab + 843,
-  i386_optab + 846,
-  i386_optab + 849,
-  i386_optab + 852,
-  i386_optab + 855,
-  i386_optab + 858,
-  i386_optab + 861,
-  i386_optab + 864,
-  i386_optab + 867,
-  i386_optab + 870,
-  i386_optab + 873,
+  i386_optab + 722,
+  i386_optab + 725,
+  i386_optab + 728,
+  i386_optab + 731,
+  i386_optab + 734,
+  i386_optab + 737,
+  i386_optab + 740,
+  i386_optab + 743,
+  i386_optab + 746,
+  i386_optab + 749,
+  i386_optab + 752,
+  i386_optab + 755,
+  i386_optab + 758,
+  i386_optab + 761,
+  i386_optab + 764,
+  i386_optab + 767,
+  i386_optab + 770,
+  i386_optab + 773,
+  i386_optab + 776,
+  i386_optab + 779,
+  i386_optab + 785,
+  i386_optab + 791,
+  i386_optab + 797,
+  i386_optab + 803,
+  i386_optab + 809,
+  i386_optab + 815,
+  i386_optab + 821,
+  i386_optab + 827,
+  i386_optab + 830,
+  i386_optab + 833,
+  i386_optab + 836,
+  i386_optab + 839,
+  i386_optab + 842,
+  i386_optab + 845,
+  i386_optab + 848,
+  i386_optab + 851,
+  i386_optab + 854,
+  i386_optab + 857,
+  i386_optab + 860,
+  i386_optab + 863,
+  i386_optab + 866,
+  i386_optab + 869,
+  i386_optab + 872,
+  i386_optab + 874,
   i386_optab + 876,
-  i386_optab + 879,
+  i386_optab + 878,
+  i386_optab + 880,
   i386_optab + 882,
-  i386_optab + 885,
+  i386_optab + 884,
+  i386_optab + 886,
   i386_optab + 888,
   i386_optab + 890,
   i386_optab + 892,
@@ -60347,62 +60192,62 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 914,
   i386_optab + 916,
   i386_optab + 918,
+  i386_optab + 919,
   i386_optab + 920,
-  i386_optab + 922,
-  i386_optab + 924,
   i386_optab + 926,
   i386_optab + 928,
-  i386_optab + 930,
-  i386_optab + 932,
-  i386_optab + 934,
+  i386_optab + 929,
+  i386_optab + 931,
+  i386_optab + 933,
   i386_optab + 935,
-  i386_optab + 936,
+  i386_optab + 937,
+  i386_optab + 938,
+  i386_optab + 940,
   i386_optab + 942,
   i386_optab + 944,
-  i386_optab + 945,
-  i386_optab + 947,
-  i386_optab + 949,
-  i386_optab + 951,
+  i386_optab + 946,
+  i386_optab + 948,
+  i386_optab + 950,
   i386_optab + 953,
-  i386_optab + 954,
-  i386_optab + 956,
+  i386_optab + 955,
   i386_optab + 958,
   i386_optab + 960,
   i386_optab + 962,
-  i386_optab + 964,
-  i386_optab + 966,
-  i386_optab + 969,
-  i386_optab + 971,
+  i386_optab + 963,
+  i386_optab + 965,
+  i386_optab + 968,
+  i386_optab + 970,
+  i386_optab + 972,
   i386_optab + 974,
   i386_optab + 976,
-  i386_optab + 978,
   i386_optab + 979,
-  i386_optab + 981,
-  i386_optab + 984,
-  i386_optab + 986,
-  i386_optab + 988,
-  i386_optab + 990,
-  i386_optab + 992,
+  i386_optab + 982,
+  i386_optab + 989,
   i386_optab + 995,
   i386_optab + 998,
-  i386_optab + 1005,
-  i386_optab + 1011,
+  i386_optab + 1001,
+  i386_optab + 1004,
+  i386_optab + 1007,
+  i386_optab + 1010,
+  i386_optab + 1013,
   i386_optab + 1014,
+  i386_optab + 1015,
+  i386_optab + 1016,
   i386_optab + 1017,
   i386_optab + 1020,
+  i386_optab + 1021,
   i386_optab + 1023,
-  i386_optab + 1026,
+  i386_optab + 1025,
+  i386_optab + 1027,
   i386_optab + 1029,
   i386_optab + 1030,
-  i386_optab + 1031,
   i386_optab + 1032,
-  i386_optab + 1033,
+  i386_optab + 1034,
   i386_optab + 1036,
-  i386_optab + 1037,
-  i386_optab + 1039,
-  i386_optab + 1041,
-  i386_optab + 1043,
-  i386_optab + 1045,
+  i386_optab + 1038,
+  i386_optab + 1040,
+  i386_optab + 1042,
+  i386_optab + 1044,
   i386_optab + 1046,
   i386_optab + 1048,
   i386_optab + 1050,
@@ -60429,401 +60274,399 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 1092,
   i386_optab + 1094,
   i386_optab + 1096,
-  i386_optab + 1098,
-  i386_optab + 1100,
-  i386_optab + 1102,
-  i386_optab + 1104,
-  i386_optab + 1106,
-  i386_optab + 1108,
-  i386_optab + 1110,
+  i386_optab + 1099,
+  i386_optab + 1105,
+  i386_optab + 1107,
+  i386_optab + 1109,
+  i386_optab + 1111,
   i386_optab + 1113,
+  i386_optab + 1115,
+  i386_optab + 1117,
   i386_optab + 1119,
-  i386_optab + 1121,
-  i386_optab + 1123,
+  i386_optab + 1122,
   i386_optab + 1125,
   i386_optab + 1127,
   i386_optab + 1129,
-  i386_optab + 1131,
-  i386_optab + 1133,
+  i386_optab + 1132,
+  i386_optab + 1134,
   i386_optab + 1136,
-  i386_optab + 1139,
-  i386_optab + 1141,
-  i386_optab + 1143,
-  i386_optab + 1145,
-  i386_optab + 1147,
-  i386_optab + 1149,
-  i386_optab + 1151,
-  i386_optab + 1153,
-  i386_optab + 1155,
-  i386_optab + 1157,
-  i386_optab + 1159,
-  i386_optab + 1161,
-  i386_optab + 1163,
+  i386_optab + 1138,
+  i386_optab + 1140,
+  i386_optab + 1142,
+  i386_optab + 1144,
+  i386_optab + 1146,
+  i386_optab + 1148,
+  i386_optab + 1150,
+  i386_optab + 1152,
+  i386_optab + 1154,
+  i386_optab + 1156,
+  i386_optab + 1158,
+  i386_optab + 1160,
+  i386_optab + 1162,
+  i386_optab + 1164,
   i386_optab + 1165,
   i386_optab + 1167,
   i386_optab + 1169,
   i386_optab + 1171,
   i386_optab + 1173,
   i386_optab + 1175,
-  i386_optab + 1176,
+  i386_optab + 1177,
   i386_optab + 1178,
   i386_optab + 1180,
   i386_optab + 1182,
   i386_optab + 1184,
   i386_optab + 1186,
   i386_optab + 1188,
-  i386_optab + 1189,
+  i386_optab + 1190,
   i386_optab + 1191,
-  i386_optab + 1193,
+  i386_optab + 1192,
   i386_optab + 1195,
   i386_optab + 1197,
   i386_optab + 1199,
   i386_optab + 1201,
-  i386_optab + 1202,
   i386_optab + 1203,
-  i386_optab + 1206,
-  i386_optab + 1208,
-  i386_optab + 1210,
-  i386_optab + 1212,
-  i386_optab + 1214,
-  i386_optab + 1216,
-  i386_optab + 1218,
-  i386_optab + 1220,
-  i386_optab + 1222,
-  i386_optab + 1224,
-  i386_optab + 1226,
-  i386_optab + 1228,
-  i386_optab + 1230,
+  i386_optab + 1205,
+  i386_optab + 1207,
+  i386_optab + 1209,
+  i386_optab + 1211,
+  i386_optab + 1213,
+  i386_optab + 1215,
+  i386_optab + 1217,
+  i386_optab + 1219,
+  i386_optab + 1221,
+  i386_optab + 1223,
+  i386_optab + 1225,
+  i386_optab + 1227,
+  i386_optab + 1229,
+  i386_optab + 1231,
   i386_optab + 1232,
-  i386_optab + 1234,
+  i386_optab + 1233,
   i386_optab + 1236,
   i386_optab + 1238,
+  i386_optab + 1239,
   i386_optab + 1240,
+  i386_optab + 1241,
   i386_optab + 1242,
   i386_optab + 1243,
   i386_optab + 1244,
-  i386_optab + 1247,
+  i386_optab + 1246,
+  i386_optab + 1248,
   i386_optab + 1249,
   i386_optab + 1250,
   i386_optab + 1251,
   i386_optab + 1252,
-  i386_optab + 1253,
   i386_optab + 1254,
-  i386_optab + 1255,
-  i386_optab + 1257,
-  i386_optab + 1259,
-  i386_optab + 1260,
+  i386_optab + 1256,
+  i386_optab + 1258,
   i386_optab + 1261,
-  i386_optab + 1262,
-  i386_optab + 1263,
-  i386_optab + 1265,
+  i386_optab + 1264,
   i386_optab + 1267,
-  i386_optab + 1269,
-  i386_optab + 1272,
-  i386_optab + 1275,
-  i386_optab + 1278,
-  i386_optab + 1281,
-  i386_optab + 1284,
-  i386_optab + 1287,
-  i386_optab + 1290,
-  i386_optab + 1293,
-  i386_optab + 1296,
-  i386_optab + 1299,
-  i386_optab + 1302,
-  i386_optab + 1305,
+  i386_optab + 1270,
+  i386_optab + 1273,
+  i386_optab + 1276,
+  i386_optab + 1279,
+  i386_optab + 1282,
+  i386_optab + 1285,
+  i386_optab + 1288,
+  i386_optab + 1291,
+  i386_optab + 1294,
+  i386_optab + 1297,
+  i386_optab + 1300,
+  i386_optab + 1303,
+  i386_optab + 1306,
   i386_optab + 1308,
-  i386_optab + 1311,
+  i386_optab + 1310,
   i386_optab + 1314,
-  i386_optab + 1317,
-  i386_optab + 1319,
-  i386_optab + 1321,
-  i386_optab + 1325,
-  i386_optab + 1329,
-  i386_optab + 1331,
-  i386_optab + 1333,
-  i386_optab + 1337,
-  i386_optab + 1339,
-  i386_optab + 1341,
-  i386_optab + 1343,
-  i386_optab + 1345,
-  i386_optab + 1349,
-  i386_optab + 1351,
-  i386_optab + 1353,
-  i386_optab + 1357,
-  i386_optab + 1359,
-  i386_optab + 1361,
-  i386_optab + 1363,
-  i386_optab + 1367,
-  i386_optab + 1369,
-  i386_optab + 1371,
-  i386_optab + 1373,
-  i386_optab + 1375,
-  i386_optab + 1377,
-  i386_optab + 1379,
-  i386_optab + 1381,
-  i386_optab + 1383,
-  i386_optab + 1385,
-  i386_optab + 1387,
-  i386_optab + 1389,
-  i386_optab + 1391,
-  i386_optab + 1393,
-  i386_optab + 1395,
-  i386_optab + 1397,
-  i386_optab + 1399,
-  i386_optab + 1401,
-  i386_optab + 1403,
-  i386_optab + 1405,
-  i386_optab + 1407,
-  i386_optab + 1409,
-  i386_optab + 1411,
-  i386_optab + 1413,
-  i386_optab + 1415,
-  i386_optab + 1417,
-  i386_optab + 1419,
-  i386_optab + 1421,
-  i386_optab + 1423,
-  i386_optab + 1425,
-  i386_optab + 1427,
+  i386_optab + 1318,
+  i386_optab + 1320,
+  i386_optab + 1322,
+  i386_optab + 1326,
+  i386_optab + 1328,
+  i386_optab + 1330,
+  i386_optab + 1332,
+  i386_optab + 1334,
+  i386_optab + 1338,
+  i386_optab + 1340,
+  i386_optab + 1342,
+  i386_optab + 1346,
+  i386_optab + 1348,
+  i386_optab + 1350,
+  i386_optab + 1352,
+  i386_optab + 1356,
+  i386_optab + 1358,
+  i386_optab + 1360,
+  i386_optab + 1362,
+  i386_optab + 1364,
+  i386_optab + 1366,
+  i386_optab + 1368,
+  i386_optab + 1370,
+  i386_optab + 1372,
+  i386_optab + 1374,
+  i386_optab + 1376,
+  i386_optab + 1378,
+  i386_optab + 1380,
+  i386_optab + 1382,
+  i386_optab + 1384,
+  i386_optab + 1386,
+  i386_optab + 1388,
+  i386_optab + 1390,
+  i386_optab + 1392,
+  i386_optab + 1394,
+  i386_optab + 1396,
+  i386_optab + 1398,
+  i386_optab + 1400,
+  i386_optab + 1402,
+  i386_optab + 1404,
+  i386_optab + 1406,
+  i386_optab + 1408,
+  i386_optab + 1410,
+  i386_optab + 1412,
+  i386_optab + 1414,
+  i386_optab + 1416,
+  i386_optab + 1420,
+  i386_optab + 1424,
+  i386_optab + 1426,
+  i386_optab + 1428,
+  i386_optab + 1430,
   i386_optab + 1431,
+  i386_optab + 1432,
+  i386_optab + 1433,
+  i386_optab + 1434,
   i386_optab + 1435,
+  i386_optab + 1436,
   i386_optab + 1437,
-  i386_optab + 1439,
-  i386_optab + 1441,
+  i386_optab + 1438,
+  i386_optab + 1440,
   i386_optab + 1442,
-  i386_optab + 1443,
   i386_optab + 1444,
-  i386_optab + 1445,
   i386_optab + 1446,
-  i386_optab + 1447,
   i386_optab + 1448,
-  i386_optab + 1449,
-  i386_optab + 1451,
+  i386_optab + 1450,
   i386_optab + 1453,
-  i386_optab + 1455,
-  i386_optab + 1457,
+  i386_optab + 1456,
   i386_optab + 1459,
-  i386_optab + 1461,
+  i386_optab + 1462,
   i386_optab + 1464,
-  i386_optab + 1467,
+  i386_optab + 1466,
+  i386_optab + 1468,
   i386_optab + 1470,
-  i386_optab + 1473,
-  i386_optab + 1475,
-  i386_optab + 1477,
-  i386_optab + 1479,
-  i386_optab + 1481,
-  i386_optab + 1483,
-  i386_optab + 1485,
+  i386_optab + 1472,
+  i386_optab + 1474,
+  i386_optab + 1476,
+  i386_optab + 1478,
+  i386_optab + 1480,
+  i386_optab + 1482,
+  i386_optab + 1484,
+  i386_optab + 1486,
   i386_optab + 1487,
-  i386_optab + 1489,
-  i386_optab + 1491,
-  i386_optab + 1493,
-  i386_optab + 1495,
+  i386_optab + 1488,
+  i386_optab + 1490,
+  i386_optab + 1492,
+  i386_optab + 1494,
+  i386_optab + 1496,
   i386_optab + 1497,
   i386_optab + 1498,
   i386_optab + 1499,
+  i386_optab + 1500,
   i386_optab + 1501,
-  i386_optab + 1503,
-  i386_optab + 1505,
+  i386_optab + 1504,
   i386_optab + 1507,
-  i386_optab + 1508,
   i386_optab + 1509,
-  i386_optab + 1510,
   i386_optab + 1511,
-  i386_optab + 1512,
+  i386_optab + 1513,
   i386_optab + 1515,
-  i386_optab + 1518,
-  i386_optab + 1520,
-  i386_optab + 1522,
-  i386_optab + 1524,
-  i386_optab + 1526,
-  i386_optab + 1528,
-  i386_optab + 1530,
-  i386_optab + 1532,
-  i386_optab + 1534,
-  i386_optab + 1536,
-  i386_optab + 1538,
-  i386_optab + 1540,
-  i386_optab + 1542,
-  i386_optab + 1544,
-  i386_optab + 1546,
-  i386_optab + 1548,
-  i386_optab + 1550,
-  i386_optab + 1552,
-  i386_optab + 1554,
-  i386_optab + 1556,
-  i386_optab + 1558,
-  i386_optab + 1560,
-  i386_optab + 1562,
-  i386_optab + 1564,
-  i386_optab + 1566,
-  i386_optab + 1568,
-  i386_optab + 1570,
-  i386_optab + 1572,
-  i386_optab + 1574,
-  i386_optab + 1576,
-  i386_optab + 1578,
-  i386_optab + 1580,
-  i386_optab + 1582,
-  i386_optab + 1584,
-  i386_optab + 1586,
-  i386_optab + 1588,
-  i386_optab + 1590,
-  i386_optab + 1592,
-  i386_optab + 1594,
-  i386_optab + 1596,
-  i386_optab + 1598,
-  i386_optab + 1600,
-  i386_optab + 1602,
-  i386_optab + 1604,
-  i386_optab + 1606,
-  i386_optab + 1608,
-  i386_optab + 1610,
-  i386_optab + 1612,
-  i386_optab + 1614,
-  i386_optab + 1616,
-  i386_optab + 1618,
-  i386_optab + 1620,
-  i386_optab + 1622,
-  i386_optab + 1624,
-  i386_optab + 1626,
-  i386_optab + 1628,
-  i386_optab + 1630,
-  i386_optab + 1632,
-  i386_optab + 1634,
-  i386_optab + 1636,
-  i386_optab + 1638,
-  i386_optab + 1640,
-  i386_optab + 1642,
-  i386_optab + 1644,
-  i386_optab + 1646,
-  i386_optab + 1648,
-  i386_optab + 1650,
-  i386_optab + 1652,
-  i386_optab + 1654,
-  i386_optab + 1656,
-  i386_optab + 1658,
-  i386_optab + 1660,
-  i386_optab + 1662,
-  i386_optab + 1664,
-  i386_optab + 1666,
-  i386_optab + 1668,
-  i386_optab + 1670,
-  i386_optab + 1672,
-  i386_optab + 1674,
-  i386_optab + 1676,
-  i386_optab + 1678,
-  i386_optab + 1680,
-  i386_optab + 1682,
-  i386_optab + 1684,
-  i386_optab + 1686,
-  i386_optab + 1688,
-  i386_optab + 1690,
-  i386_optab + 1692,
-  i386_optab + 1694,
-  i386_optab + 1696,
-  i386_optab + 1698,
-  i386_optab + 1700,
-  i386_optab + 1702,
-  i386_optab + 1704,
-  i386_optab + 1706,
-  i386_optab + 1708,
-  i386_optab + 1710,
-  i386_optab + 1712,
-  i386_optab + 1714,
-  i386_optab + 1716,
-  i386_optab + 1718,
-  i386_optab + 1720,
-  i386_optab + 1722,
-  i386_optab + 1724,
-  i386_optab + 1726,
-  i386_optab + 1728,
-  i386_optab + 1730,
-  i386_optab + 1732,
-  i386_optab + 1734,
-  i386_optab + 1736,
-  i386_optab + 1738,
-  i386_optab + 1740,
-  i386_optab + 1742,
-  i386_optab + 1744,
-  i386_optab + 1746,
-  i386_optab + 1748,
-  i386_optab + 1750,
-  i386_optab + 1752,
-  i386_optab + 1754,
-  i386_optab + 1756,
-  i386_optab + 1758,
-  i386_optab + 1760,
-  i386_optab + 1762,
-  i386_optab + 1764,
-  i386_optab + 1766,
-  i386_optab + 1768,
-  i386_optab + 1770,
-  i386_optab + 1772,
-  i386_optab + 1774,
-  i386_optab + 1776,
-  i386_optab + 1778,
-  i386_optab + 1780,
-  i386_optab + 1782,
-  i386_optab + 1784,
-  i386_optab + 1786,
-  i386_optab + 1788,
-  i386_optab + 1790,
-  i386_optab + 1792,
-  i386_optab + 1794,
-  i386_optab + 1796,
-  i386_optab + 1798,
-  i386_optab + 1800,
-  i386_optab + 1802,
-  i386_optab + 1804,
-  i386_optab + 1806,
-  i386_optab + 1808,
-  i386_optab + 1810,
-  i386_optab + 1812,
-  i386_optab + 1814,
-  i386_optab + 1816,
-  i386_optab + 1818,
-  i386_optab + 1820,
-  i386_optab + 1822,
-  i386_optab + 1824,
-  i386_optab + 1826,
-  i386_optab + 1828,
-  i386_optab + 1830,
-  i386_optab + 1832,
-  i386_optab + 1834,
-  i386_optab + 1836,
-  i386_optab + 1838,
-  i386_optab + 1840,
-  i386_optab + 1842,
-  i386_optab + 1844,
-  i386_optab + 1846,
-  i386_optab + 1848,
-  i386_optab + 1850,
-  i386_optab + 1852,
-  i386_optab + 1854,
-  i386_optab + 1856,
-  i386_optab + 1858,
-  i386_optab + 1860,
-  i386_optab + 1862,
-  i386_optab + 1864,
-  i386_optab + 1866,
-  i386_optab + 1868,
-  i386_optab + 1870,
-  i386_optab + 1872,
-  i386_optab + 1874,
-  i386_optab + 1876,
-  i386_optab + 1878,
-  i386_optab + 1880,
-  i386_optab + 1882,
-  i386_optab + 1884,
-  i386_optab + 1886,
-  i386_optab + 1888,
-  i386_optab + 1890,
+  i386_optab + 1517,
+  i386_optab + 1519,
+  i386_optab + 1521,
+  i386_optab + 1523,
+  i386_optab + 1525,
+  i386_optab + 1527,
+  i386_optab + 1529,
+  i386_optab + 1531,
+  i386_optab + 1533,
+  i386_optab + 1535,
+  i386_optab + 1537,
+  i386_optab + 1539,
+  i386_optab + 1541,
+  i386_optab + 1543,
+  i386_optab + 1545,
+  i386_optab + 1547,
+  i386_optab + 1549,
+  i386_optab + 1551,
+  i386_optab + 1553,
+  i386_optab + 1555,
+  i386_optab + 1557,
+  i386_optab + 1559,
+  i386_optab + 1561,
+  i386_optab + 1563,
+  i386_optab + 1565,
+  i386_optab + 1567,
+  i386_optab + 1569,
+  i386_optab + 1571,
+  i386_optab + 1573,
+  i386_optab + 1575,
+  i386_optab + 1577,
+  i386_optab + 1579,
+  i386_optab + 1581,
+  i386_optab + 1583,
+  i386_optab + 1585,
+  i386_optab + 1587,
+  i386_optab + 1589,
+  i386_optab + 1591,
+  i386_optab + 1593,
+  i386_optab + 1595,
+  i386_optab + 1597,
+  i386_optab + 1599,
+  i386_optab + 1601,
+  i386_optab + 1603,
+  i386_optab + 1605,
+  i386_optab + 1607,
+  i386_optab + 1609,
+  i386_optab + 1611,
+  i386_optab + 1613,
+  i386_optab + 1615,
+  i386_optab + 1617,
+  i386_optab + 1619,
+  i386_optab + 1621,
+  i386_optab + 1623,
+  i386_optab + 1625,
+  i386_optab + 1627,
+  i386_optab + 1629,
+  i386_optab + 1631,
+  i386_optab + 1633,
+  i386_optab + 1635,
+  i386_optab + 1637,
+  i386_optab + 1639,
+  i386_optab + 1641,
+  i386_optab + 1643,
+  i386_optab + 1645,
+  i386_optab + 1647,
+  i386_optab + 1649,
+  i386_optab + 1651,
+  i386_optab + 1653,
+  i386_optab + 1655,
+  i386_optab + 1657,
+  i386_optab + 1659,
+  i386_optab + 1661,
+  i386_optab + 1663,
+  i386_optab + 1665,
+  i386_optab + 1667,
+  i386_optab + 1669,
+  i386_optab + 1671,
+  i386_optab + 1673,
+  i386_optab + 1675,
+  i386_optab + 1677,
+  i386_optab + 1679,
+  i386_optab + 1681,
+  i386_optab + 1683,
+  i386_optab + 1685,
+  i386_optab + 1687,
+  i386_optab + 1689,
+  i386_optab + 1691,
+  i386_optab + 1693,
+  i386_optab + 1695,
+  i386_optab + 1697,
+  i386_optab + 1699,
+  i386_optab + 1701,
+  i386_optab + 1703,
+  i386_optab + 1705,
+  i386_optab + 1707,
+  i386_optab + 1709,
+  i386_optab + 1711,
+  i386_optab + 1713,
+  i386_optab + 1715,
+  i386_optab + 1717,
+  i386_optab + 1719,
+  i386_optab + 1721,
+  i386_optab + 1723,
+  i386_optab + 1725,
+  i386_optab + 1727,
+  i386_optab + 1729,
+  i386_optab + 1731,
+  i386_optab + 1733,
+  i386_optab + 1735,
+  i386_optab + 1737,
+  i386_optab + 1739,
+  i386_optab + 1741,
+  i386_optab + 1743,
+  i386_optab + 1745,
+  i386_optab + 1747,
+  i386_optab + 1749,
+  i386_optab + 1751,
+  i386_optab + 1753,
+  i386_optab + 1755,
+  i386_optab + 1757,
+  i386_optab + 1759,
+  i386_optab + 1761,
+  i386_optab + 1763,
+  i386_optab + 1765,
+  i386_optab + 1767,
+  i386_optab + 1769,
+  i386_optab + 1771,
+  i386_optab + 1773,
+  i386_optab + 1775,
+  i386_optab + 1777,
+  i386_optab + 1779,
+  i386_optab + 1781,
+  i386_optab + 1783,
+  i386_optab + 1785,
+  i386_optab + 1787,
+  i386_optab + 1789,
+  i386_optab + 1791,
+  i386_optab + 1793,
+  i386_optab + 1795,
+  i386_optab + 1797,
+  i386_optab + 1799,
+  i386_optab + 1801,
+  i386_optab + 1803,
+  i386_optab + 1805,
+  i386_optab + 1807,
+  i386_optab + 1809,
+  i386_optab + 1811,
+  i386_optab + 1813,
+  i386_optab + 1815,
+  i386_optab + 1817,
+  i386_optab + 1819,
+  i386_optab + 1821,
+  i386_optab + 1823,
+  i386_optab + 1825,
+  i386_optab + 1827,
+  i386_optab + 1829,
+  i386_optab + 1831,
+  i386_optab + 1833,
+  i386_optab + 1835,
+  i386_optab + 1837,
+  i386_optab + 1839,
+  i386_optab + 1841,
+  i386_optab + 1843,
+  i386_optab + 1845,
+  i386_optab + 1847,
+  i386_optab + 1849,
+  i386_optab + 1851,
+  i386_optab + 1853,
+  i386_optab + 1855,
+  i386_optab + 1857,
+  i386_optab + 1859,
+  i386_optab + 1861,
+  i386_optab + 1863,
+  i386_optab + 1865,
+  i386_optab + 1867,
+  i386_optab + 1869,
+  i386_optab + 1871,
+  i386_optab + 1873,
+  i386_optab + 1875,
+  i386_optab + 1877,
+  i386_optab + 1879,
+  i386_optab + 1881,
+  i386_optab + 1883,
+  i386_optab + 1885,
+  i386_optab + 1887,
   i386_optab + 1892,
   i386_optab + 1894,
-  i386_optab + 1896,
-  i386_optab + 1898,
+  i386_optab + 1899,
+  i386_optab + 1901,
   i386_optab + 1903,
-  i386_optab + 1905,
+  i386_optab + 1908,
   i386_optab + 1910,
   i386_optab + 1912,
   i386_optab + 1914,
@@ -60831,158 +60674,160 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 1921,
   i386_optab + 1923,
   i386_optab + 1925,
-  i386_optab + 1930,
-  i386_optab + 1932,
-  i386_optab + 1934,
-  i386_optab + 1936,
-  i386_optab + 1940,
+  i386_optab + 1929,
+  i386_optab + 1935,
+  i386_optab + 1937,
+  i386_optab + 1942,
+  i386_optab + 1944,
   i386_optab + 1946,
   i386_optab + 1948,
-  i386_optab + 1953,
-  i386_optab + 1955,
-  i386_optab + 1957,
-  i386_optab + 1959,
+  i386_optab + 1950,
+  i386_optab + 1952,
+  i386_optab + 1954,
+  i386_optab + 1956,
+  i386_optab + 1958,
+  i386_optab + 1960,
   i386_optab + 1961,
+  i386_optab + 1962,
   i386_optab + 1963,
-  i386_optab + 1965,
   i386_optab + 1967,
+  i386_optab + 1968,
   i386_optab + 1969,
+  i386_optab + 1970,
   i386_optab + 1971,
   i386_optab + 1972,
-  i386_optab + 1973,
   i386_optab + 1974,
-  i386_optab + 1978,
+  i386_optab + 1975,
+  i386_optab + 1976,
+  i386_optab + 1977,
   i386_optab + 1979,
-  i386_optab + 1980,
   i386_optab + 1981,
-  i386_optab + 1982,
   i386_optab + 1983,
   i386_optab + 1985,
-  i386_optab + 1986,
   i386_optab + 1987,
-  i386_optab + 1988,
-  i386_optab + 1990,
-  i386_optab + 1992,
-  i386_optab + 1994,
-  i386_optab + 1996,
-  i386_optab + 1998,
-  i386_optab + 2000,
-  i386_optab + 2002,
+  i386_optab + 1989,
+  i386_optab + 1991,
+  i386_optab + 1993,
+  i386_optab + 1995,
+  i386_optab + 1997,
+  i386_optab + 1999,
+  i386_optab + 2001,
   i386_optab + 2004,
-  i386_optab + 2006,
   i386_optab + 2008,
+  i386_optab + 2009,
   i386_optab + 2010,
   i386_optab + 2012,
-  i386_optab + 2015,
-  i386_optab + 2019,
+  i386_optab + 2016,
   i386_optab + 2020,
-  i386_optab + 2021,
-  i386_optab + 2023,
-  i386_optab + 2027,
+  i386_optab + 2022,
+  i386_optab + 2026,
+  i386_optab + 2030,
   i386_optab + 2031,
-  i386_optab + 2033,
-  i386_optab + 2037,
-  i386_optab + 2041,
-  i386_optab + 2042,
-  i386_optab + 2043,
-  i386_optab + 2045,
-  i386_optab + 2047,
-  i386_optab + 2049,
-  i386_optab + 2051,
-  i386_optab + 2057,
-  i386_optab + 2061,
+  i386_optab + 2032,
+  i386_optab + 2034,
+  i386_optab + 2036,
+  i386_optab + 2038,
+  i386_optab + 2040,
+  i386_optab + 2046,
+  i386_optab + 2050,
+  i386_optab + 2054,
+  i386_optab + 2056,
+  i386_optab + 2058,
+  i386_optab + 2060,
+  i386_optab + 2062,
+  i386_optab + 2063,
   i386_optab + 2065,
   i386_optab + 2067,
   i386_optab + 2069,
   i386_optab + 2071,
   i386_optab + 2073,
-  i386_optab + 2074,
-  i386_optab + 2076,
-  i386_optab + 2078,
-  i386_optab + 2080,
-  i386_optab + 2082,
-  i386_optab + 2084,
-  i386_optab + 2086,
-  i386_optab + 2088,
-  i386_optab + 2090,
-  i386_optab + 2092,
-  i386_optab + 2094,
-  i386_optab + 2096,
-  i386_optab + 2098,
-  i386_optab + 2100,
-  i386_optab + 2102,
-  i386_optab + 2104,
-  i386_optab + 2106,
+  i386_optab + 2075,
+  i386_optab + 2077,
+  i386_optab + 2079,
+  i386_optab + 2081,
+  i386_optab + 2083,
+  i386_optab + 2085,
+  i386_optab + 2087,
+  i386_optab + 2089,
+  i386_optab + 2091,
+  i386_optab + 2093,
+  i386_optab + 2095,
+  i386_optab + 2097,
+  i386_optab + 2099,
+  i386_optab + 2101,
+  i386_optab + 2103,
+  i386_optab + 2105,
+  i386_optab + 2107,
   i386_optab + 2108,
-  i386_optab + 2110,
-  i386_optab + 2112,
+  i386_optab + 2109,
+  i386_optab + 2111,
+  i386_optab + 2113,
   i386_optab + 2114,
-  i386_optab + 2116,
+  i386_optab + 2115,
   i386_optab + 2118,
-  i386_optab + 2119,
-  i386_optab + 2120,
-  i386_optab + 2122,
+  i386_optab + 2121,
   i386_optab + 2124,
-  i386_optab + 2125,
-  i386_optab + 2126,
+  i386_optab + 2127,
   i386_optab + 2129,
-  i386_optab + 2132,
+  i386_optab + 2131,
+  i386_optab + 2133,
   i386_optab + 2135,
-  i386_optab + 2138,
+  i386_optab + 2137,
+  i386_optab + 2139,
   i386_optab + 2140,
+  i386_optab + 2141,
   i386_optab + 2142,
-  i386_optab + 2144,
   i386_optab + 2146,
-  i386_optab + 2148,
   i386_optab + 2150,
-  i386_optab + 2151,
   i386_optab + 2152,
-  i386_optab + 2153,
-  i386_optab + 2157,
-  i386_optab + 2161,
-  i386_optab + 2163,
+  i386_optab + 2154,
+  i386_optab + 2160,
+  i386_optab + 2164,
   i386_optab + 2165,
+  i386_optab + 2166,
+  i386_optab + 2167,
+  i386_optab + 2168,
+  i386_optab + 2169,
+  i386_optab + 2170,
   i386_optab + 2171,
   i386_optab + 2175,
-  i386_optab + 2176,
   i386_optab + 2177,
-  i386_optab + 2178,
   i386_optab + 2179,
-  i386_optab + 2180,
-  i386_optab + 2181,
-  i386_optab + 2182,
-  i386_optab + 2186,
-  i386_optab + 2188,
-  i386_optab + 2190,
-  i386_optab + 2194,
-  i386_optab + 2196,
-  i386_optab + 2198,
-  i386_optab + 2200,
-  i386_optab + 2202,
-  i386_optab + 2204,
-  i386_optab + 2206,
-  i386_optab + 2208,
-  i386_optab + 2210,
+  i386_optab + 2183,
+  i386_optab + 2185,
+  i386_optab + 2187,
+  i386_optab + 2189,
+  i386_optab + 2191,
+  i386_optab + 2193,
+  i386_optab + 2195,
+  i386_optab + 2197,
+  i386_optab + 2199,
+  i386_optab + 2201,
+  i386_optab + 2203,
+  i386_optab + 2205,
+  i386_optab + 2207,
+  i386_optab + 2209,
+  i386_optab + 2211,
   i386_optab + 2212,
-  i386_optab + 2214,
-  i386_optab + 2216,
-  i386_optab + 2218,
-  i386_optab + 2220,
+  i386_optab + 2217,
   i386_optab + 2222,
-  i386_optab + 2223,
-  i386_optab + 2228,
-  i386_optab + 2233,
-  i386_optab + 2238,
-  i386_optab + 2243,
-  i386_optab + 2248,
-  i386_optab + 2253,
-  i386_optab + 2258,
-  i386_optab + 2263,
-  i386_optab + 2268,
-  i386_optab + 2273,
+  i386_optab + 2227,
+  i386_optab + 2232,
+  i386_optab + 2237,
+  i386_optab + 2242,
+  i386_optab + 2247,
+  i386_optab + 2252,
+  i386_optab + 2257,
+  i386_optab + 2262,
+  i386_optab + 2267,
+  i386_optab + 2272,
+  i386_optab + 2274,
+  i386_optab + 2276,
   i386_optab + 2278,
-  i386_optab + 2283,
-  i386_optab + 2285,
+  i386_optab + 2280,
+  i386_optab + 2282,
+  i386_optab + 2284,
+  i386_optab + 2286,
   i386_optab + 2287,
   i386_optab + 2289,
   i386_optab + 2291,
@@ -60990,177 +60835,182 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2295,
   i386_optab + 2297,
   i386_optab + 2298,
+  i386_optab + 2299,
   i386_optab + 2300,
-  i386_optab + 2302,
   i386_optab + 2304,
-  i386_optab + 2306,
   i386_optab + 2308,
-  i386_optab + 2309,
   i386_optab + 2310,
-  i386_optab + 2311,
-  i386_optab + 2315,
-  i386_optab + 2319,
-  i386_optab + 2321,
-  i386_optab + 2325,
-  i386_optab + 2329,
-  i386_optab + 2333,
-  i386_optab + 2337,
-  i386_optab + 2341,
-  i386_optab + 2343,
-  i386_optab + 2347,
-  i386_optab + 2349,
-  i386_optab + 2351,
+  i386_optab + 2314,
+  i386_optab + 2318,
+  i386_optab + 2322,
+  i386_optab + 2326,
+  i386_optab + 2330,
+  i386_optab + 2332,
+  i386_optab + 2336,
+  i386_optab + 2338,
+  i386_optab + 2340,
+  i386_optab + 2342,
+  i386_optab + 2344,
+  i386_optab + 2346,
+  i386_optab + 2348,
+  i386_optab + 2350,
+  i386_optab + 2352,
   i386_optab + 2353,
   i386_optab + 2355,
   i386_optab + 2357,
   i386_optab + 2359,
   i386_optab + 2361,
   i386_optab + 2363,
-  i386_optab + 2364,
-  i386_optab + 2366,
-  i386_optab + 2368,
+  i386_optab + 2365,
+  i386_optab + 2367,
+  i386_optab + 2369,
   i386_optab + 2370,
+  i386_optab + 2371,
   i386_optab + 2372,
+  i386_optab + 2373,
   i386_optab + 2374,
+  i386_optab + 2375,
   i386_optab + 2376,
+  i386_optab + 2377,
   i386_optab + 2378,
   i386_optab + 2380,
-  i386_optab + 2381,
   i386_optab + 2382,
-  i386_optab + 2383,
   i386_optab + 2384,
-  i386_optab + 2385,
   i386_optab + 2386,
-  i386_optab + 2387,
   i386_optab + 2388,
-  i386_optab + 2389,
+  i386_optab + 2390,
   i386_optab + 2391,
   i386_optab + 2393,
   i386_optab + 2395,
   i386_optab + 2397,
   i386_optab + 2399,
+  i386_optab + 2400,
   i386_optab + 2401,
-  i386_optab + 2402,
-  i386_optab + 2404,
-  i386_optab + 2406,
-  i386_optab + 2408,
-  i386_optab + 2410,
+  i386_optab + 2403,
+  i386_optab + 2405,
+  i386_optab + 2407,
+  i386_optab + 2409,
   i386_optab + 2411,
-  i386_optab + 2412,
-  i386_optab + 2414,
-  i386_optab + 2416,
+  i386_optab + 2413,
+  i386_optab + 2415,
+  i386_optab + 2417,
   i386_optab + 2418,
+  i386_optab + 2419,
   i386_optab + 2420,
-  i386_optab + 2422,
+  i386_optab + 2421,
   i386_optab + 2424,
-  i386_optab + 2426,
-  i386_optab + 2428,
-  i386_optab + 2429,
+  i386_optab + 2427,
   i386_optab + 2430,
-  i386_optab + 2431,
-  i386_optab + 2432,
-  i386_optab + 2435,
-  i386_optab + 2438,
+  i386_optab + 2433,
+  i386_optab + 2434,
+  i386_optab + 2436,
+  i386_optab + 2439,
   i386_optab + 2441,
   i386_optab + 2444,
   i386_optab + 2445,
-  i386_optab + 2447,
+  i386_optab + 2446,
+  i386_optab + 2448,
   i386_optab + 2450,
   i386_optab + 2452,
-  i386_optab + 2455,
+  i386_optab + 2454,
   i386_optab + 2456,
-  i386_optab + 2457,
-  i386_optab + 2459,
-  i386_optab + 2461,
+  i386_optab + 2458,
+  i386_optab + 2460,
   i386_optab + 2463,
-  i386_optab + 2465,
-  i386_optab + 2467,
-  i386_optab + 2469,
-  i386_optab + 2471,
-  i386_optab + 2474,
-  i386_optab + 2479,
-  i386_optab + 2484,
-  i386_optab + 2489,
-  i386_optab + 2494,
+  i386_optab + 2468,
+  i386_optab + 2473,
+  i386_optab + 2478,
+  i386_optab + 2483,
+  i386_optab + 2486,
+  i386_optab + 2491,
+  i386_optab + 2496,
   i386_optab + 2497,
-  i386_optab + 2502,
+  i386_optab + 2498,
+  i386_optab + 2501,
+  i386_optab + 2504,
   i386_optab + 2507,
-  i386_optab + 2508,
-  i386_optab + 2509,
-  i386_optab + 2512,
+  i386_optab + 2510,
+  i386_optab + 2513,
   i386_optab + 2515,
-  i386_optab + 2518,
+  i386_optab + 2517,
+  i386_optab + 2519,
+  i386_optab + 2520,
   i386_optab + 2521,
+  i386_optab + 2522,
+  i386_optab + 2523,
   i386_optab + 2524,
-  i386_optab + 2526,
-  i386_optab + 2528,
-  i386_optab + 2530,
-  i386_optab + 2531,
-  i386_optab + 2532,
-  i386_optab + 2533,
+  i386_optab + 2529,
   i386_optab + 2534,
-  i386_optab + 2535,
+  i386_optab + 2536,
+  i386_optab + 2538,
   i386_optab + 2540,
-  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 + 2617,
-  i386_optab + 2619,
-  i386_optab + 2621,
-  i386_optab + 2623,
-  i386_optab + 2625,
-  i386_optab + 2627,
-  i386_optab + 2629,
-  i386_optab + 2631,
-  i386_optab + 2633,
-  i386_optab + 2635,
-  i386_optab + 2637,
-  i386_optab + 2639,
-  i386_optab + 2641,
-  i386_optab + 2643,
-  i386_optab + 2645,
-  i386_optab + 2647,
-  i386_optab + 2649,
-  i386_optab + 2651,
-  i386_optab + 2653,
+  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 + 2616,
+  i386_optab + 2618,
+  i386_optab + 2620,
+  i386_optab + 2622,
+  i386_optab + 2624,
+  i386_optab + 2626,
+  i386_optab + 2628,
+  i386_optab + 2630,
+  i386_optab + 2632,
+  i386_optab + 2634,
+  i386_optab + 2636,
+  i386_optab + 2638,
+  i386_optab + 2640,
+  i386_optab + 2642,
+  i386_optab + 2644,
+  i386_optab + 2646,
+  i386_optab + 2648,
+  i386_optab + 2650,
+  i386_optab + 2652,
+  i386_optab + 2654,
   i386_optab + 2655,
+  i386_optab + 2656,
   i386_optab + 2657,
+  i386_optab + 2658,
   i386_optab + 2659,
+  i386_optab + 2660,
   i386_optab + 2661,
+  i386_optab + 2662,
   i386_optab + 2663,
+  i386_optab + 2664,
   i386_optab + 2665,
   i386_optab + 2666,
   i386_optab + 2667,
@@ -61262,9 +61112,7 @@ static const insn_template *const i386_op_sets[] =
   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,
@@ -61273,7 +61121,9 @@ static const insn_template *const i386_op_sets[] =
   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,
@@ -61292,24 +61142,23 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2795,
   i386_optab + 2796,
   i386_optab + 2797,
-  i386_optab + 2798,
   i386_optab + 2799,
-  i386_optab + 2800,
   i386_optab + 2801,
-  i386_optab + 2802,
   i386_optab + 2803,
-  i386_optab + 2804,
   i386_optab + 2805,
   i386_optab + 2806,
   i386_optab + 2807,
   i386_optab + 2808,
+  i386_optab + 2809,
   i386_optab + 2810,
+  i386_optab + 2811,
   i386_optab + 2812,
+  i386_optab + 2813,
   i386_optab + 2814,
+  i386_optab + 2815,
   i386_optab + 2816,
   i386_optab + 2817,
   i386_optab + 2818,
-  i386_optab + 2819,
   i386_optab + 2820,
   i386_optab + 2821,
   i386_optab + 2822,
@@ -61320,6 +61169,7 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2827,
   i386_optab + 2828,
   i386_optab + 2829,
+  i386_optab + 2830,
   i386_optab + 2831,
   i386_optab + 2832,
   i386_optab + 2833,
@@ -61355,28 +61205,28 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2863,
   i386_optab + 2864,
   i386_optab + 2865,
-  i386_optab + 2866,
   i386_optab + 2867,
-  i386_optab + 2868,
   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 + 2878,
+  i386_optab + 2879,
   i386_optab + 2880,
-  i386_optab + 2881,
   i386_optab + 2882,
   i386_optab + 2884,
   i386_optab + 2885,
+  i386_optab + 2886,
   i386_optab + 2887,
+  i386_optab + 2888,
   i386_optab + 2889,
   i386_optab + 2890,
   i386_optab + 2891,
+  i386_optab + 2892,
   i386_optab + 2893,
+  i386_optab + 2894,
   i386_optab + 2895,
   i386_optab + 2896,
   i386_optab + 2897,
@@ -61393,19 +61243,18 @@ static const insn_template *const i386_op_sets[] =
   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 + 2923,
+  i386_optab + 2922,
+  i386_optab + 2924,
   i386_optab + 2925,
+  i386_optab + 2926,
   i386_optab + 2927,
   i386_optab + 2928,
   i386_optab + 2929,
@@ -61413,20 +61262,21 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2931,
   i386_optab + 2932,
   i386_optab + 2933,
+  i386_optab + 2934,
   i386_optab + 2935,
   i386_optab + 2936,
-  i386_optab + 2937,
-  i386_optab + 2938,
   i386_optab + 2939,
-  i386_optab + 2940,
-  i386_optab + 2941,
   i386_optab + 2942,
   i386_optab + 2943,
   i386_optab + 2944,
   i386_optab + 2945,
   i386_optab + 2946,
   i386_optab + 2947,
+  i386_optab + 2948,
+  i386_optab + 2949,
   i386_optab + 2950,
+  i386_optab + 2951,
+  i386_optab + 2952,
   i386_optab + 2953,
   i386_optab + 2954,
   i386_optab + 2955,
@@ -61471,35 +61321,35 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2994,
   i386_optab + 2995,
   i386_optab + 2996,
-  i386_optab + 2997,
-  i386_optab + 2998,
   i386_optab + 2999,
-  i386_optab + 3000,
   i386_optab + 3001,
-  i386_optab + 3002,
-  i386_optab + 3003,
   i386_optab + 3004,
-  i386_optab + 3005,
-  i386_optab + 3006,
   i386_optab + 3007,
-  i386_optab + 3010,
+  i386_optab + 3009,
   i386_optab + 3012,
   i386_optab + 3015,
   i386_optab + 3018,
-  i386_optab + 3020,
-  i386_optab + 3023,
+  i386_optab + 3021,
+  i386_optab + 3022,
+  i386_optab + 3025,
   i386_optab + 3026,
+  i386_optab + 3027,
+  i386_optab + 3028,
   i386_optab + 3029,
-  i386_optab + 3032,
-  i386_optab + 3033,
+  i386_optab + 3030,
+  i386_optab + 3034,
   i386_optab + 3036,
-  i386_optab + 3037,
-  i386_optab + 3038,
   i386_optab + 3039,
   i386_optab + 3040,
   i386_optab + 3041,
+  i386_optab + 3042,
+  i386_optab + 3043,
+  i386_optab + 3044,
   i386_optab + 3045,
+  i386_optab + 3046,
   i386_optab + 3047,
+  i386_optab + 3048,
+  i386_optab + 3049,
   i386_optab + 3050,
   i386_optab + 3051,
   i386_optab + 3052,
@@ -61575,7 +61425,6 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3122,
   i386_optab + 3123,
   i386_optab + 3124,
-  i386_optab + 3125,
   i386_optab + 3126,
   i386_optab + 3127,
   i386_optab + 3128,
@@ -61586,6 +61435,7 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3133,
   i386_optab + 3134,
   i386_optab + 3135,
+  i386_optab + 3136,
   i386_optab + 3137,
   i386_optab + 3138,
   i386_optab + 3139,
@@ -61615,36 +61465,36 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3163,
   i386_optab + 3164,
   i386_optab + 3165,
-  i386_optab + 3166,
-  i386_optab + 3167,
   i386_optab + 3168,
-  i386_optab + 3169,
-  i386_optab + 3170,
   i386_optab + 3171,
-  i386_optab + 3172,
-  i386_optab + 3173,
   i386_optab + 3174,
-  i386_optab + 3175,
-  i386_optab + 3176,
-  i386_optab + 3179,
-  i386_optab + 3182,
-  i386_optab + 3185,
-  i386_optab + 3188,
-  i386_optab + 3191,
-  i386_optab + 3194,
-  i386_optab + 3197,
-  i386_optab + 3200,
-  i386_optab + 3203,
-  i386_optab + 3206,
-  i386_optab + 3209,
+  i386_optab + 3177,
+  i386_optab + 3180,
+  i386_optab + 3183,
+  i386_optab + 3186,
+  i386_optab + 3189,
+  i386_optab + 3192,
+  i386_optab + 3195,
+  i386_optab + 3198,
+  i386_optab + 3201,
+  i386_optab + 3204,
+  i386_optab + 3207,
+  i386_optab + 3210,
+  i386_optab + 3211,
   i386_optab + 3212,
-  i386_optab + 3215,
+  i386_optab + 3213,
+  i386_optab + 3214,
+  i386_optab + 3216,
+  i386_optab + 3217,
   i386_optab + 3218,
+  i386_optab + 3219,
+  i386_optab + 3220,
   i386_optab + 3221,
   i386_optab + 3222,
   i386_optab + 3223,
   i386_optab + 3224,
   i386_optab + 3225,
+  i386_optab + 3226,
   i386_optab + 3227,
   i386_optab + 3228,
   i386_optab + 3229,
@@ -61696,18 +61546,18 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3275,
   i386_optab + 3276,
   i386_optab + 3277,
-  i386_optab + 3278,
-  i386_optab + 3279,
   i386_optab + 3280,
-  i386_optab + 3281,
-  i386_optab + 3282,
   i386_optab + 3283,
   i386_optab + 3284,
   i386_optab + 3285,
   i386_optab + 3286,
   i386_optab + 3287,
   i386_optab + 3288,
+  i386_optab + 3289,
+  i386_optab + 3290,
   i386_optab + 3291,
+  i386_optab + 3292,
+  i386_optab + 3293,
   i386_optab + 3294,
   i386_optab + 3295,
   i386_optab + 3296,
@@ -61760,50 +61610,48 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3343,
   i386_optab + 3344,
   i386_optab + 3345,
-  i386_optab + 3346,
-  i386_optab + 3347,
   i386_optab + 3348,
-  i386_optab + 3349,
-  i386_optab + 3350,
   i386_optab + 3351,
-  i386_optab + 3352,
-  i386_optab + 3353,
   i386_optab + 3354,
   i386_optab + 3355,
   i386_optab + 3356,
+  i386_optab + 3357,
+  i386_optab + 3358,
   i386_optab + 3359,
+  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 + 3387,
+  i386_optab + 3385,
   i386_optab + 3388,
-  i386_optab + 3389,
-  i386_optab + 3392,
-  i386_optab + 3393,
+  i386_optab + 3391,
   i386_optab + 3394,
   i386_optab + 3395,
   i386_optab + 3396,
+  i386_optab + 3397,
+  i386_optab + 3398,
   i386_optab + 3399,
+  i386_optab + 3400,
+  i386_optab + 3401,
   i386_optab + 3402,
-  i386_optab + 3405,
+  i386_optab + 3403,
+  i386_optab + 3404,
   i386_optab + 3406,
-  i386_optab + 3407,
   i386_optab + 3408,
   i386_optab + 3409,
   i386_optab + 3410,
@@ -61812,7 +61660,9 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3413,
   i386_optab + 3414,
   i386_optab + 3415,
+  i386_optab + 3416,
   i386_optab + 3417,
+  i386_optab + 3418,
   i386_optab + 3419,
   i386_optab + 3420,
   i386_optab + 3421,
@@ -61828,9 +61678,7 @@ static const insn_template *const i386_op_sets[] =
   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,
@@ -61839,7 +61687,9 @@ static const insn_template *const i386_op_sets[] =
   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,
@@ -61855,38 +61705,38 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3460,
   i386_optab + 3461,
   i386_optab + 3462,
-  i386_optab + 3463,
   i386_optab + 3464,
-  i386_optab + 3465,
   i386_optab + 3466,
-  i386_optab + 3467,
   i386_optab + 3468,
-  i386_optab + 3469,
   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 + 3481,
   i386_optab + 3482,
-  i386_optab + 3483,
   i386_optab + 3484,
-  i386_optab + 3485,
-  i386_optab + 3486,
   i386_optab + 3487,
-  i386_optab + 3488,
   i386_optab + 3489,
   i386_optab + 3490,
-  i386_optab + 3492,
+  i386_optab + 3491,
   i386_optab + 3493,
   i386_optab + 3495,
+  i386_optab + 3496,
+  i386_optab + 3497,
   i386_optab + 3498,
+  i386_optab + 3499,
   i386_optab + 3500,
   i386_optab + 3501,
   i386_optab + 3502,
+  i386_optab + 3503,
   i386_optab + 3504,
+  i386_optab + 3505,
   i386_optab + 3506,
   i386_optab + 3507,
   i386_optab + 3508,
@@ -61895,42 +61745,42 @@ static const insn_template *const i386_op_sets[] =
   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 + 3526,
   i386_optab + 3528,
-  i386_optab + 3529,
   i386_optab + 3530,
   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,
-  i386_optab + 3543,
   i386_optab + 3544,
-  i386_optab + 3545,
-  i386_optab + 3546,
   i386_optab + 3547,
-  i386_optab + 3548,
-  i386_optab + 3549,
   i386_optab + 3550,
-  i386_optab + 3551,
-  i386_optab + 3552,
   i386_optab + 3553,
   i386_optab + 3555,
+  i386_optab + 3556,
+  i386_optab + 3557,
   i386_optab + 3558,
+  i386_optab + 3559,
+  i386_optab + 3560,
   i386_optab + 3561,
+  i386_optab + 3562,
+  i386_optab + 3563,
   i386_optab + 3564,
+  i386_optab + 3565,
   i386_optab + 3566,
   i386_optab + 3567,
   i386_optab + 3568,
@@ -62061,66 +61911,66 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3693,
   i386_optab + 3694,
   i386_optab + 3695,
-  i386_optab + 3696,
-  i386_optab + 3697,
   i386_optab + 3698,
   i386_optab + 3699,
   i386_optab + 3700,
-  i386_optab + 3701,
-  i386_optab + 3702,
   i386_optab + 3703,
   i386_optab + 3704,
   i386_optab + 3705,
-  i386_optab + 3706,
+  i386_optab + 3707,
+  i386_optab + 3708,
   i386_optab + 3709,
   i386_optab + 3710,
-  i386_optab + 3711,
+  i386_optab + 3712,
+  i386_optab + 3713,
   i386_optab + 3714,
   i386_optab + 3715,
-  i386_optab + 3716,
+  i386_optab + 3717,
   i386_optab + 3718,
   i386_optab + 3719,
   i386_optab + 3720,
-  i386_optab + 3721,
   i386_optab + 3723,
   i386_optab + 3724,
   i386_optab + 3725,
   i386_optab + 3726,
-  i386_optab + 3728,
-  i386_optab + 3729,
+  i386_optab + 3727,
   i386_optab + 3730,
-  i386_optab + 3731,
-  i386_optab + 3734,
-  i386_optab + 3735,
+  i386_optab + 3733,
   i386_optab + 3736,
-  i386_optab + 3737,
-  i386_optab + 3738,
-  i386_optab + 3741,
+  i386_optab + 3739,
+  i386_optab + 3742,
+  i386_optab + 3743,
   i386_optab + 3744,
-  i386_optab + 3747,
+  i386_optab + 3745,
+  i386_optab + 3746,
+  i386_optab + 3748,
   i386_optab + 3750,
+  i386_optab + 3751,
+  i386_optab + 3752,
   i386_optab + 3753,
-  i386_optab + 3754,
-  i386_optab + 3755,
   i386_optab + 3756,
-  i386_optab + 3757,
   i386_optab + 3759,
-  i386_optab + 3761,
   i386_optab + 3762,
-  i386_optab + 3763,
-  i386_optab + 3764,
-  i386_optab + 3767,
+  i386_optab + 3765,
+  i386_optab + 3768,
+  i386_optab + 3769,
   i386_optab + 3770,
+  i386_optab + 3771,
   i386_optab + 3773,
+  i386_optab + 3774,
+  i386_optab + 3775,
   i386_optab + 3776,
+  i386_optab + 3778,
   i386_optab + 3779,
   i386_optab + 3780,
   i386_optab + 3781,
   i386_optab + 3782,
+  i386_optab + 3783,
   i386_optab + 3784,
   i386_optab + 3785,
   i386_optab + 3786,
   i386_optab + 3787,
+  i386_optab + 3788,
   i386_optab + 3789,
   i386_optab + 3790,
   i386_optab + 3791,
@@ -62154,17 +62004,6 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3819,
   i386_optab + 3820,
   i386_optab + 3821,
-  i386_optab + 3822,
-  i386_optab + 3823,
-  i386_optab + 3824,
-  i386_optab + 3825,
-  i386_optab + 3826,
-  i386_optab + 3827,
-  i386_optab + 3828,
-  i386_optab + 3829,
-  i386_optab + 3830,
-  i386_optab + 3831,
-  i386_optab + 3832,
 };
 
 /* i386 register table.  */