public inbox for binutils-cvs@sourceware.org
 help / color / mirror / Atom feed
* [binutils-gdb] x86: re-work insn/suffix recognition
@ 2022-12-12 12:54 Jan Beulich
  0 siblings, 0 replies; only message in thread
From: Jan Beulich @ 2022-12-12 12:54 UTC (permalink / raw)
  To: bfd-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=04784e33fabb45c4de7a901587f468d4bc169649

commit 04784e33fabb45c4de7a901587f468d4bc169649
Author: Jan Beulich <jbeulich@suse.com>
Date:   Mon Dec 12 13:51:46 2022 +0100

    x86: re-work insn/suffix recognition
    
    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.

Diff:
---
 gas/config/tc-i386-intel.c       |   11 +-
 gas/config/tc-i386.c             |  317 ++---
 gas/testsuite/gas/i386/code16.d  |    1 +
 gas/testsuite/gas/i386/code16.e  |    3 +
 gas/testsuite/gas/i386/code16.s  |    4 +-
 gas/testsuite/gas/i386/intel16.d |   10 +-
 gas/testsuite/gas/i386/intel16.s |   12 +-
 opcodes/i386-opc.tbl             |   19 +-
 opcodes/i386-tbl.h               | 2389 ++++++++++++++++++--------------------
 9 files changed, 1313 insertions(+), 1453 deletions(-)

diff --git a/gas/config/tc-i386-intel.c b/gas/config/tc-i386-intel.c
index 54b124be9c6..ca18f5eaf61 100644
--- a/gas/config/tc-i386-intel.c
+++ b/gas/config/tc-i386-intel.c
@@ -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
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index e4c4198ae0d..870e2d1597c 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -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
diff --git a/gas/testsuite/gas/i386/code16.d b/gas/testsuite/gas/i386/code16.d
index 246be486ba8..1b5a6ddedbf 100644
--- a/gas/testsuite/gas/i386/code16.d
+++ b/gas/testsuite/gas/i386/code16.d
@@ -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
index 00000000000..7c68875700c
--- /dev/null
+++ b/gas/testsuite/gas/i386/code16.e
@@ -0,0 +1,3 @@
+.*: Assembler messages:
+.*:3: Warning: .* `movsd'.*`movsl'.*
+.*:4: Warning: .* `cmpsd'.*`cmpsl'.*
diff --git a/gas/testsuite/gas/i386/code16.s b/gas/testsuite/gas/i386/code16.s
index 407bb45f9fe..c5774e852ec 100644
--- a/gas/testsuite/gas/i386/code16.s
+++ b/gas/testsuite/gas/i386/code16.s
@@ -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
diff --git a/gas/testsuite/gas/i386/intel16.d b/gas/testsuite/gas/i386/intel16.d
index 45bb2030db8..4adc41f27d1 100644
--- a/gas/testsuite/gas/i386/intel16.d
+++ b/gas/testsuite/gas/i386/intel16.d
@@ -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
diff --git a/gas/testsuite/gas/i386/intel16.s b/gas/testsuite/gas/i386/intel16.s
index 14a97924795..4314e8ddeb5 100644
--- a/gas/testsuite/gas/i386/intel16.s
+++ b/gas/testsuite/gas/i386/intel16.s
@@ -18,4 +18,14 @@
  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
diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl
index 8c13f85708b..a6e820a5046 100644
--- a/opcodes/i386-opc.tbl
+++ b/opcodes/i386-opc.tbl
@@ -145,34 +145,27 @@
 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> }
diff --git a/opcodes/i386-tbl.h b/opcodes/i386-tbl.h
index b27e6236c90..c4200ba6a98 100644
--- a/opcodes/i386-tbl.h
+++ b/opcodes/i386-tbl.h
@@ -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,
[...]

[diff truncated at 100000 bytes]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-12-12 12:54 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-12 12:54 [binutils-gdb] x86: re-work insn/suffix recognition Jan Beulich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).