diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 48916bc3846..381e389bb04 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -2261,8 +2261,9 @@ operand_size_match (const insn_template *t)
       unsigned int given = i.operands - j - 1;
 
       /* For FMA4 and XOP insns VEX.W controls just the first two
-	 register operands.  */
-      if (is_cpu (t, CpuFMA4) || is_cpu (t, CpuXOP))
+	 register operands. And APX insns just swap the first operands.  */
+      if (is_cpu (t, CpuFMA4) || is_cpu (t, CpuXOP)
+	  || (is_cpu (t,CpuAPX_F) && i.operands == 3))
 	given = j < 2 ? 1 - j : j;
 
       if (t->operand_types[j].bitfield.class == Reg
@@ -3876,6 +3877,7 @@ is_any_apx_encoding (void)
 {
   return i.rex2 
     || i.rex2_encoding
+    || i.tm.opcode_space == SPACE_EVEXMAP4
     || (i.vex.register_specifier
 	&& i.vex.register_specifier->reg_flags & RegRex2);
 }
@@ -4204,6 +4206,10 @@ build_legacy_insns_with_apx_encoding (void)
     }
 
   build_evex_insns_with_extend_evex_prefix ();
+
+  /* Encode the NDD bit.  */
+  if (i.vex.register_specifier)
+    i.vex.bytes[3] |= 0x10;
 }
 
 static void
@@ -7383,26 +7389,31 @@ match_template (char mnem_suffix)
 	  overlap1 = operand_type_and (operand_types[0], operand_types[1]);
 	  if (t->opcode_modifier.d && i.reg_operands == i.operands
 	      && !operand_type_all_zero (&overlap1))
-	    switch (i.dir_encoding)
-	      {
-	      case dir_encoding_load:
-		if (operand_type_check (operand_types[i.operands - 1], anymem)
-		    || t->opcode_modifier.regmem)
-		  goto check_reverse;
-		break;
+	    {
+	      int isMemOperand = (t->opcode_modifier.vexvvvv
+				  && t->opcode_space == SPACE_EVEXMAP4)
+				  ? i.operands - 2 : i.operands - 1;
+	      switch (i.dir_encoding)
+		{
+		case dir_encoding_load:
+		  if (operand_type_check (operand_types[isMemOperand], anymem)
+		      || t->opcode_modifier.regmem)
+		    goto check_reverse;
+		  break;
 
-	      case dir_encoding_store:
-		if (!operand_type_check (operand_types[i.operands - 1], anymem)
-		    && !t->opcode_modifier.regmem)
-		  goto check_reverse;
-		break;
+		case dir_encoding_store:
+		  if (!operand_type_check (operand_types[isMemOperand], anymem)
+		      && !t->opcode_modifier.regmem)
+		    goto check_reverse;
+		  break;
 
-	      case dir_encoding_swap:
-		goto check_reverse;
+		case dir_encoding_swap:
+		  goto check_reverse;
 
-	      case dir_encoding_default:
-		break;
-	      }
+		case dir_encoding_default:
+		  break;
+		}
+	    }
 	  /* If we want store form, we skip the current load.  */
 	  if ((i.dir_encoding == dir_encoding_store
 	       || i.dir_encoding == dir_encoding_swap)
@@ -7432,11 +7443,13 @@ match_template (char mnem_suffix)
 		continue;
 	      /* Try reversing direction of operands.  */
 	      j = is_cpu (t, CpuFMA4)
-		  || is_cpu (t, CpuXOP) ? 1 : i.operands - 1;
+		  || is_cpu (t, CpuXOP)
+		  || is_cpu (t, CpuAPX_F) ? 1 : i.operands - 1;
 	      overlap0 = operand_type_and (i.types[0], operand_types[j]);
 	      overlap1 = operand_type_and (i.types[j], operand_types[0]);
 	      overlap2 = operand_type_and (i.types[1], operand_types[1]);
-	      gas_assert (t->operands != 3 || !check_register);
+	      gas_assert (t->operands != 3 || !check_register
+			  || is_cpu (t,CpuAPX_F));
 	      if (!operand_type_match (overlap0, i.types[0])
 		  || !operand_type_match (overlap1, i.types[j])
 		  || (t->operands == 3
@@ -7471,6 +7484,12 @@ match_template (char mnem_suffix)
 		  found_reverse_match = Opcode_VexW;
 		  goto check_operands_345;
 		}
+	      else if (is_cpu (t,CpuAPX_F)
+		       && i.operands == 3)
+		{
+		  found_reverse_match = Opcode_APX_NDDD;
+		  goto check_operands_345;
+		}
 	      else if (t->opcode_space != SPACE_BASE
 		       && (t->opcode_space != SPACE_0F
 			   /* MOV to/from CR/DR/TR, as an exception, follow
@@ -7636,6 +7655,15 @@ match_template (char mnem_suffix)
 	 flipping VEX.W.  */
       i.tm.opcode_modifier.vexw ^= VEXW0 ^ VEXW1;
 
+      j = i.tm.operand_types[0].bitfield.imm8;
+      i.tm.operand_types[j] = operand_types[j + 1];
+      i.tm.operand_types[j + 1] = operand_types[j];
+      break;
+
+    case Opcode_APX_NDDD:
+      /* Only the first two register operands need reversing.  */
+      i.tm.base_opcode ^= 0x2;
+
       j = i.tm.operand_types[0].bitfield.imm8;
       i.tm.operand_types[j] = operand_types[j + 1];
       i.tm.operand_types[j + 1] = operand_types[j];
@@ -8462,8 +8490,8 @@ process_operands (void)
   const reg_entry *default_seg = NULL;
 
   /* We only need to check those implicit registers for instructions
-     with 3 operands or less.  */
-  if (i.operands <= 3)
+     with 4 operands or less.  */
+  if (i.operands <= 4)
     for (unsigned int j = 0; j < i.operands; j++)
       if (i.types[j].bitfield.instance != InstanceNone)
 	i.reg_operands--;
@@ -8825,6 +8853,9 @@ build_modrm_byte (void)
       break;
   if (v >= dest)
     v = ~0;
+  if (i.tm.opcode_space == SPACE_EVEXMAP4
+      && i.tm.opcode_modifier.vexvvvv)
+    v = dest;
   if (i.tm.extension_opcode != None)
     {
       if (dest != source)
@@ -9088,6 +9119,9 @@ build_modrm_byte (void)
       set_rex_vrex (i.op[op].regs, REX_B, false);
 	}
 
+      if (i.tm.opcode_space == SPACE_EVEXMAP4
+	  && i.tm.opcode_modifier.vexvvvv)
+	dest--;
       if (op == dest)
 	dest = ~0;
       if (op == source)
diff --git a/gas/testsuite/gas/i386/x86-64-apx-ndd.d b/gas/testsuite/gas/i386/x86-64-apx-ndd.d
new file mode 100644
index 00000000000..debb99f2ff9
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-apx-ndd.d
@@ -0,0 +1,165 @@
+#as:
+#objdump: -dw
+#name: x86-64 APX NDD instructions with evex prefix encoding
+#source: x86-64-apx-ndd.s
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+\s*[a-f0-9]+:\s*62 f4 e4 18 ff c0\s+inc    %rax,%rbx
+\s*[a-f0-9]+:\s*62 dc bc 18 ff c7\s+inc    %r31,%r8
+\s*[a-f0-9]+:\s*62 dc fc 10 ff c7\s+inc    %r31,%r16
+\s*[a-f0-9]+:\s*62 44 7c 10 00 f8\s+add    %r31b,%r8b,%r16b
+\s*[a-f0-9]+:\s*62 44 7c 10 00 f8\s+add    %r31b,%r8b,%r16b
+\s*[a-f0-9]+:\s*62 44 fc 10 01 f8\s+add    %r31,%r8,%r16
+\s*[a-f0-9]+:\s*62 44 fc 10 01 f8\s+add    %r31,%r8,%r16
+\s*[a-f0-9]+:\s*62 44 7c 10 01 f8\s+add    %r31d,%r8d,%r16d
+\s*[a-f0-9]+:\s*62 44 7c 10 01 f8\s+add    %r31d,%r8d,%r16d
+\s*[a-f0-9]+:\s*62 44 7d 10 01 f8\s+add    %r31w,%r8w,%r16w
+\s*[a-f0-9]+:\s*62 44 7d 10 01 f8\s+add    %r31w,%r8w,%r16w
+\s*[a-f0-9]+:\s*62 44 fc 10 01 f8\s+add    %r31,%r8,%r16
+\s*[a-f0-9]+:\s*62 5c fc 10 03 c7\s+add    %r31,%r8,%r16
+\s*[a-f0-9]+:\s*62 44 fc 10 01 38\s+add    %r31,\(%r8\),%r16
+\s*[a-f0-9]+:\s*62 5c fc 10 03 07\s+add    \(%r31\),%r8,%r16
+\s*[a-f0-9]+:\s*62 5c f8 10 03 84 07 90 90 00 00\s+add\s+0x9090\(%r31,%r16,1\),%r8,%r16
+\s*[a-f0-9]+:\s*62 44 f8 10 01 3c c0\s+add    %r31,\(%r8,%r16,8\),%r16
+\s*[a-f0-9]+:\s*62 d4 74 10 80 c5 34\s+add    \$0x34,%r13b,%r17b
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 04 83 11\s+addl   \$0x11,\(%r19,%rax,4\),%r20d
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 c0 34 12\s+add    \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 d4 fc 10 81 c7 33 44 34 12\s+add    \$0x12344433,%r15,%r16
+\s*[a-f0-9]+:\s*62 d4 fc 10 81 04 8f 33 44 34 12\s+addq   \$0x12344433,\(%r15,%rcx,4\),%r16
+\s*[a-f0-9]+:\s*62 f4 bc 18 81 c0 11 22 33 f4\s+add    \$0xfffffffff4332211,%rax,%r8
+\s*[a-f0-9]+:\s*62 f4 f4 10 ff c8    	dec    %rax,%r17
+\s*[a-f0-9]+:\s*62 9c 3c 18 fe 0c 27 	decb   \(%r31,%r12,1\),%r8b
+\s*[a-f0-9]+:\s*62 f4 f4 10 f7 d0    	not    %rax,%r17
+\s*[a-f0-9]+:\s*62 9c 3c 18 f6 14 27 	notb   \(%r31,%r12,1\),%r8b
+\s*[a-f0-9]+:\s*62 f4 f4 10 f7 d8    	neg    %rax,%r17
+\s*[a-f0-9]+:\s*62 9c 3c 18 f6 1c 27 	negb   \(%r31,%r12,1\),%r8b
+\s*[a-f0-9]+:\s*62 7c 6c 10 28 f9    	sub    %r15b,%r17b,%r18b
+\s*[a-f0-9]+:\s*62 54 6c 10 29 38    	sub    %r15d,\(%r8\),%r18d
+\s*[a-f0-9]+:\s*62 c4 3c 18 2a 04 07 	sub    \(%r15,%rax,1\),%r16b,%r8b
+\s*[a-f0-9]+:\s*62 c4 3d 18 2b 04 07 	sub    \(%r15,%rax,1\),%r16w,%r8w
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 2c 83 11 	subl   \$0x11,\(%r19,%rax,4\),%r20d
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 e8 34 12 	sub    \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 7c 6c 10 18 f9    	sbb    %r15b,%r17b,%r18b
+\s*[a-f0-9]+:\s*62 54 6c 10 19 38    	sbb    %r15d,\(%r8\),%r18d
+\s*[a-f0-9]+:\s*62 c4 3c 18 1a 04 07 	sbb    \(%r15,%rax,1\),%r16b,%r8b
+\s*[a-f0-9]+:\s*62 c4 3d 18 1b 04 07 	sbb    \(%r15,%rax,1\),%r16w,%r8w
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 1c 83 11 	sbbl   \$0x11,\(%r19,%rax,4\),%r20d
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 d8 34 12 	sbb    \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 7c 6c 10 10 f9    	adc    %r15b,%r17b,%r18b
+\s*[a-f0-9]+:\s*62 54 6c 10 11 38    	adc    %r15d,\(%r8\),%r18d
+\s*[a-f0-9]+:\s*62 c4 3c 18 12 04 07 	adc    \(%r15,%rax,1\),%r16b,%r8b
+\s*[a-f0-9]+:\s*62 c4 3d 18 13 04 07 	adc    \(%r15,%rax,1\),%r16w,%r8w
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 14 83 11 	adcl   \$0x11,\(%r19,%rax,4\),%r20d
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 d0 34 12 	adc    \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 7c 6c 10 08 f9    	or     %r15b,%r17b,%r18b
+\s*[a-f0-9]+:\s*62 54 6c 10 09 38    	or     %r15d,\(%r8\),%r18d
+\s*[a-f0-9]+:\s*62 c4 3c 18 0a 04 07 	or     \(%r15,%rax,1\),%r16b,%r8b
+\s*[a-f0-9]+:\s*62 c4 3d 18 0b 04 07 	or     \(%r15,%rax,1\),%r16w,%r8w
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 0c 83 11 	orl    \$0x11,\(%r19,%rax,4\),%r20d
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 c8 34 12 	or     \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 7c 6c 10 30 f9    	xor    %r15b,%r17b,%r18b
+\s*[a-f0-9]+:\s*62 54 6c 10 31 38    	xor    %r15d,\(%r8\),%r18d
+\s*[a-f0-9]+:\s*62 c4 3c 18 32 04 07 	xor    \(%r15,%rax,1\),%r16b,%r8b
+\s*[a-f0-9]+:\s*62 c4 3d 18 33 04 07 	xor    \(%r15,%rax,1\),%r16w,%r8w
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 34 83 11 	xorl   \$0x11,\(%r19,%rax,4\),%r20d
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 f0 34 12 	xor    \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 7c 6c 10 20 f9    	and    %r15b,%r17b,%r18b
+\s*[a-f0-9]+:\s*62 54 6c 10 21 38    	and    %r15d,\(%r8\),%r18d
+\s*[a-f0-9]+:\s*62 c4 3c 18 22 04 07 	and    \(%r15,%rax,1\),%r16b,%r8b
+\s*[a-f0-9]+:\s*62 c4 3d 18 23 04 07 	and    \(%r15,%rax,1\),%r16w,%r8w
+\s*[a-f0-9]+:\s*62 fc 5c 10 83 24 83 11 	andl   \$0x11,\(%r19,%rax,4\),%r20d
+\s*[a-f0-9]+:\s*62 f4 0d 10 81 e0 34 12 	and    \$0x1234,%ax,%r30w
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 08    	rorb   \(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 cc 02 	ror    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 08 02 	rorl   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 08    	rorw   \(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 c8    	ror    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 0c 83 	rorw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 00    	rolb   \(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 c4 02 	rol    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 00 02 	roll   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 00    	rolw   \(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 c0    	rol    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 04 83 	rolw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 18    	rcrb   \(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 dc 02 	rcr    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 18 02 	rcrl   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 18    	rcrw   \(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 d8    	rcr    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 1c 83 	rcrw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 10    	rclb   \(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 d4 02 	rcl    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 10 02 	rcll   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 10    	rclw   \(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 d0    	rcl    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 14 83 	rclw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 20    	shlb   \(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 e4 02 	shl    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 20 02 	shll   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 20    	shlw   \(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 e0    	shl    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 24 83 	shlw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 38    	sarb   \(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 fc 02 	sar    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 38 02 	sarl   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 38    	sarw   \(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 f8    	sar    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 3c 83 	sarw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 20    	shlb   \(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 e4 02 	shl    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 20 02 	shll   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 20    	shlw   \(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 e0    	shl    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 24 83 	shlw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 f4 04 10 d0 28    	shrb   \(%rax\),%r31b
+\s*[a-f0-9]+:\s*62 d4 04 10 c0 ec 02 	shr    \$0x2,%r12b,%r31b
+\s*[a-f0-9]+:\s*62 f4 04 10 c1 28 02 	shrl   \$0x2,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 f4 05 10 d1 28    	shrw   \(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 fc 3c 18 d2 e8    	shr    %cl,%r16b,%r8b
+\s*[a-f0-9]+:\s*62 fc 05 10 d3 2c 83 	shrw   %cl,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 74 84 10 24 20 01 	shld   \$0x1,%r12,\(%rax\),%r31
+\s*[a-f0-9]+:\s*62 54 05 10 24 c4 02 	shld   \$0x2,%r8w,%r12w,%r31w
+\s*[a-f0-9]+:\s*62 74 04 10 24 38 02 	shld   \$0x2,%r15d,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 74 05 10 a5 08    	shld   %cl,%r9w,\(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 7c bc 18 a5 e0\s+shld   %cl,%r12,%r16,%r8
+\s*[a-f0-9]+:\s*62 7c 05 10 a5 2c 83\s+shld   %cl,%r13w,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 74 84 10 2c 20 01 	shrd   \$0x1,%r12,\(%rax\),%r31
+\s*[a-f0-9]+:\s*62 54 05 10 2c c4 02 	shrd   \$0x2,%r8w,%r12w,%r31w
+\s*[a-f0-9]+:\s*62 74 04 10 2c 38 02 	shrd   \$0x2,%r15d,\(%rax\),%r31d
+\s*[a-f0-9]+:\s*62 74 05 10 ad 08\s+shrd   %cl,%r9w,\(%rax\),%r31w
+\s*[a-f0-9]+:\s*62 7c bc 18 ad e0\s+shrd   %cl,%r12,%r16,%r8
+\s*[a-f0-9]+:\s*62 7c 05 10 ad 2c 83\s+shrd   %cl,%r13w,\(%r19,%rax,4\),%r31w
+\s*[a-f0-9]+:\s*62 54 6d 10 66 c7    	adcx   %r15d,%r8d,%r18d
+\s*[a-f0-9]+:\s*62 14 69 10 66 04 3f 	adcx   \(%r15,%r31,1\),%r8d,%r18d
+\s*[a-f0-9]+:\s*62 14 f9 08 66 04 3f 	adcx   \(%r15,%r31,1\),%r8
+\s*[a-f0-9]+:\s*62 54 6e 10 66 c7    	adox   %r15d,%r8d,%r18d
+\s*[a-f0-9]+:\s*62 14 6a 10 66 04 3f 	adox   \(%r15,%r31,1\),%r8d,%r18d
+\s*[a-f0-9]+:\s*62 14 fa 08 66 04 3f 	adox   \(%r15,%r31,1\),%r8
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 40 90 90 90 90 90 	cmovo  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 41 90 90 90 90 90 	cmovno -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 42 90 90 90 90 90 	cmovb  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 43 90 90 90 90 90 	cmovae -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 44 90 90 90 90 90 	cmove  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 45 90 90 90 90 90 	cmovne -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 46 90 90 90 90 90 	cmovbe -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 47 90 90 90 90 90 	cmova  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 48 90 90 90 90 90 	cmovs  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 49 90 90 90 90 90 	cmovns -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 4a 90 90 90 90 90 	cmovp  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 4b 90 90 90 90 90 	cmovnp -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 4c 90 90 90 90 90 	cmovl  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 4d 90 90 90 90 90 	cmovge -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 4e 90 90 90 90 90 	cmovle -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 4f 90 90 90 90 90 	cmovg  -0x6f6f6f70\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*67 62 f4 3c 18 af 90 09 09 09 00 	imul   0x90909\(%eax\),%edx,%r8d
+\s*[a-f0-9]+:\s*62 b4 b0 10 af 94 f8 09 09 00 00 	imul   0x909\(%rax,%r31,8\),%rdx,%r25
+\s*[a-f0-9]+:\s*62 f4 fc 08 ff c0\s+inc    %rax
+\s*[a-f0-9]+:\s*62 f4 ec\s+\(bad\)
+\s*[a-f0-9]+:\s*08 ff\s+or     %bh,%bh
+\s*[a-f0-9]+:\s*c0\s+\.byte 0xc0
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-apx-ndd.s b/gas/testsuite/gas/i386/x86-64-apx-ndd.s
new file mode 100644
index 00000000000..8c86989ffe5
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-apx-ndd.s
@@ -0,0 +1,156 @@
+# Check 64bit APX NDD instructions with evex prefix encoding
+
+	.allow_index_reg
+	.text
+_start:
+inc    %rax,%rbx
+inc    %r31,%r8
+inc    %r31,%r16
+add    %r31b,%r8b,%r16b
+addb    %r31b,%r8b,%r16b
+add    %r31,%r8,%r16
+addq    %r31,%r8,%r16
+add    %r31d,%r8d,%r16d
+addl    %r31d,%r8d,%r16d
+add    %r31w,%r8w,%r16w
+addw    %r31w,%r8w,%r16w
+{store} add    %r31,%r8,%r16
+{load}  add    %r31,%r8,%r16
+add    %r31,(%r8),%r16
+add    (%r31),%r8,%r16
+add    0x9090(%r31,%r16,1),%r8,%r16
+add    %r31,(%r8,%r16,8),%r16
+add    $0x34,%r13b,%r17b
+addl   $0x11,(%r19,%rax,4),%r20d
+add    $0x1234,%ax,%r30w
+add    $0x12344433,%r15,%r16
+addq   $0x12344433,(%r15,%rcx,4),%r16
+add    $0xfffffffff4332211,%rax,%r8
+dec    %rax,%r17
+decb   (%r31,%r12,1),%r8b
+not    %rax,%r17
+notb   (%r31,%r12,1),%r8b
+neg    %rax,%r17
+negb   (%r31,%r12,1),%r8b
+sub    %r15b,%r17b,%r18b
+sub    %r15d,(%r8),%r18d
+sub    (%r15,%rax,1),%r16b,%r8b
+sub    (%r15,%rax,1),%r16w,%r8w
+subl   $0x11,(%r19,%rax,4),%r20d
+sub    $0x1234,%ax,%r30w
+sbb    %r15b,%r17b,%r18b
+sbb    %r15d,(%r8),%r18d
+sbb    (%r15,%rax,1),%r16b,%r8b
+sbb    (%r15,%rax,1),%r16w,%r8w
+sbbl   $0x11,(%r19,%rax,4),%r20d
+sbb    $0x1234,%ax,%r30w
+adc    %r15b,%r17b,%r18b
+adc    %r15d,(%r8),%r18d
+adc    (%r15,%rax,1),%r16b,%r8b
+adc    (%r15,%rax,1),%r16w,%r8w
+adcl   $0x11,(%r19,%rax,4),%r20d
+adc    $0x1234,%ax,%r30w
+or     %r15b,%r17b,%r18b
+or     %r15d,(%r8),%r18d
+or     (%r15,%rax,1),%r16b,%r8b
+or     (%r15,%rax,1),%r16w,%r8w
+orl    $0x11,(%r19,%rax,4),%r20d
+or     $0x1234,%ax,%r30w
+xor    %r15b,%r17b,%r18b
+xor    %r15d,(%r8),%r18d
+xor    (%r15,%rax,1),%r16b,%r8b
+xor    (%r15,%rax,1),%r16w,%r8w
+xorl   $0x11,(%r19,%rax,4),%r20d
+xor    $0x1234,%ax,%r30w
+and    %r15b,%r17b,%r18b
+and    %r15d,(%r8),%r18d
+and    (%r15,%rax,1),%r16b,%r8b
+and    (%r15,%rax,1),%r16w,%r8w
+andl   $0x11,(%r19,%rax,4),%r20d
+and    $0x1234,%ax,%r30w
+rorb   (%rax),%r31b
+ror    $0x2,%r12b,%r31b
+rorl   $0x2,(%rax),%r31d
+rorw   (%rax),%r31w
+ror    %cl,%r16b,%r8b
+rorw   %cl,(%r19,%rax,4),%r31w
+rolb   (%rax),%r31b
+rol    $0x2,%r12b,%r31b
+roll   $0x2,(%rax),%r31d
+rolw   (%rax),%r31w
+rol    %cl,%r16b,%r8b
+rolw   %cl,(%r19,%rax,4),%r31w
+rcrb   (%rax),%r31b
+rcr    $0x2,%r12b,%r31b
+rcrl   $0x2,(%rax),%r31d
+rcrw   (%rax),%r31w
+rcr    %cl,%r16b,%r8b
+rcrw   %cl,(%r19,%rax,4),%r31w
+rclb   (%rax),%r31b
+rcl    $0x2,%r12b,%r31b
+rcll   $0x2,(%rax),%r31d
+rclw   (%rax),%r31w
+rcl    %cl,%r16b,%r8b
+rclw   %cl,(%r19,%rax,4),%r31w
+shlb   (%rax),%r31b
+shl    $0x2,%r12b,%r31b
+shll   $0x2,(%rax),%r31d
+shlw   (%rax),%r31w
+shl    %cl,%r16b,%r8b
+shlw   %cl,(%r19,%rax,4),%r31w
+sarb   (%rax),%r31b
+sar    $0x2,%r12b,%r31b
+sarl   $0x2,(%rax),%r31d
+sarw   (%rax),%r31w
+sar    %cl,%r16b,%r8b
+sarw   %cl,(%r19,%rax,4),%r31w
+shlb   (%rax),%r31b
+shl    $0x2,%r12b,%r31b
+shll   $0x2,(%rax),%r31d
+shlw   (%rax),%r31w
+shl    %cl,%r16b,%r8b
+shlw   %cl,(%r19,%rax,4),%r31w
+shrb   (%rax),%r31b
+shr    $0x2,%r12b,%r31b
+shrl   $0x2,(%rax),%r31d
+shrw   (%rax),%r31w
+shr    %cl,%r16b,%r8b
+shrw   %cl,(%r19,%rax,4),%r31w
+shld   $0x1,%r12,(%rax),%r31
+shld   $0x2,%r8w,%r12w,%r31w
+shld   $0x2,%r15d,(%rax),%r31d
+shld   %cl,%r9w,(%rax),%r31w
+shld   %cl,%r12,%r16,%r8
+shld   %cl,%r13w,(%r19,%rax,4),%r31w
+shrd   $0x1,%r12,(%rax),%r31
+shrd   $0x2,%r8w,%r12w,%r31w
+shrd   $0x2,%r15d,(%rax),%r31d
+shrd   %cl,%r9w,(%rax),%r31w
+shrd   %cl,%r12,%r16,%r8
+shrd   %cl,%r13w,(%r19,%rax,4),%r31w
+adcx   %r15d,%r8d,%r18d
+adcx   (%r15,%r31,1),%r8d,%r18d
+adcx   (%r15,%r31,1),%r8
+adox   %r15d,%r8d,%r18d
+adox   (%r15,%r31,1),%r8d,%r18d
+adox   (%r15,%r31,1),%r8
+cmovo  0x90909090(%eax),%edx,%r8d
+cmovno 0x90909090(%eax),%edx,%r8d
+cmovb  0x90909090(%eax),%edx,%r8d
+cmovae 0x90909090(%eax),%edx,%r8d
+cmove  0x90909090(%eax),%edx,%r8d
+cmovne 0x90909090(%eax),%edx,%r8d
+cmovbe 0x90909090(%eax),%edx,%r8d
+cmova  0x90909090(%eax),%edx,%r8d
+cmovs  0x90909090(%eax),%edx,%r8d
+cmovns 0x90909090(%eax),%edx,%r8d
+cmovp  0x90909090(%eax),%edx,%r8d
+cmovnp 0x90909090(%eax),%edx,%r8d
+cmovl  0x90909090(%eax),%edx,%r8d
+cmovge 0x90909090(%eax),%edx,%r8d
+cmovle 0x90909090(%eax),%edx,%r8d
+cmovg  0x90909090(%eax),%edx,%r8d
+imul   0x90909(%eax),%edx,%r8d
+imul   0x909(%rax,%r31,8),%rdx,%r25
+.byte 0x62,0xf4,0xfc,0x08,0xff,0xc0  #inc %rax
+.byte 0x62,0xf4,0xec,0x08,0xff,0xc0  #bad
diff --git a/gas/testsuite/gas/i386/x86-64-pseudos.d b/gas/testsuite/gas/i386/x86-64-pseudos.d
index 8cc4040cb77..f6257c01792 100644
--- a/gas/testsuite/gas/i386/x86-64-pseudos.d
+++ b/gas/testsuite/gas/i386/x86-64-pseudos.d
@@ -137,6 +137,48 @@ Disassembly of section .text:
  +[a-f0-9]+:	33 07                	xor    \(%rdi\),%eax
  +[a-f0-9]+:	31 07                	xor    %eax,\(%rdi\)
  +[a-f0-9]+:	33 07                	xor    \(%rdi\),%eax
+ +[a-f0-9]+:	62 44 fc 10 01 38    	add    %r31,\(%r8\),%r16
+ +[a-f0-9]+:	62 44 fc 10 03 38    	add    \(%r8\),%r31,%r16
+ +[a-f0-9]+:	62 44 fc 10 01 38    	add    %r31,\(%r8\),%r16
+ +[a-f0-9]+:	62 44 fc 10 03 38    	add    \(%r8\),%r31,%r16
+ +[a-f0-9]+:	62 54 6c 10 29 38    	sub    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:	62 54 6c 10 2b 38    	sub    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:	62 54 6c 10 29 38    	sub    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:	62 54 6c 10 2b 38    	sub    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:	62 54 6c 10 19 38    	sbb    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:	62 54 6c 10 1b 38    	sbb    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:	62 54 6c 10 19 38    	sbb    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:	62 54 6c 10 1b 38    	sbb    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:	62 54 6c 10 21 38    	and    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:	62 54 6c 10 23 38    	and    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:	62 54 6c 10 21 38    	and    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:	62 54 6c 10 23 38    	and    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:	62 54 6c 10 09 38    	or     %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:	62 54 6c 10 0b 38    	or     \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:	62 54 6c 10 09 38    	or     %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:	62 54 6c 10 0b 38    	or     \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:	62 54 6c 10 31 38    	xor    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:	62 54 6c 10 33 38    	xor    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:	62 54 6c 10 31 38    	xor    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:	62 54 6c 10 33 38    	xor    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:	62 54 6c 10 11 38    	adc    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:	62 54 6c 10 13 38    	adc    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:	62 54 6c 10 11 38    	adc    %r15d,\(%r8\),%r18d
+ +[a-f0-9]+:	62 54 6c 10 13 38    	adc    \(%r8\),%r15d,%r18d
+ +[a-f0-9]+:	62 44 fc 10 01 f8    	add    %r31,%r8,%r16
+ +[a-f0-9]+:	62 5c fc 10 03 c7    	add    %r31,%r8,%r16
+ +[a-f0-9]+:	62 7c 6c 10 28 f9    	sub    %r15b,%r17b,%r18b
+ +[a-f0-9]+:	62 c4 6c 10 2a cf    	sub    %r15b,%r17b,%r18b
+ +[a-f0-9]+:	62 7c 6c 10 18 f9    	sbb    %r15b,%r17b,%r18b
+ +[a-f0-9]+:	62 c4 6c 10 1a cf    	sbb    %r15b,%r17b,%r18b
+ +[a-f0-9]+:	62 7c 6c 10 20 f9    	and    %r15b,%r17b,%r18b
+ +[a-f0-9]+:	62 c4 6c 10 22 cf    	and    %r15b,%r17b,%r18b
+ +[a-f0-9]+:	62 7c 6c 10 08 f9    	or     %r15b,%r17b,%r18b
+ +[a-f0-9]+:	62 c4 6c 10 0a cf    	or     %r15b,%r17b,%r18b
+ +[a-f0-9]+:	62 7c 6c 10 30 f9    	xor    %r15b,%r17b,%r18b
+ +[a-f0-9]+:	62 c4 6c 10 32 cf    	xor    %r15b,%r17b,%r18b
+ +[a-f0-9]+:	62 7c 6c 10 10 f9    	adc    %r15b,%r17b,%r18b
+ +[a-f0-9]+:	62 c4 6c 10 12 cf    	adc    %r15b,%r17b,%r18b
  +[a-f0-9]+:	b0 12                	mov    \$0x12,%al
  +[a-f0-9]+:	b8 45 03 00 00       	mov    \$0x345,%eax
  +[a-f0-9]+:	b0 12                	mov    \$0x12,%al
diff --git a/gas/testsuite/gas/i386/x86-64-pseudos.s b/gas/testsuite/gas/i386/x86-64-pseudos.s
index eb25f2a8fbf..9f756e5ba04 100644
--- a/gas/testsuite/gas/i386/x86-64-pseudos.s
+++ b/gas/testsuite/gas/i386/x86-64-pseudos.s
@@ -134,6 +134,49 @@ _start:
 	{load} xor (%rdi), %eax
 	{store} xor %eax, (%rdi)
 	{store} xor (%rdi), %eax
+	{load}  add    %r31,(%r8),%r16
+	{load}	add    (%r8),%r31,%r16
+	{store} add    %r31,(%r8),%r16
+	{store}	add    (%r8),%r31,%r16
+	{load} 	sub    %r15d,(%r8),%r18d
+	{load}	sub    (%r8),%r15d,%r18d
+	{store} sub    %r15d,(%r8),%r18d
+	{store} sub    (%r8),%r15d,%r18d
+	{load} 	sbb    %r15d,(%r8),%r18d
+	{load}	sbb    (%r8),%r15d,%r18d
+	{store} sbb    %r15d,(%r8),%r18d
+	{store} sbb    (%r8),%r15d,%r18d
+	{load} 	and    %r15d,(%r8),%r18d
+	{load}	and    (%r8),%r15d,%r18d
+	{store} and    %r15d,(%r8),%r18d
+	{store} and    (%r8),%r15d,%r18d
+	{load} 	or     %r15d,(%r8),%r18d
+	{load}	or     (%r8),%r15d,%r18d
+	{store} or     %r15d,(%r8),%r18d
+	{store} or     (%r8),%r15d,%r18d
+	{load} 	xor    %r15d,(%r8),%r18d
+	{load}	xor    (%r8),%r15d,%r18d
+	{store} xor    %r15d,(%r8),%r18d
+	{store} xor    (%r8),%r15d,%r18d
+	{load} 	adc    %r15d,(%r8),%r18d
+	{load}	adc    (%r8),%r15d,%r18d
+	{store} adc    %r15d,(%r8),%r18d
+	{store} adc    (%r8),%r15d,%r18d
+
+	{store} add    %r31,%r8,%r16
+	{load}  add    %r31,%r8,%r16
+	{store} sub    %r15b,%r17b,%r18b
+	{load}	sub    %r15b,%r17b,%r18b
+	{store}	sbb    %r15b,%r17b,%r18b
+	{load}	sbb    %r15b,%r17b,%r18b
+	{store}	and    %r15b,%r17b,%r18b
+	{load}	and    %r15b,%r17b,%r18b
+	{store}	or     %r15b,%r17b,%r18b
+	{load}	or     %r15b,%r17b,%r18b
+	{store}	xor    %r15b,%r17b,%r18b
+	{load}	xor    %r15b,%r17b,%r18b
+	{store}	adc    %r15b,%r17b,%r18b
+	{load}	adc    %r15b,%r17b,%r18b
 
 	.irp m, mov, adc, add, and, cmp, or, sbb, sub, test, xor
 	\m	$0x12, %al
diff --git a/gas/testsuite/gas/i386/x86-64.exp b/gas/testsuite/gas/i386/x86-64.exp
index 46fb3681528..ca1583c6f88 100644
--- a/gas/testsuite/gas/i386/x86-64.exp
+++ b/gas/testsuite/gas/i386/x86-64.exp
@@ -367,6 +367,7 @@ run_dump_test "x86-64-apx-rex2-inval"
 run_dump_test "x86-64-apx-evex-promoted"
 run_dump_test "x86-64-apx-evex-promoted-intel"
 run_dump_test "x86-64-apx-evex-egpr"
+run_dump_test "x86-64-apx-ndd"
 run_dump_test "x86-64-avx512f-rcigrz-intel"
 run_dump_test "x86-64-avx512f-rcigrz"
 run_dump_test "x86-64-clwb"
diff --git a/opcodes/i386-dis-evex-prefix.h b/opcodes/i386-dis-evex-prefix.h
index f6f02de6c47..210783d7e88 100644
--- a/opcodes/i386-dis-evex-prefix.h
+++ b/opcodes/i386-dis-evex-prefix.h
@@ -353,8 +353,8 @@
   /* PREFIX_EVEX_MAP4_66 */
   {
     { MOD_TABLE (MOD_EVEX_MAP4_66_PREFIX_0) },
-    { "adoxS",	{ Gdq, Edq }, 0 },
-    { "adcxS",	{ Gdq, Edq }, 0 },
+    { "adoxS",	{ VexGdq, Gdq, Edq }, 0 },
+    { "adcxS",	{ VexGdq, Gdq, Edq }, 0 },
   },
   /* PREFIX_EVEX_MAP4_D8 */
   {
diff --git a/opcodes/i386-dis-evex-reg.h b/opcodes/i386-dis-evex-reg.h
index c3b4f083346..d00c2843e12 100644
--- a/opcodes/i386-dis-evex-reg.h
+++ b/opcodes/i386-dis-evex-reg.h
@@ -56,6 +56,105 @@
     { "blsmskS",	{ VexGdq, Edq }, 0 },
     { "blsiS",		{ VexGdq, Edq }, 0 },
   },
+  /* REG_EVEX_MAP4_80 */
+  {
+    { "addA",	{ VexGb, Eb, Ib }, 0 },
+    { "orA",	{ VexGb, Eb, Ib }, 0 },
+    { "adcA",	{ VexGb, Eb, Ib }, 0 },
+    { "sbbA",	{ VexGb, Eb, Ib }, 0 },
+    { "andA",	{ VexGb, Eb, Ib }, 0 },
+    { "subA",	{ VexGb, Eb, Ib }, 0 },
+    { "xorA",	{ VexGb, Eb, Ib }, 0 },
+    { Bad_Opcode },
+  },
+  /* REG_EVEX_MAP4_81 */
+  {
+    { "addQ",	{ VexGv, Ev, Iv }, 0 },
+    { "orQ",	{ VexGv, Ev, Iv }, 0 },
+    { "adcQ",	{ VexGv, Ev, Iv }, 0 },
+    { "sbbQ",	{ VexGv, Ev, Iv }, 0 },
+    { "andQ",	{ VexGv, Ev, Iv }, 0 },
+    { "subQ",	{ VexGv, Ev, Iv }, 0 },
+    { "xorQ",	{ VexGv, Ev, Iv }, 0 },
+    { Bad_Opcode },
+  },
+  /* REG_EVEX_MAP4_83 */
+  {
+    { "addQ",	{ VexGv, Ev, sIb }, 0 },
+    { "orQ",	{ VexGv, Ev, sIb }, 0 },
+    { "adcQ",	{ VexGv, Ev, sIb }, 0 },
+    { "sbbQ",	{ VexGv, Ev, sIb }, 0 },
+    { "andQ",	{ VexGv, Ev, sIb }, 0 },
+    { "subQ",	{ VexGv, Ev, sIb }, 0 },
+    { "xorQ",	{ VexGv, Ev, sIb }, 0 },
+    { Bad_Opcode },
+  },
+  /* REG_EVEX_MAP4_C0 */
+  {
+    { "rolA",	{ VexGb, Eb, Ib }, 0 },
+    { "rorA",	{ VexGb, Eb, Ib }, 0 },
+    { "rclA",	{ VexGb, Eb, Ib }, 0 },
+    { "rcrA",	{ VexGb, Eb, Ib }, 0 },
+    { "shlA",	{ VexGb, Eb, Ib }, 0 },
+    { "shrA",	{ VexGb, Eb, Ib }, 0 },
+    { "shlA",	{ VexGb, Eb, Ib }, 0 },
+    { "sarA",	{ VexGb, Eb, Ib }, 0 },
+  },
+  /* REG_EVEX_MAP4_C1 */
+  {
+    { "rolQ",	{ VexGv, Ev, Ib }, 0 },
+    { "rorQ",	{ VexGv, Ev, Ib }, 0 },
+    { "rclQ",	{ VexGv, Ev, Ib }, 0 },
+    { "rcrQ",	{ VexGv, Ev, Ib }, 0 },
+    { "shlQ",	{ VexGv, Ev, Ib }, 0 },
+    { "shrQ",	{ VexGv, Ev, Ib }, 0 },
+    { "shlQ",	{ VexGv, Ev, Ib }, 0 },
+    { "sarQ",	{ VexGv, Ev, Ib }, 0 },
+  },
+  /* REG_EVEX_MAP4_D0 */
+  {
+    { "rolA",	{ VexGb, Eb, I1 }, 0 },
+    { "rorA",	{ VexGb, Eb, I1 }, 0 },
+    { "rclA",	{ VexGb, Eb, I1 }, 0 },
+    { "rcrA",	{ VexGb, Eb, I1 }, 0 },
+    { "shlA",	{ VexGb, Eb, I1 }, 0 },
+    { "shrA",	{ VexGb, Eb, I1 }, 0 },
+    { "shlA",	{ VexGb, Eb, I1 }, 0 },
+    { "sarA",	{ VexGb, Eb, I1 }, 0 },
+  },
+  /* REG_EVEX_MAP4_D1 */
+  {
+    { "rolQ",	{ VexGv, Ev, I1 }, 0 },
+    { "rorQ",	{ VexGv, Ev, I1 }, 0 },
+    { "rclQ",	{ VexGv, Ev, I1 }, 0 },
+    { "rcrQ",	{ VexGv, Ev, I1 }, 0 },
+    { "shlQ",	{ VexGv, Ev, I1 }, 0 },
+    { "shrQ",	{ VexGv, Ev, I1 }, 0 },
+    { "shlQ",	{ VexGv, Ev, I1 }, 0 },
+    { "sarQ",	{ VexGv, Ev, I1 }, 0 },
+  },
+  /* REG_EVEX_MAP4_D2 */
+  {
+    { "rolA",	{ VexGb, Eb, CL }, 0 },
+    { "rorA",	{ VexGb, Eb, CL }, 0 },
+    { "rclA",	{ VexGb, Eb, CL }, 0 },
+    { "rcrA",	{ VexGb, Eb, CL }, 0 },
+    { "shlA",	{ VexGb, Eb, CL }, 0 },
+    { "shrA",	{ VexGb, Eb, CL }, 0 },
+    { "shlA",	{ VexGb, Eb, CL }, 0 },
+    { "sarA",	{ VexGb, Eb, CL }, 0 },
+  },
+  /* REG_EVEX_MAP4_D3 */
+  {
+    { "rolQ",	{ VexGv, Ev, CL }, 0 },
+    { "rorQ",	{ VexGv, Ev, CL }, 0 },
+    { "rclQ",	{ VexGv, Ev, CL }, 0 },
+    { "rcrQ",	{ VexGv, Ev, CL }, 0 },
+    { "shlQ",	{ VexGv, Ev, CL }, 0 },
+    { "shrQ",	{ VexGv, Ev, CL }, 0 },
+    { "shlQ",	{ VexGv, Ev, CL }, 0 },
+    { "sarQ",	{ VexGv, Ev, CL }, 0 },
+  },
   /* REG_EVEX_MAP4_D8_PREFIX_1 */
   {
     { "aesencwide128kl",	{ M }, 0 },
@@ -63,3 +162,27 @@
     { "aesencwide256kl",	{ M }, 0 },
     { "aesdecwide256kl",	{ M }, 0 },
   },
+  /* REG_EVEX_MAP4_F6 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "notA",	{ VexGb, Eb }, 0 },
+    { "negA",	{ VexGb, Eb }, 0 },
+  },
+  /* REG_EVEX_MAP4_F7 */
+  {
+    { Bad_Opcode },
+    { Bad_Opcode },
+    { "notQ",	{ VexGv, Ev }, 0 },
+    { "negQ",	{ VexGv, Ev }, 0 },
+  },
+  /* REG_EVEX_MAP4_FE */
+  {
+    { "incA",   { VexGb ,Eb }, 0 },
+    { "decA",   { VexGb ,Eb }, 0 },
+  },
+  /* REG_EVEX_MAP4_FF */
+  {
+    { "incQ",   { VexGv ,Ev }, 0 },
+    { "decQ",   { VexGv ,Ev }, 0 },
+  },
diff --git a/opcodes/i386-dis-evex.h b/opcodes/i386-dis-evex.h
index 2a8c80c5200..1787be6dbf0 100644
--- a/opcodes/i386-dis-evex.h
+++ b/opcodes/i386-dis-evex.h
@@ -875,64 +875,64 @@ static const struct dis386 evex_table[][256] = {
   /* EVEX_MAP4_ */
   {
     /* 00 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "addB",             { VexGb, Eb, Gb }, 0  },
+    { "addS",             { VexGv, Ev, Gv }, 0 },
+    { "addB",             { VexGb, Gb, EbS }, 0 },
+    { "addS",             { VexGv, Gv, EvS }, 0 },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 08 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "orB",		{ VexGb, Eb, Gb }, 0 },
+    { "orS",		{ VexGv, Ev, Gv }, 0 },
+    { "orB",		{ VexGb, Gb, EbS }, 0 },
+    { "orS",		{ VexGv, Gv, EvS }, 0 },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 10 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "adcB",		{ VexGb, Eb, Gb }, 0 },
+    { "adcS",		{ VexGv, Ev, Gv }, 0 },
+    { "adcB",		{ VexGb, Gb, EbS }, 0 },
+    { "adcS",		{ VexGv, Gv, EvS }, 0 },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 18 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "sbbB",		{ VexGb, Eb, Gb }, 0 },
+    { "sbbS",		{ VexGv, Ev, Gv }, 0 },
+    { "sbbB",		{ VexGb, Gb, EbS }, 0 },
+    { "sbbS",		{ VexGv, Gv, EvS }, 0 },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 20 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "andB",		{ VexGb, Eb, Gb }, 0 },
+    { "andS",		{ VexGv, Ev, Gv }, 0 },
+    { "andB",		{ VexGb, Gb, EbS }, 0 },
+    { "andS",		{ VexGv, Gv, EvS }, 0 },
+    { "shldS",		{ VexGv, Ev, Gv, Ib }, 0 },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 28 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "subB",		{ VexGb, Eb, Gb }, 0 },
+    { "subS",		{ VexGv, Ev, Gv }, 0 },
+    { "subB",		{ VexGb, Gb, EbS }, 0 },
+    { "subS",		{ VexGv, Gv, EvS }, 0 },
+    { "shrdS",		{ VexGv, Ev, Gv, Ib }, 0 },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
     /* 30 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "xorB",		{ VexGb, Eb, Gb }, 0 },
+    { "xorS",		{ VexGv, Ev, Gv }, 0 },
+    { "xorB",		{ VexGb, Gb, EbS }, 0 },
+    { "xorS",		{ VexGv, Gv, EvS }, 0 },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
@@ -947,23 +947,23 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     /* 40 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "cmovoS",		{ VexGv, Gv, Ev }, 0 },
+    { "cmovnoS",	{ VexGv, Gv, Ev }, 0 },
+    { "cmovbS",		{ VexGv, Gv, Ev }, 0 },
+    { "cmovaeS",	{ VexGv, Gv, Ev }, 0 },
+    { "cmoveS",		{ VexGv, Gv, Ev }, 0 },
+    { "cmovneS",	{ VexGv, Gv, Ev }, 0 },
+    { "cmovbeS",	{ VexGv, Gv, Ev }, 0 },
+    { "cmovaS",		{ VexGv, Gv, Ev }, 0 },
     /* 48 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "cmovsS",		{ VexGv, Gv, Ev }, 0 },
+    { "cmovnsS",	{ VexGv, Gv, Ev }, 0 },
+    { "cmovpS",		{ VexGv, Gv, Ev }, 0 },
+    { "cmovnpS",	{ VexGv, Gv, Ev }, 0 },
+    { "cmovlS",		{ VexGv, Gv, Ev }, 0 },
+    { "cmovgeS",	{ VexGv, Gv, Ev }, 0 },
+    { "cmovleS",	{ VexGv, Gv, Ev }, 0 },
+    { "cmovgS",		{ VexGv, Gv, Ev }, 0 },
     /* 50 */
     { Bad_Opcode },
     { Bad_Opcode },
@@ -1019,10 +1019,10 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     /* 80 */
+    { REG_TABLE (REG_EVEX_MAP4_80) },
+    { REG_TABLE (REG_EVEX_MAP4_81) },
     { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { REG_TABLE (REG_EVEX_MAP4_83) },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
@@ -1060,7 +1060,7 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
-    { Bad_Opcode },
+    { "shldS",		{ VexGv, Ev, Gv, CL }, 0 },
     { Bad_Opcode },
     { Bad_Opcode },
     /* A8 */
@@ -1069,9 +1069,9 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
+    { "shrdS",		{ VexGv, Ev, Gv, CL }, 0 },
     { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { "imulS",		{ VexGv, Gv, Ev }, 0 },
     /* B0 */
     { Bad_Opcode },
     { Bad_Opcode },
@@ -1091,8 +1091,8 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     /* C0 */
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { REG_TABLE (REG_EVEX_MAP4_C0) },
+    { REG_TABLE (REG_EVEX_MAP4_C1) },
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
@@ -1109,10 +1109,10 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     /* D0 */
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { REG_TABLE (REG_EVEX_MAP4_D0) },
+    { REG_TABLE (REG_EVEX_MAP4_D1) },
+    { REG_TABLE (REG_EVEX_MAP4_D2) },
+    { REG_TABLE (REG_EVEX_MAP4_D3) },
     { "sha1rnds4", { XM, EXxmm, Ib }, 0 },
     { Bad_Opcode },
     { Bad_Opcode },
@@ -1151,8 +1151,8 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { Bad_Opcode },
     { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { REG_TABLE (REG_EVEX_MAP4_F6) },
+    { REG_TABLE (REG_EVEX_MAP4_F7) },
     /* F8 */
     { PREFIX_TABLE (PREFIX_EVEX_MAP4_F8) },
     { MOD_TABLE (MOD_EVEX_MAP4_F9) },
@@ -1160,8 +1160,8 @@ static const struct dis386 evex_table[][256] = {
     { Bad_Opcode },
     { PREFIX_TABLE (PREFIX_EVEX_MAP4_FC) },
     { Bad_Opcode },
-    { Bad_Opcode },
-    { Bad_Opcode },
+    { REG_TABLE (REG_EVEX_MAP4_FE) },
+    { REG_TABLE (REG_EVEX_MAP4_FF) },
   },
   /* EVEX_MAP5_ */
   {
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index c8f3cfb8149..c702fd9e756 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -571,6 +571,8 @@ fetch_error (const instr_info *ins)
 #define VexGatherD { OP_VEX, vex_vsib_d_w_dq_mode }
 #define VexGatherQ { OP_VEX, vex_vsib_q_w_dq_mode }
 #define VexGdq { OP_VEX, dq_mode }
+#define VexGb { OP_VEX, b_mode }
+#define VexGv { OP_VEX, v_mode }
 #define VexTmm { OP_VEX, tmm_mode }
 #define XMVexI4 { OP_REG_VexI4, x_mode }
 #define XMVexScalarI4 { OP_REG_VexI4, scalar_mode }
@@ -883,7 +885,20 @@ enum
   REG_EVEX_0F38C6_L_2,
   REG_EVEX_0F38C7_L_2,
   REG_EVEX_0F38F3_L_0,
-  REG_EVEX_MAP4_D8_PREFIX_1
+  REG_EVEX_MAP4_80,
+  REG_EVEX_MAP4_81,
+  REG_EVEX_MAP4_83,
+  REG_EVEX_MAP4_C0,
+  REG_EVEX_MAP4_C1,
+  REG_EVEX_MAP4_D0,
+  REG_EVEX_MAP4_D1,
+  REG_EVEX_MAP4_D2,
+  REG_EVEX_MAP4_D3,
+  REG_EVEX_MAP4_D8_PREFIX_1,
+  REG_EVEX_MAP4_F6,
+  REG_EVEX_MAP4_F7,
+  REG_EVEX_MAP4_FE,
+  REG_EVEX_MAP4_FF,
 };
 
 enum
@@ -9070,6 +9085,14 @@ get_valid_dis386 (const struct dis386 *dp, instr_info *ins)
 	  ins->rex &= ~REX_B;
 	  ins->rex2 &= ~REX_R;
 	}
+      if (ins->evex_type == evex_from_legacy)
+	{
+	  if (ins->vex.ll || ins->vex.zeroing
+	      || (!ins->vex.b && (ins->vex.register_specifier
+				  || !ins->vex.v)))
+	    return &bad_opcode;
+	  ins->rex |= REX_OPCODE;
+	}
 
       ins->need_vex = 4;
       ins->codep++;
@@ -9080,7 +9103,7 @@ get_valid_dis386 (const struct dis386 *dp, instr_info *ins)
 	return &err_opcode;
 
       /* Set vector length.  */
-      if (ins->modrm.mod == 3 && ins->vex.b)
+      if (ins->modrm.mod == 3 && ins->vex.b && ins->evex_type == evex_default)
 	ins->vex.length = 512;
       else
 	{
@@ -10994,7 +11017,7 @@ print_displacement (instr_info *ins, bfd_signed_vma val)
 static void
 intel_operand_size (instr_info *ins, int bytemode, int sizeflag)
 {
-  if (ins->vex.b)
+  if (ins->vex.b && ins->evex_type != evex_from_legacy)
     {
       if (!ins->vex.no_broadcast)
 	switch (bytemode)
@@ -11928,7 +11951,8 @@ OP_E_memory (instr_info *ins, int bytemode, int sizeflag)
 	ins->vex.no_broadcast = true;
 
       if (!ins->vex.no_broadcast
-	  && (!ins->intel_syntax || !(ins->evex_used & EVEX_len_used)))
+	  && (!ins->intel_syntax || !(ins->evex_used & EVEX_len_used))
+	  && ins->evex_type == evex_default)
 	{
 	  if (bytemode == xh_mode)
 	    {
@@ -13280,6 +13304,14 @@ OP_VEX (instr_info *ins, int bytemode, int sizeflag ATTRIBUTE_UNUSED)
   if (!ins->need_vex)
     return true;
 
+  if (ins->evex_type == evex_from_legacy)
+    {
+      if (ins->vex.b)
+	ins->evex_used |= EVEX_b_used;
+      else
+	 return true;
+    }
+
   reg = ins->vex.register_specifier;
   ins->vex.register_specifier = 0;
   if (ins->address_mode != mode_64bit)
@@ -13371,12 +13403,19 @@ OP_VEX (instr_info *ins, int bytemode, int sizeflag ATTRIBUTE_UNUSED)
 	  names = att_names_xmm;
 	  ins->evex_used |= EVEX_len_used;
 	  break;
+	case v_mode:
 	case dq_mode:
 	  if (ins->rex & REX_W)
 	    names = att_names64;
+	  else if (bytemode == v_mode
+		   && !(sizeflag & DFLAG))
+	    names = att_names16;
 	  else
 	    names = att_names32;
 	  break;
+	case b_mode:
+	  names = att_names8rex;
+	  break;
 	case mask_bd_mode:
 	case mask_mode:
 	  if (reg > 0x7)
diff --git a/opcodes/i386-opc.h b/opcodes/i386-opc.h
index 9dd5625f54d..f36a8da5cbe 100644
--- a/opcodes/i386-opc.h
+++ b/opcodes/i386-opc.h
@@ -960,6 +960,7 @@ typedef struct insn_template
 /* The next value is arbitrary, as long as it's non-zero and distinct
    from all other values above.  */
 #define Opcode_VexW	0xf /* Operand order controlled by VEX.W. */
+#define Opcode_APX_NDDD	0x11 /* Direction bit for APX NDD insns. */
 
   /* how many operands */
   unsigned int operands:3;
diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl
index 791a9fe0177..4bb0c9f4906 100644
--- a/opcodes/i386-opc.tbl
+++ b/opcodes/i386-opc.tbl
@@ -286,17 +286,25 @@ add, 0x0, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg3
 add, 0x83/0, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
 add, 0x4, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
 add, 0x80/0, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+add, 0x0, APX_F|x64, D|W|CheckOperandSize|Modrm|No_sSuf|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+add, 0x83/0, APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
+add, 0x80/0, APX_F|x64, W|Modrm|CheckOperandSize|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64}
 
 inc, 0x40, No64, No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32 }
 inc, 0xfe/0, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+inc, 0xfe/0, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, {Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64}
 
 sub, 0x28, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 sub, 0x83/5, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
 sub, 0x2c, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
 sub, 0x80/5, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+sub, 0x28, APX_F|x64, D|W|CheckOperandSize|Modrm|No_sSuf|VexVVVV|EVex128|EVexMap4|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64, }
+sub, 0x83/5, APX_F|x64, Modrm|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
+sub, 0x80/5, APX_F|x64, W|Modrm|CheckOperandSize|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 dec, 0x48, No64, No_bSuf|No_sSuf|No_qSuf, { Reg16|Reg32 }
 dec, 0xfe/1, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+dec, 0xfe/1, APX_F|x64, W|Modrm|CheckOperandSize|No_sSuf|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 sbb, 0x18, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 sbb, 0x83/3, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
@@ -305,6 +313,9 @@ sbb, 0x80/3, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|R
 sbb, 0x18, APX_F|x64, D|W|CheckOperandSize|Modrm|EVex128|EVexMap4|No_sSuf, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 sbb, 0x83/3, APX_F|x64, Modrm|EVex128|EVexMap4|No_bSuf|No_sSuf, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
 sbb, 0x80/3, APX_F|x64, W|Modrm|EVex128|EVexMap4|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+sbb, 0x18, APX_F|x64, D|W|CheckOperandSize|Modrm|No_sSuf|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+sbb, 0x83/3, APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
+sbb, 0x80/3, APX_F|x64, W|Modrm|CheckOperandSize|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 cmp, 0x38, 0, D|W|CheckOperandSize|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 cmp, 0x83/7, 0, Modrm|No_bSuf|No_sSuf, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
@@ -319,16 +330,25 @@ and, 0x20, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Reg8|
 and, 0x83/4, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock|Optimize, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
 and, 0x24, 0, W|No_sSuf|Optimize, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
 and, 0x80/4, 0, W|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+and, 0x20, APX_F|x64, D|W|CheckOperandSize|Modrm|No_sSuf|VexVVVV|EVex128|EVexMap4|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+and, 0x83/4, APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4|Optimize, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
+and, 0x80/4, APX_F|x64, W|Modrm|CheckOperandSize|No_sSuf|VexVVVV|EVex128|EVexMap4|Optimize, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 or, 0x8, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 or, 0x83/1, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
 or, 0xc, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
 or, 0x80/1, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+or, 0x8, APX_F|x64, D|W|CheckOperandSize|Modrm|No_sSuf|VexVVVV|EVex128|EVexMap4|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+or, 0x83/1, APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
+or, 0x80/1, APX_F|x64, W|Modrm|CheckOperandSize|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 xor, 0x30, 0, D|W|CheckOperandSize|Modrm|No_sSuf|HLEPrefixLock|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 xor, 0x83/6, 0, Modrm|No_bSuf|No_sSuf|HLEPrefixLock, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
 xor, 0x34, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword }
 xor, 0x80/6, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+xor, 0x30, APX_F|x64, D|W|CheckOperandSize|Modrm|No_sSuf|VexVVVV|EVex128|EVexMap4|Optimize, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+xor, 0x83/6, APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
+xor, 0x80/6, APX_F|x64, W|Modrm|CheckOperandSize|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 // clr with 1 operand is really xor with 2 operands.
 clr, 0x30, 0, W|Modrm|No_sSuf|RegKludge|Optimize, { Reg8|Reg16|Reg32|Reg64 }
@@ -340,11 +360,16 @@ adc, 0x80/2, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Imm8|Imm16|Imm32|Imm32S, Reg8|R
 adc, 0x10, APX_F|x64, D|W|CheckOperandSize|Modrm|EVex128|EVexMap4|No_sSuf, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 adc, 0x83/2, APX_F|x64, Modrm|EVex128|EVexMap4|No_bSuf|No_sSuf, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
 adc, 0x80/2, APX_F|x64, W|Modrm|EVex128|EVexMap4|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+adc, 0x10, APX_F|x64, D|W|CheckOperandSize|Modrm|No_sSuf|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+adc, 0x83/2, APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
+adc, 0x80/2, APX_F|x64, W|Modrm|CheckOperandSize|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 neg, 0xf6/3, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+neg, 0xf6/3, APX_F|x64, W|Modrm|CheckOperandSize|No_sSuf|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 not, 0xf6/2, 0, W|Modrm|No_sSuf|HLEPrefixLock, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 not, 0xf6/2, APX_F|x64, W|Modrm|No_sSuf|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+not, 0xf6/2, APX_F|x64, W|Modrm|CheckOperandSize|No_sSuf|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 aaa, 0x37, No64, NoSuf, {}
 aas, 0x3f, No64, NoSuf, {}
@@ -378,6 +403,7 @@ cqto, 0x99, x64, Size64|NoSuf, {}
 mul, 0xf6/4, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 imul, 0xf6/5, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 imul, 0xfaf, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Unspecified|Word|Dword|Qword|BaseIndex, Reg16|Reg32|Reg64 }
+imul, 0xaf, APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Reg16|Reg32|Reg64|Unspecified|Word|Dword|Qword|BaseIndex, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64 }
 imul, 0x6b, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm8S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 imul, 0x69, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm16|Imm32|Imm32S, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 // imul with 2 operands mimics imul with 3 by putting the register in
@@ -395,11 +421,19 @@ rol, 0xd0/0, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|
 rol, 0xc0/0, i186, W|Modrm|No_sSuf, { Imm8|Imm8S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 rol, 0xd2/0, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 rol, 0xd0/0, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+rol, 0xd0/0, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+rol, 0xc0/0, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm8|Imm8S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+rol, 0xd2/0, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+rol, 0xd0/0, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 ror, 0xd0/1, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 ror, 0xc0/1, i186, W|Modrm|No_sSuf, { Imm8|Imm8S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 ror, 0xd2/1, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 ror, 0xd0/1, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+ror, 0xd0/1, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+ror, 0xc0/1, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm8|Imm8S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+ror, 0xd2/1, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+ror, 0xd0/1, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 rcl, 0xd0/2, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 rcl, 0xc0/2, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
@@ -409,6 +443,10 @@ rcl, 0xd0/2, APX_F|x64, W|Modrm|No_sSuf|EVex128|EVexMap4, { Imm1, Reg8|Reg16|Reg
 rcl, 0xc0/2, APX_F|x64, W|Modrm|No_sSuf|EVex128|EVexMap4, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 rcl, 0xd2/2, APX_F|x64, W|Modrm|No_sSuf|EVex128|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 rcl, 0xd0/2, APX_F|x64, W|Modrm|No_sSuf|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+rcl, 0xd0/2, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+rcl, 0xc0/2, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+rcl, 0xd2/2, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+rcl, 0xd0/2, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 rcr, 0xd0/3, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 rcr, 0xc0/3, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
@@ -418,34 +456,60 @@ rcr, 0xd0/3, APX_F|x64, W|Modrm|No_sSuf|EVex128|EVexMap4, { Imm1, Reg8|Reg16|Reg
 rcr, 0xc0/3, APX_F|x64, W|Modrm|No_sSuf|EVex128|EVexMap4, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 rcr, 0xd2/3, APX_F|x64, W|Modrm|No_sSuf|EVex128|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 rcr, 0xd0/3, APX_F|x64, W|Modrm|No_sSuf|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+rcr, 0xd0/3, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+rcr, 0xc0/3, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+rcr, 0xd2/3, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+rcr, 0xd0/3, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 sal, 0xd0/4, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 sal, 0xc0/4, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 sal, 0xd2/4, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 sal, 0xd0/4, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+sal, 0xd0/4, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+sal, 0xc0/4, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+sal, 0xd2/4, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+sal, 0xd0/4, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 shl, 0xd0/4, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 shl, 0xc0/4, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 shl, 0xd2/4, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 shl, 0xd0/4, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+shl, 0xd0/4, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+shl, 0xc0/4, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+shl, 0xd2/4, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+shl, 0xd0/4, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 shr, 0xd0/5, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 shr, 0xc0/5, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 shr, 0xd2/5, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 shr, 0xd0/5, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+shr, 0xd0/5, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+shr, 0xc0/5, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+shr, 0xd2/5, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+shr, 0xd0/5, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 sar, 0xd0/7, 0, W|Modrm|No_sSuf, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 sar, 0xc0/7, i186, W|Modrm|No_sSuf, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 sar, 0xd2/7, 0, W|Modrm|No_sSuf, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
 sar, 0xd0/7, 0, W|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }
+sar, 0xd0/7, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm1, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+sar, 0xc0/7, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Imm8, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+sar, 0xd2/7, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { ShiftCount, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
+sar, 0xd0/7, APX_F|x64, W|Modrm|No_sSuf|CheckOperandSize|VexVVVV|EVex128|EVexMap4, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 }
 
 shld, 0xfa4, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm8, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
 shld, 0xfa5, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { ShiftCount, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
 shld, 0xfa5, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
+shld, 0x24, APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
+shld, 0xa5, APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { ShiftCount, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
+shld, 0xa5, APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 
 shrd, 0xfac, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Imm8, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
 shrd, 0xfad, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { ShiftCount, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
 shrd, 0xfad, i386, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex }
+shrd, 0x2c, APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Imm8, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
+shrd, 0xad, APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { ShiftCount, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
+shrd, 0xad, APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Reg16|Reg32|Reg64, Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 
 // Control transfer instructions.
 call, 0xe8, No64, JumpDword|DefaultSize|No_bSuf|No_sSuf|No_qSuf|BNDPrefixOk, { Disp16|Disp32 }
@@ -951,6 +1015,7 @@ ud2b, 0xfb9, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|U
 ud0, 0xfff, i186, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
 
 cmov<cc>, 0xf4<cc:opc>, CMOV, Modrm|CheckOperandSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64 }
+cmov<cc>, 0x4<cc:opc>, CMOV|APX_F|x64, Modrm|CheckOperandSize|No_bSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Reg16|Reg32|Reg64|Word|Dword|Qword|Unspecified|BaseIndex, Reg16|Reg32|Reg64, Reg16|Reg32|Reg64 }
 
 fcmovb, 0xda/0, i687, Modrm|NoSuf, { FloatReg, FloatAcc }
 fcmovnae, 0xda/0, i687, Modrm|NoSuf, { FloatReg, FloatAcc }
@@ -2044,8 +2109,10 @@ xstore, 0xfa7c0, PadLock, NoSuf|RepPrefixOk, {}
 // Multy-precision Add Carry, rdseed instructions.
 adcx, 0x660f38f6, ADX, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
 adcx, 0x6666, ADX|APX_F|x64, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|EVex128|EVexMap4, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
+adcx, 0x6666, ADX|APX_F|x64, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64, Reg32|Reg64 }
 adox, 0xf30f38f6, ADX, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
 adox, 0xf366, ADX|APX_F|x64, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|EVex128|EVexMap4, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64 }
+adox, 0xf366, ADX|APX_F|x64, Modrm|CheckOperandSize|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|VexVVVV|EVex128|EVexMap4, { Reg32|Reg64|Unspecified|BaseIndex, Reg32|Reg64, Reg32|Reg64 }
 rdseed, 0xfc7/7, RdSeed, Modrm|NoSuf, { Reg16|Reg32|Reg64 }
 
 // SMAP instructions.
diff --git a/opcodes/i386-tbl.h b/opcodes/i386-tbl.h
index aee37c3dd7a..880cdbb8807 100644
--- a/opcodes/i386-tbl.h
+++ b/opcodes/i386-tbl.h
@@ -722,6 +722,39 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_add, 0x00, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_add, 0x83, 3, SPACE_EVEXMAP4, 0,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_add, 0x80, 3, SPACE_EVEXMAP4, 0,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_inc, 0x40, 1, SPACE_BASE, None,
     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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,
@@ -736,6 +769,15 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_inc, 0xfe, 2, SPACE_EVEXMAP4, 0,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_sub, 0x28, 2, SPACE_BASE, None,
     { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
@@ -772,6 +814,39 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_sub, 0x28, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+      0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_sub, 0x83, 3, SPACE_EVEXMAP4, 5,
+    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_sub, 0x80, 3, SPACE_EVEXMAP4, 5,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_dec, 0x48, 1, SPACE_BASE, None,
     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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,
@@ -786,6 +861,15 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_dec, 0xfe, 2, SPACE_EVEXMAP4, 1,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_sbb, 0x18, 2, SPACE_BASE, None,
     { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -849,6 +933,39 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_sbb, 0x18, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_sbb, 0x83, 3, SPACE_EVEXMAP4, 3,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_sbb, 0x80, 3, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmp, 0x38, 2, SPACE_BASE, None,
     { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -948,6 +1065,39 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_and, 0x20, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+      0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_and, 0x83, 3, SPACE_EVEXMAP4, 4,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+      0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_and, 0x80, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+      0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_or, 0x08, 2, SPACE_BASE, None,
     { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
@@ -984,6 +1134,39 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_or, 0x08, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+      0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_or, 0x83, 3, SPACE_EVEXMAP4, 1,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_or, 0x80, 3, SPACE_EVEXMAP4, 1,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_xor, 0x30, 2, SPACE_BASE, None,
     { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
@@ -1020,6 +1203,39 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_xor, 0x30, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+      0, 0 },
+    { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_xor, 0x83, 3, SPACE_EVEXMAP4, 6,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_xor, 0x80, 3, SPACE_EVEXMAP4, 6,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_clr, 0x30, 1, SPACE_BASE, None,
     { 0, 1, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
@@ -1090,6 +1306,39 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_adc, 0x10, 3, SPACE_EVEXMAP4, None,
+    { 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_adc, 0x83, 3, SPACE_EVEXMAP4, 2,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_adc, 0x80, 3, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_neg, 0xf6, 1, SPACE_BASE, 3,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1097,6 +1346,15 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_neg, 0xf6, 2, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_not, 0xf6, 1, SPACE_BASE, 2,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1111,6 +1369,15 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_not, 0xf6, 2, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_aaa, 0x37, 0, SPACE_BASE, None,
     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1274,6 +1541,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_imul, 0xaf, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_imul, 0x6b, 3, SPACE_BASE, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1380,6 +1658,48 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_rol, 0xd0, 3, SPACE_EVEXMAP4, 0,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 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 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_rol, 0xc0, 3, SPACE_EVEXMAP4, 0,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_rol, 0xd2, 3, SPACE_EVEXMAP4, 0,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_rol, 0xd0, 2, SPACE_EVEXMAP4, 0,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_ror, 0xd0, 2, SPACE_BASE, 1,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1414,6 +1734,48 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_ror, 0xd0, 3, SPACE_EVEXMAP4, 1,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 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 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_ror, 0xc0, 3, SPACE_EVEXMAP4, 1,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_ror, 0xd2, 3, SPACE_EVEXMAP4, 1,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_ror, 0xd0, 2, SPACE_EVEXMAP4, 1,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_rcl, 0xd0, 2, SPACE_BASE, 2,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1482,6 +1844,48 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcl, 0xd0, 3, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 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 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_rcl, 0xc0, 3, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_rcl, 0xd2, 3, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_rcl, 0xd0, 2, SPACE_EVEXMAP4, 2,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_rcr, 0xd0, 2, SPACE_BASE, 3,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1550,6 +1954,48 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_rcr, 0xd0, 3, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 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 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_rcr, 0xc0, 3, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_rcr, 0xd2, 3, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_rcr, 0xd0, 2, SPACE_EVEXMAP4, 3,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_sal, 0xd0, 2, SPACE_BASE, 4,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1584,6 +2030,48 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_sal, 0xd0, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 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 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_sal, 0xc0, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_sal, 0xd2, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_sal, 0xd0, 2, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_shl, 0xd0, 2, SPACE_BASE, 4,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1618,6 +2106,48 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_shl, 0xd0, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 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 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_shl, 0xc0, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_shl, 0xd2, 3, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_shl, 0xd0, 2, SPACE_EVEXMAP4, 4,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_shr, 0xd0, 2, SPACE_BASE, 5,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1652,6 +2182,48 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_shr, 0xd0, 3, SPACE_EVEXMAP4, 5,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 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 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_shr, 0xc0, 3, SPACE_EVEXMAP4, 5,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_shr, 0xd2, 3, SPACE_EVEXMAP4, 5,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_shr, 0xd0, 2, SPACE_EVEXMAP4, 5,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_sar, 0xd0, 2, SPACE_BASE, 7,
     { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1686,6 +2258,48 @@ static const insn_template i386_optab[] =
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_sar, 0xd0, 3, SPACE_EVEXMAP4, 7,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 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 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_sar, 0xc0, 3, SPACE_EVEXMAP4, 7,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_sar, 0xd2, 3, SPACE_EVEXMAP4, 7,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_sar, 0xd0, 2, SPACE_EVEXMAP4, 7,
+    { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_shld, 0xa4, 3, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1717,6 +2331,43 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_shld, 0x24, 4, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_shld, 0xa5, 4, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_shld, 0xa5, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_shrd, 0xac, 3, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1748,6 +2399,43 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 0, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 1, 0 } } } },
+  { MN_shrd, 0x2c, 4, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_shrd, 0xad, 4, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_shrd, 0xad, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 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, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_call, 0xe8, 1, SPACE_BASE, None,
     { 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 1, 0, 0, 1, 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,
@@ -4970,6 +5658,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovo, 0x40, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovno, 0x41, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4979,6 +5678,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovno, 0x41, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovb, 0x42, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4988,6 +5698,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovb, 0x42, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovc, 0x42, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4997,6 +5718,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovc, 0x42, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnae, 0x42, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5006,6 +5738,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnae, 0x42, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnb, 0x43, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5015,6 +5758,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnb, 0x43, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnc, 0x43, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5024,6 +5778,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnc, 0x43, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovae, 0x43, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5033,6 +5798,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovae, 0x43, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmove, 0x44, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5042,6 +5818,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmove, 0x44, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovz, 0x44, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5051,6 +5838,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovz, 0x44, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovne, 0x45, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5060,6 +5858,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovne, 0x45, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnz, 0x45, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5069,6 +5878,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnz, 0x45, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovbe, 0x46, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5078,6 +5898,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovbe, 0x46, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovna, 0x46, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5087,6 +5918,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovna, 0x46, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnbe, 0x47, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5096,6 +5938,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnbe, 0x47, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmova, 0x47, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5105,6 +5958,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmova, 0x47, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovs, 0x48, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5114,6 +5978,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovs, 0x48, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovns, 0x49, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5123,6 +5998,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovns, 0x49, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovp, 0x4a, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5132,6 +6018,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovp, 0x4a, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovpe, 0x4a, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5141,6 +6038,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovpe, 0x4a, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnp, 0x4b, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5150,6 +6058,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnp, 0x4b, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovpo, 0x4b, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5159,6 +6078,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovpo, 0x4b, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovl, 0x4c, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5168,6 +6098,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovl, 0x4c, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnge, 0x4c, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5177,6 +6118,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnge, 0x4c, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnl, 0x4d, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5186,6 +6138,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnl, 0x4d, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovge, 0x4d, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5195,6 +6158,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovge, 0x4d, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovle, 0x4e, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5204,6 +6178,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovle, 0x4e, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovng, 0x4e, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5213,6 +6198,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovng, 0x4e, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovnle, 0x4f, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5222,6 +6218,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovnle, 0x4f, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_cmovg, 0x4f, 2, SPACE_0F, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -5231,6 +6238,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_cmovg, 0x4f, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 7, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_fcmovb, 0xda, 2, SPACE_BASE, 0,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -27987,6 +29005,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_adcx, 0x66, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 61, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_adox, 0xf6, 2, SPACE_0F38, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -28005,6 +29034,17 @@ static const insn_template i386_optab[] =
 	  0, 0, 0, 0, 1, 0 } },
       { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
 	  0, 0, 0, 0, 0, 0 } } } },
+  { MN_adox, 0x66, 3, SPACE_EVEXMAP4, None,
+    { 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 1, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0 },
+    { { 61, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 } },
+    { { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0,
+	  0, 0, 0, 0, 1, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } },
+      { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+	  0, 0, 0, 0, 0, 0 } } } },
   { MN_rdseed, 0xc7, 1, SPACE_0F, 7,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -38106,119 +39146,60 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 80,
   i386_optab + 81,
   i386_optab + 82,
-  i386_optab + 86,
-  i386_optab + 88,
+  i386_optab + 89,
   i386_optab + 92,
-  i386_optab + 94,
-  i386_optab + 101,
-  i386_optab + 105,
-  i386_optab + 108,
+  i386_optab + 99,
+  i386_optab + 102,
   i386_optab + 112,
   i386_optab + 116,
-  i386_optab + 120,
-  i386_optab + 121,
-  i386_optab + 128,
-  i386_optab + 129,
-  i386_optab + 131,
-  i386_optab + 132,
+  i386_optab + 119,
+  i386_optab + 126,
   i386_optab + 133,
-  i386_optab + 134,
-  i386_optab + 135,
-  i386_optab + 137,
-  i386_optab + 139,
   i386_optab + 140,
   i386_optab + 141,
-  i386_optab + 142,
-  i386_optab + 143,
-  i386_optab + 144,
-  i386_optab + 145,
-  i386_optab + 146,
-  i386_optab + 147,
-  i386_optab + 148,
-  i386_optab + 149,
-  i386_optab + 150,
   i386_optab + 151,
-  i386_optab + 152,
+  i386_optab + 153,
+  i386_optab + 156,
+  i386_optab + 157,
   i386_optab + 158,
+  i386_optab + 159,
   i386_optab + 160,
   i386_optab + 162,
+  i386_optab + 164,
+  i386_optab + 165,
   i386_optab + 166,
+  i386_optab + 167,
+  i386_optab + 168,
+  i386_optab + 169,
   i386_optab + 170,
-  i386_optab + 178,
+  i386_optab + 171,
+  i386_optab + 172,
+  i386_optab + 173,
+  i386_optab + 174,
+  i386_optab + 175,
+  i386_optab + 176,
+  i386_optab + 177,
+  i386_optab + 184,
   i386_optab + 186,
-  i386_optab + 190,
-  i386_optab + 194,
-  i386_optab + 198,
-  i386_optab + 202,
-  i386_optab + 205,
-  i386_optab + 208,
-  i386_optab + 217,
-  i386_optab + 220,
+  i386_optab + 188,
+  i386_optab + 196,
+  i386_optab + 204,
+  i386_optab + 216,
   i386_optab + 228,
-  i386_optab + 231,
-  i386_optab + 237,
-  i386_optab + 239,
-  i386_optab + 241,
-  i386_optab + 243,
-  i386_optab + 245,
-  i386_optab + 246,
-  i386_optab + 247,
-  i386_optab + 248,
-  i386_optab + 249,
-  i386_optab + 250,
-  i386_optab + 251,
+  i386_optab + 236,
+  i386_optab + 244,
   i386_optab + 252,
-  i386_optab + 253,
-  i386_optab + 254,
-  i386_optab + 255,
-  i386_optab + 256,
-  i386_optab + 257,
-  i386_optab + 258,
-  i386_optab + 259,
   i386_optab + 260,
-  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 + 280,
-  i386_optab + 282,
+  i386_optab + 281,
   i386_optab + 284,
-  i386_optab + 286,
-  i386_optab + 288,
-  i386_optab + 289,
-  i386_optab + 290,
-  i386_optab + 291,
   i386_optab + 292,
-  i386_optab + 293,
-  i386_optab + 294,
   i386_optab + 295,
-  i386_optab + 296,
-  i386_optab + 297,
-  i386_optab + 298,
-  i386_optab + 299,
-  i386_optab + 300,
   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,
@@ -38229,24 +39210,42 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 316,
   i386_optab + 317,
   i386_optab + 318,
+  i386_optab + 319,
   i386_optab + 320,
+  i386_optab + 321,
   i386_optab + 322,
+  i386_optab + 323,
   i386_optab + 324,
+  i386_optab + 325,
   i386_optab + 326,
+  i386_optab + 327,
+  i386_optab + 328,
   i386_optab + 329,
+  i386_optab + 330,
+  i386_optab + 331,
   i386_optab + 332,
+  i386_optab + 333,
   i386_optab + 334,
+  i386_optab + 335,
   i386_optab + 336,
+  i386_optab + 337,
+  i386_optab + 338,
   i386_optab + 339,
+  i386_optab + 340,
+  i386_optab + 341,
   i386_optab + 342,
-  i386_optab + 345,
+  i386_optab + 344,
+  i386_optab + 346,
   i386_optab + 348,
   i386_optab + 350,
-  i386_optab + 351,
   i386_optab + 352,
+  i386_optab + 353,
   i386_optab + 354,
+  i386_optab + 355,
   i386_optab + 356,
+  i386_optab + 357,
   i386_optab + 358,
+  i386_optab + 359,
   i386_optab + 360,
   i386_optab + 361,
   i386_optab + 362,
@@ -38256,129 +39255,110 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 366,
   i386_optab + 367,
   i386_optab + 368,
+  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 + 381,
-  i386_optab + 383,
-  i386_optab + 385,
-  i386_optab + 387,
-  i386_optab + 389,
-  i386_optab + 391,
+  i386_optab + 382,
+  i386_optab + 384,
+  i386_optab + 386,
+  i386_optab + 388,
+  i386_optab + 390,
   i386_optab + 393,
-  i386_optab + 395,
-  i386_optab + 397,
-  i386_optab + 399,
+  i386_optab + 396,
+  i386_optab + 398,
+  i386_optab + 400,
   i386_optab + 403,
-  i386_optab + 405,
   i386_optab + 406,
-  i386_optab + 407,
-  i386_optab + 408,
-  i386_optab + 411,
+  i386_optab + 409,
   i386_optab + 412,
+  i386_optab + 414,
+  i386_optab + 415,
   i386_optab + 416,
   i386_optab + 418,
-  i386_optab + 419,
   i386_optab + 420,
-  i386_optab + 421,
-  i386_optab + 423,
+  i386_optab + 422,
+  i386_optab + 424,
+  i386_optab + 425,
+  i386_optab + 426,
   i386_optab + 427,
   i386_optab + 428,
+  i386_optab + 429,
+  i386_optab + 430,
+  i386_optab + 431,
   i386_optab + 432,
-  i386_optab + 433,
   i386_optab + 434,
   i386_optab + 436,
   i386_optab + 438,
-  i386_optab + 439,
   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 + 452,
+  i386_optab + 449,
+  i386_optab + 451,
   i386_optab + 453,
-  i386_optab + 456,
+  i386_optab + 455,
+  i386_optab + 457,
+  i386_optab + 459,
   i386_optab + 461,
-  i386_optab + 462,
-  i386_optab + 468,
-  i386_optab + 473,
-  i386_optab + 474,
+  i386_optab + 463,
+  i386_optab + 467,
+  i386_optab + 469,
+  i386_optab + 470,
+  i386_optab + 471,
+  i386_optab + 472,
+  i386_optab + 475,
+  i386_optab + 476,
   i386_optab + 480,
+  i386_optab + 482,
+  i386_optab + 483,
   i386_optab + 484,
   i386_optab + 485,
-  i386_optab + 488,
-  i386_optab + 493,
-  i386_optab + 494,
+  i386_optab + 487,
+  i386_optab + 491,
+  i386_optab + 492,
+  i386_optab + 496,
+  i386_optab + 497,
+  i386_optab + 498,
   i386_optab + 500,
+  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 + 511,
   i386_optab + 512,
-  i386_optab + 513,
-  i386_optab + 514,
-  i386_optab + 515,
   i386_optab + 516,
   i386_optab + 517,
-  i386_optab + 518,
-  i386_optab + 519,
   i386_optab + 520,
-  i386_optab + 521,
-  i386_optab + 522,
-  i386_optab + 523,
-  i386_optab + 524,
   i386_optab + 525,
   i386_optab + 526,
-  i386_optab + 527,
-  i386_optab + 528,
-  i386_optab + 529,
-  i386_optab + 530,
-  i386_optab + 531,
   i386_optab + 532,
-  i386_optab + 533,
-  i386_optab + 534,
-  i386_optab + 535,
+  i386_optab + 537,
   i386_optab + 538,
-  i386_optab + 541,
-  i386_optab + 542,
-  i386_optab + 543,
   i386_optab + 544,
-  i386_optab + 545,
-  i386_optab + 546,
-  i386_optab + 547,
   i386_optab + 548,
   i386_optab + 549,
-  i386_optab + 550,
-  i386_optab + 551,
   i386_optab + 552,
-  i386_optab + 553,
-  i386_optab + 554,
-  i386_optab + 555,
-  i386_optab + 556,
   i386_optab + 557,
   i386_optab + 558,
-  i386_optab + 559,
-  i386_optab + 560,
-  i386_optab + 561,
-  i386_optab + 562,
-  i386_optab + 563,
   i386_optab + 564,
-  i386_optab + 565,
-  i386_optab + 566,
-  i386_optab + 567,
-  i386_optab + 568,
   i386_optab + 569,
   i386_optab + 570,
-  i386_optab + 571,
-  i386_optab + 572,
-  i386_optab + 573,
-  i386_optab + 574,
-  i386_optab + 575,
   i386_optab + 576,
   i386_optab + 577,
   i386_optab + 578,
@@ -38403,11 +39383,7 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 597,
   i386_optab + 598,
   i386_optab + 599,
-  i386_optab + 600,
-  i386_optab + 601,
   i386_optab + 602,
-  i386_optab + 603,
-  i386_optab + 604,
   i386_optab + 605,
   i386_optab + 606,
   i386_optab + 607,
@@ -38441,7 +39417,9 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 635,
   i386_optab + 636,
   i386_optab + 637,
+  i386_optab + 638,
   i386_optab + 639,
+  i386_optab + 640,
   i386_optab + 641,
   i386_optab + 642,
   i386_optab + 643,
@@ -38495,138 +39473,160 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 691,
   i386_optab + 692,
   i386_optab + 693,
+  i386_optab + 694,
+  i386_optab + 695,
   i386_optab + 696,
+  i386_optab + 697,
+  i386_optab + 698,
   i386_optab + 699,
-  i386_optab + 702,
+  i386_optab + 700,
+  i386_optab + 701,
+  i386_optab + 703,
   i386_optab + 705,
+  i386_optab + 706,
+  i386_optab + 707,
   i386_optab + 708,
+  i386_optab + 709,
+  i386_optab + 710,
   i386_optab + 711,
   i386_optab + 712,
   i386_optab + 713,
   i386_optab + 714,
   i386_optab + 715,
-  i386_optab + 716,
   i386_optab + 717,
+  i386_optab + 719,
+  i386_optab + 721,
   i386_optab + 723,
+  i386_optab + 725,
+  i386_optab + 727,
+  i386_optab + 729,
   i386_optab + 731,
-  i386_optab + 734,
+  i386_optab + 733,
+  i386_optab + 735,
   i386_optab + 737,
-  i386_optab + 740,
+  i386_optab + 739,
+  i386_optab + 741,
   i386_optab + 743,
-  i386_optab + 746,
+  i386_optab + 745,
+  i386_optab + 747,
   i386_optab + 749,
-  i386_optab + 752,
+  i386_optab + 751,
+  i386_optab + 753,
   i386_optab + 755,
-  i386_optab + 758,
+  i386_optab + 757,
+  i386_optab + 759,
   i386_optab + 761,
-  i386_optab + 764,
+  i386_optab + 763,
+  i386_optab + 765,
   i386_optab + 767,
-  i386_optab + 770,
+  i386_optab + 769,
+  i386_optab + 771,
   i386_optab + 773,
+  i386_optab + 775,
   i386_optab + 776,
+  i386_optab + 777,
+  i386_optab + 778,
   i386_optab + 779,
+  i386_optab + 780,
+  i386_optab + 781,
   i386_optab + 782,
+  i386_optab + 783,
+  i386_optab + 784,
   i386_optab + 785,
-  i386_optab + 788,
-  i386_optab + 791,
-  i386_optab + 794,
-  i386_optab + 797,
-  i386_optab + 800,
+  i386_optab + 786,
+  i386_optab + 787,
+  i386_optab + 790,
+  i386_optab + 793,
+  i386_optab + 796,
+  i386_optab + 799,
+  i386_optab + 802,
+  i386_optab + 805,
   i386_optab + 806,
-  i386_optab + 812,
-  i386_optab + 818,
-  i386_optab + 824,
-  i386_optab + 830,
-  i386_optab + 836,
-  i386_optab + 842,
-  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 + 875,
-  i386_optab + 878,
-  i386_optab + 881,
-  i386_optab + 884,
-  i386_optab + 887,
-  i386_optab + 890,
-  i386_optab + 893,
-  i386_optab + 895,
-  i386_optab + 897,
-  i386_optab + 899,
-  i386_optab + 901,
-  i386_optab + 903,
-  i386_optab + 905,
-  i386_optab + 907,
-  i386_optab + 909,
-  i386_optab + 911,
-  i386_optab + 913,
-  i386_optab + 915,
-  i386_optab + 917,
-  i386_optab + 919,
-  i386_optab + 921,
-  i386_optab + 923,
-  i386_optab + 925,
-  i386_optab + 927,
-  i386_optab + 929,
-  i386_optab + 931,
-  i386_optab + 933,
-  i386_optab + 935,
-  i386_optab + 937,
-  i386_optab + 939,
-  i386_optab + 940,
-  i386_optab + 941,
-  i386_optab + 947,
-  i386_optab + 949,
-  i386_optab + 950,
-  i386_optab + 952,
+  i386_optab + 807,
+  i386_optab + 808,
+  i386_optab + 809,
+  i386_optab + 810,
+  i386_optab + 811,
+  i386_optab + 817,
+  i386_optab + 825,
+  i386_optab + 828,
+  i386_optab + 831,
+  i386_optab + 834,
+  i386_optab + 837,
+  i386_optab + 840,
+  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 + 876,
+  i386_optab + 879,
+  i386_optab + 882,
+  i386_optab + 885,
+  i386_optab + 888,
+  i386_optab + 891,
+  i386_optab + 894,
+  i386_optab + 900,
+  i386_optab + 906,
+  i386_optab + 912,
+  i386_optab + 918,
+  i386_optab + 924,
+  i386_optab + 930,
+  i386_optab + 936,
+  i386_optab + 942,
+  i386_optab + 945,
+  i386_optab + 948,
+  i386_optab + 951,
   i386_optab + 954,
-  i386_optab + 956,
-  i386_optab + 958,
-  i386_optab + 959,
-  i386_optab + 961,
+  i386_optab + 957,
+  i386_optab + 960,
   i386_optab + 963,
-  i386_optab + 965,
-  i386_optab + 967,
+  i386_optab + 966,
   i386_optab + 969,
-  i386_optab + 971,
-  i386_optab + 974,
-  i386_optab + 976,
-  i386_optab + 979,
+  i386_optab + 972,
+  i386_optab + 975,
+  i386_optab + 978,
   i386_optab + 981,
-  i386_optab + 983,
   i386_optab + 984,
-  i386_optab + 986,
+  i386_optab + 987,
   i386_optab + 989,
   i386_optab + 991,
   i386_optab + 993,
   i386_optab + 995,
   i386_optab + 997,
-  i386_optab + 1000,
+  i386_optab + 999,
+  i386_optab + 1001,
   i386_optab + 1003,
-  i386_optab + 1010,
-  i386_optab + 1016,
+  i386_optab + 1005,
+  i386_optab + 1007,
+  i386_optab + 1009,
+  i386_optab + 1011,
+  i386_optab + 1013,
+  i386_optab + 1015,
+  i386_optab + 1017,
   i386_optab + 1019,
-  i386_optab + 1022,
+  i386_optab + 1021,
+  i386_optab + 1023,
   i386_optab + 1025,
-  i386_optab + 1028,
+  i386_optab + 1027,
+  i386_optab + 1029,
   i386_optab + 1031,
+  i386_optab + 1033,
   i386_optab + 1034,
   i386_optab + 1035,
-  i386_optab + 1036,
-  i386_optab + 1037,
-  i386_optab + 1038,
   i386_optab + 1041,
-  i386_optab + 1042,
+  i386_optab + 1043,
   i386_optab + 1044,
   i386_optab + 1046,
   i386_optab + 1048,
   i386_optab + 1050,
-  i386_optab + 1051,
+  i386_optab + 1052,
   i386_optab + 1053,
   i386_optab + 1055,
   i386_optab + 1057,
@@ -38634,45 +39634,42 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 1061,
   i386_optab + 1063,
   i386_optab + 1065,
-  i386_optab + 1067,
-  i386_optab + 1069,
-  i386_optab + 1071,
+  i386_optab + 1068,
+  i386_optab + 1070,
   i386_optab + 1073,
   i386_optab + 1075,
   i386_optab + 1077,
-  i386_optab + 1079,
-  i386_optab + 1081,
+  i386_optab + 1078,
+  i386_optab + 1080,
   i386_optab + 1083,
   i386_optab + 1085,
   i386_optab + 1087,
   i386_optab + 1089,
   i386_optab + 1091,
-  i386_optab + 1093,
-  i386_optab + 1095,
+  i386_optab + 1094,
   i386_optab + 1097,
-  i386_optab + 1099,
-  i386_optab + 1101,
-  i386_optab + 1103,
-  i386_optab + 1105,
-  i386_optab + 1107,
-  i386_optab + 1109,
-  i386_optab + 1111,
+  i386_optab + 1104,
+  i386_optab + 1110,
   i386_optab + 1113,
-  i386_optab + 1115,
-  i386_optab + 1117,
-  i386_optab + 1120,
-  i386_optab + 1126,
+  i386_optab + 1116,
+  i386_optab + 1119,
+  i386_optab + 1122,
+  i386_optab + 1125,
   i386_optab + 1128,
+  i386_optab + 1129,
   i386_optab + 1130,
+  i386_optab + 1131,
   i386_optab + 1132,
-  i386_optab + 1134,
+  i386_optab + 1135,
   i386_optab + 1136,
   i386_optab + 1138,
   i386_optab + 1140,
-  i386_optab + 1143,
-  i386_optab + 1146,
-  i386_optab + 1148,
-  i386_optab + 1150,
+  i386_optab + 1142,
+  i386_optab + 1144,
+  i386_optab + 1145,
+  i386_optab + 1147,
+  i386_optab + 1149,
+  i386_optab + 1151,
   i386_optab + 1153,
   i386_optab + 1155,
   i386_optab + 1157,
@@ -38690,13 +39687,12 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 1181,
   i386_optab + 1183,
   i386_optab + 1185,
-  i386_optab + 1186,
-  i386_optab + 1188,
-  i386_optab + 1190,
-  i386_optab + 1192,
-  i386_optab + 1194,
-  i386_optab + 1196,
-  i386_optab + 1198,
+  i386_optab + 1187,
+  i386_optab + 1189,
+  i386_optab + 1191,
+  i386_optab + 1193,
+  i386_optab + 1195,
+  i386_optab + 1197,
   i386_optab + 1199,
   i386_optab + 1201,
   i386_optab + 1203,
@@ -38704,10 +39700,7 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 1207,
   i386_optab + 1209,
   i386_optab + 1211,
-  i386_optab + 1212,
-  i386_optab + 1213,
-  i386_optab + 1216,
-  i386_optab + 1218,
+  i386_optab + 1214,
   i386_optab + 1220,
   i386_optab + 1222,
   i386_optab + 1224,
@@ -38716,116 +39709,115 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 1230,
   i386_optab + 1232,
   i386_optab + 1234,
-  i386_optab + 1236,
-  i386_optab + 1238,
+  i386_optab + 1237,
   i386_optab + 1240,
   i386_optab + 1242,
   i386_optab + 1244,
-  i386_optab + 1246,
-  i386_optab + 1248,
-  i386_optab + 1250,
-  i386_optab + 1252,
+  i386_optab + 1247,
+  i386_optab + 1249,
+  i386_optab + 1251,
   i386_optab + 1253,
-  i386_optab + 1254,
+  i386_optab + 1255,
   i386_optab + 1257,
   i386_optab + 1259,
-  i386_optab + 1260,
   i386_optab + 1261,
-  i386_optab + 1262,
   i386_optab + 1263,
-  i386_optab + 1264,
   i386_optab + 1265,
   i386_optab + 1267,
   i386_optab + 1269,
-  i386_optab + 1270,
   i386_optab + 1271,
-  i386_optab + 1272,
   i386_optab + 1273,
-  i386_optab + 1276,
+  i386_optab + 1275,
+  i386_optab + 1277,
   i386_optab + 1279,
+  i386_optab + 1280,
   i386_optab + 1282,
-  i386_optab + 1285,
+  i386_optab + 1284,
+  i386_optab + 1286,
   i386_optab + 1288,
-  i386_optab + 1291,
-  i386_optab + 1294,
+  i386_optab + 1290,
+  i386_optab + 1292,
+  i386_optab + 1293,
+  i386_optab + 1295,
   i386_optab + 1297,
-  i386_optab + 1300,
+  i386_optab + 1299,
+  i386_optab + 1301,
   i386_optab + 1303,
+  i386_optab + 1305,
   i386_optab + 1306,
-  i386_optab + 1309,
+  i386_optab + 1307,
+  i386_optab + 1310,
   i386_optab + 1312,
-  i386_optab + 1315,
+  i386_optab + 1314,
+  i386_optab + 1316,
   i386_optab + 1318,
-  i386_optab + 1321,
+  i386_optab + 1320,
+  i386_optab + 1322,
   i386_optab + 1324,
-  i386_optab + 1327,
+  i386_optab + 1326,
+  i386_optab + 1328,
   i386_optab + 1330,
   i386_optab + 1332,
   i386_optab + 1334,
+  i386_optab + 1336,
   i386_optab + 1338,
+  i386_optab + 1340,
   i386_optab + 1342,
   i386_optab + 1344,
   i386_optab + 1346,
-  i386_optab + 1350,
-  i386_optab + 1352,
+  i386_optab + 1347,
+  i386_optab + 1348,
+  i386_optab + 1351,
+  i386_optab + 1353,
   i386_optab + 1354,
+  i386_optab + 1355,
   i386_optab + 1356,
+  i386_optab + 1357,
   i386_optab + 1358,
-  i386_optab + 1362,
+  i386_optab + 1359,
+  i386_optab + 1361,
+  i386_optab + 1363,
   i386_optab + 1364,
+  i386_optab + 1365,
   i386_optab + 1366,
+  i386_optab + 1367,
   i386_optab + 1370,
-  i386_optab + 1372,
-  i386_optab + 1374,
+  i386_optab + 1373,
   i386_optab + 1376,
-  i386_optab + 1380,
+  i386_optab + 1379,
   i386_optab + 1382,
-  i386_optab + 1384,
-  i386_optab + 1386,
+  i386_optab + 1385,
   i386_optab + 1388,
-  i386_optab + 1390,
-  i386_optab + 1392,
+  i386_optab + 1391,
   i386_optab + 1394,
-  i386_optab + 1396,
-  i386_optab + 1398,
+  i386_optab + 1397,
   i386_optab + 1400,
-  i386_optab + 1402,
-  i386_optab + 1404,
+  i386_optab + 1403,
   i386_optab + 1406,
-  i386_optab + 1408,
-  i386_optab + 1410,
+  i386_optab + 1409,
   i386_optab + 1412,
-  i386_optab + 1414,
-  i386_optab + 1416,
+  i386_optab + 1415,
   i386_optab + 1418,
-  i386_optab + 1420,
-  i386_optab + 1422,
+  i386_optab + 1421,
   i386_optab + 1424,
   i386_optab + 1426,
   i386_optab + 1428,
-  i386_optab + 1430,
   i386_optab + 1432,
-  i386_optab + 1434,
   i386_optab + 1436,
   i386_optab + 1438,
   i386_optab + 1440,
   i386_optab + 1444,
+  i386_optab + 1446,
   i386_optab + 1448,
   i386_optab + 1450,
   i386_optab + 1452,
   i386_optab + 1456,
-  i386_optab + 1457,
   i386_optab + 1458,
-  i386_optab + 1459,
   i386_optab + 1460,
-  i386_optab + 1461,
-  i386_optab + 1462,
-  i386_optab + 1463,
   i386_optab + 1464,
   i386_optab + 1466,
   i386_optab + 1468,
   i386_optab + 1470,
-  i386_optab + 1472,
   i386_optab + 1474,
   i386_optab + 1476,
   i386_optab + 1478,
@@ -38840,65 +39832,66 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 1496,
   i386_optab + 1498,
   i386_optab + 1500,
-  i386_optab + 1501,
   i386_optab + 1502,
   i386_optab + 1504,
   i386_optab + 1506,
   i386_optab + 1508,
   i386_optab + 1510,
-  i386_optab + 1511,
   i386_optab + 1512,
-  i386_optab + 1513,
   i386_optab + 1514,
-  i386_optab + 1515,
+  i386_optab + 1516,
   i386_optab + 1518,
-  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 + 1520,
+  i386_optab + 1522,
+  i386_optab + 1524,
+  i386_optab + 1526,
+  i386_optab + 1528,
+  i386_optab + 1530,
+  i386_optab + 1532,
+  i386_optab + 1534,
+  i386_optab + 1538,
+  i386_optab + 1542,
+  i386_optab + 1544,
+  i386_optab + 1546,
+  i386_optab + 1550,
   i386_optab + 1551,
+  i386_optab + 1552,
   i386_optab + 1553,
+  i386_optab + 1554,
   i386_optab + 1555,
+  i386_optab + 1556,
   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 + 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 + 1595,
-  i386_optab + 1597,
-  i386_optab + 1599,
-  i386_optab + 1601,
-  i386_optab + 1603,
+  i386_optab + 1596,
+  i386_optab + 1598,
+  i386_optab + 1600,
+  i386_optab + 1602,
+  i386_optab + 1604,
   i386_optab + 1605,
+  i386_optab + 1606,
   i386_optab + 1607,
+  i386_optab + 1608,
   i386_optab + 1609,
-  i386_optab + 1611,
-  i386_optab + 1613,
+  i386_optab + 1612,
   i386_optab + 1615,
   i386_optab + 1617,
   i386_optab + 1619,
@@ -39043,84 +40036,91 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 1897,
   i386_optab + 1899,
   i386_optab + 1901,
-  i386_optab + 1906,
-  i386_optab + 1908,
+  i386_optab + 1903,
+  i386_optab + 1905,
+  i386_optab + 1907,
+  i386_optab + 1909,
+  i386_optab + 1911,
   i386_optab + 1913,
   i386_optab + 1915,
   i386_optab + 1917,
-  i386_optab + 1922,
-  i386_optab + 1924,
-  i386_optab + 1926,
-  i386_optab + 1928,
+  i386_optab + 1919,
+  i386_optab + 1921,
+  i386_optab + 1923,
+  i386_optab + 1925,
+  i386_optab + 1927,
+  i386_optab + 1929,
+  i386_optab + 1931,
   i386_optab + 1933,
   i386_optab + 1935,
   i386_optab + 1937,
   i386_optab + 1939,
+  i386_optab + 1941,
   i386_optab + 1943,
+  i386_optab + 1945,
+  i386_optab + 1947,
   i386_optab + 1949,
   i386_optab + 1951,
-  i386_optab + 1956,
-  i386_optab + 1958,
-  i386_optab + 1960,
-  i386_optab + 1962,
-  i386_optab + 1964,
-  i386_optab + 1966,
-  i386_optab + 1968,
-  i386_optab + 1970,
-  i386_optab + 1972,
-  i386_optab + 1974,
+  i386_optab + 1953,
+  i386_optab + 1955,
+  i386_optab + 1957,
+  i386_optab + 1959,
+  i386_optab + 1961,
+  i386_optab + 1963,
+  i386_optab + 1965,
+  i386_optab + 1967,
+  i386_optab + 1969,
+  i386_optab + 1971,
+  i386_optab + 1973,
   i386_optab + 1975,
-  i386_optab + 1976,
   i386_optab + 1977,
+  i386_optab + 1979,
   i386_optab + 1981,
-  i386_optab + 1982,
   i386_optab + 1983,
-  i386_optab + 1984,
   i386_optab + 1985,
-  i386_optab + 1986,
-  i386_optab + 1988,
+  i386_optab + 1987,
   i386_optab + 1989,
-  i386_optab + 1990,
   i386_optab + 1991,
   i386_optab + 1993,
   i386_optab + 1995,
-  i386_optab + 1997,
-  i386_optab + 1999,
-  i386_optab + 2001,
-  i386_optab + 2003,
-  i386_optab + 2005,
+  i386_optab + 2000,
+  i386_optab + 2002,
   i386_optab + 2007,
   i386_optab + 2009,
   i386_optab + 2011,
-  i386_optab + 2013,
-  i386_optab + 2015,
+  i386_optab + 2016,
   i386_optab + 2018,
+  i386_optab + 2020,
   i386_optab + 2022,
-  i386_optab + 2023,
-  i386_optab + 2024,
-  i386_optab + 2026,
-  i386_optab + 2030,
-  i386_optab + 2034,
-  i386_optab + 2036,
-  i386_optab + 2040,
-  i386_optab + 2044,
+  i386_optab + 2027,
+  i386_optab + 2029,
+  i386_optab + 2031,
+  i386_optab + 2033,
+  i386_optab + 2037,
+  i386_optab + 2043,
   i386_optab + 2045,
-  i386_optab + 2046,
-  i386_optab + 2048,
   i386_optab + 2050,
   i386_optab + 2052,
   i386_optab + 2054,
+  i386_optab + 2056,
+  i386_optab + 2058,
   i386_optab + 2060,
+  i386_optab + 2062,
   i386_optab + 2064,
+  i386_optab + 2066,
   i386_optab + 2068,
+  i386_optab + 2069,
   i386_optab + 2070,
-  i386_optab + 2072,
-  i386_optab + 2074,
+  i386_optab + 2071,
+  i386_optab + 2075,
   i386_optab + 2076,
   i386_optab + 2077,
+  i386_optab + 2078,
   i386_optab + 2079,
-  i386_optab + 2081,
+  i386_optab + 2080,
+  i386_optab + 2082,
   i386_optab + 2083,
+  i386_optab + 2084,
   i386_optab + 2085,
   i386_optab + 2087,
   i386_optab + 2089,
@@ -39134,47 +40134,42 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2105,
   i386_optab + 2107,
   i386_optab + 2109,
-  i386_optab + 2111,
-  i386_optab + 2113,
-  i386_optab + 2115,
+  i386_optab + 2112,
+  i386_optab + 2116,
   i386_optab + 2117,
-  i386_optab + 2119,
-  i386_optab + 2121,
-  i386_optab + 2122,
-  i386_optab + 2123,
-  i386_optab + 2125,
-  i386_optab + 2127,
+  i386_optab + 2118,
+  i386_optab + 2120,
+  i386_optab + 2124,
   i386_optab + 2128,
-  i386_optab + 2129,
-  i386_optab + 2132,
-  i386_optab + 2135,
+  i386_optab + 2130,
+  i386_optab + 2134,
   i386_optab + 2138,
-  i386_optab + 2141,
-  i386_optab + 2143,
-  i386_optab + 2145,
-  i386_optab + 2147,
-  i386_optab + 2149,
-  i386_optab + 2151,
-  i386_optab + 2153,
+  i386_optab + 2139,
+  i386_optab + 2140,
+  i386_optab + 2142,
+  i386_optab + 2144,
+  i386_optab + 2146,
+  i386_optab + 2148,
   i386_optab + 2154,
-  i386_optab + 2155,
-  i386_optab + 2156,
-  i386_optab + 2160,
+  i386_optab + 2158,
+  i386_optab + 2162,
   i386_optab + 2164,
   i386_optab + 2166,
   i386_optab + 2168,
-  i386_optab + 2174,
-  i386_optab + 2178,
+  i386_optab + 2170,
+  i386_optab + 2171,
+  i386_optab + 2173,
+  i386_optab + 2175,
+  i386_optab + 2177,
   i386_optab + 2179,
-  i386_optab + 2180,
   i386_optab + 2181,
-  i386_optab + 2182,
   i386_optab + 2183,
-  i386_optab + 2184,
   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,
@@ -39185,194 +40180,192 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2211,
   i386_optab + 2213,
   i386_optab + 2215,
+  i386_optab + 2216,
   i386_optab + 2217,
   i386_optab + 2219,
   i386_optab + 2221,
+  i386_optab + 2222,
   i386_optab + 2223,
-  i386_optab + 2225,
   i386_optab + 2226,
-  i386_optab + 2231,
-  i386_optab + 2236,
+  i386_optab + 2229,
+  i386_optab + 2232,
+  i386_optab + 2235,
+  i386_optab + 2237,
+  i386_optab + 2239,
   i386_optab + 2241,
-  i386_optab + 2246,
-  i386_optab + 2251,
-  i386_optab + 2256,
-  i386_optab + 2261,
-  i386_optab + 2266,
-  i386_optab + 2271,
+  i386_optab + 2243,
+  i386_optab + 2245,
+  i386_optab + 2247,
+  i386_optab + 2248,
+  i386_optab + 2249,
+  i386_optab + 2250,
+  i386_optab + 2254,
+  i386_optab + 2258,
+  i386_optab + 2260,
+  i386_optab + 2262,
+  i386_optab + 2268,
+  i386_optab + 2272,
+  i386_optab + 2273,
+  i386_optab + 2274,
+  i386_optab + 2275,
   i386_optab + 2276,
-  i386_optab + 2281,
-  i386_optab + 2286,
-  i386_optab + 2288,
-  i386_optab + 2290,
-  i386_optab + 2292,
-  i386_optab + 2294,
-  i386_optab + 2296,
-  i386_optab + 2298,
-  i386_optab + 2300,
+  i386_optab + 2277,
+  i386_optab + 2278,
+  i386_optab + 2279,
+  i386_optab + 2283,
+  i386_optab + 2285,
+  i386_optab + 2287,
+  i386_optab + 2291,
+  i386_optab + 2293,
+  i386_optab + 2295,
+  i386_optab + 2297,
+  i386_optab + 2299,
   i386_optab + 2301,
   i386_optab + 2303,
   i386_optab + 2305,
   i386_optab + 2307,
   i386_optab + 2309,
   i386_optab + 2311,
-  i386_optab + 2312,
   i386_optab + 2313,
-  i386_optab + 2314,
-  i386_optab + 2318,
-  i386_optab + 2322,
-  i386_optab + 2324,
-  i386_optab + 2328,
-  i386_optab + 2332,
-  i386_optab + 2336,
+  i386_optab + 2315,
+  i386_optab + 2317,
+  i386_optab + 2319,
+  i386_optab + 2320,
+  i386_optab + 2325,
+  i386_optab + 2330,
+  i386_optab + 2335,
   i386_optab + 2340,
-  i386_optab + 2344,
-  i386_optab + 2346,
+  i386_optab + 2345,
   i386_optab + 2350,
-  i386_optab + 2352,
-  i386_optab + 2354,
-  i386_optab + 2356,
-  i386_optab + 2358,
+  i386_optab + 2355,
   i386_optab + 2360,
-  i386_optab + 2362,
-  i386_optab + 2364,
-  i386_optab + 2366,
-  i386_optab + 2367,
-  i386_optab + 2369,
-  i386_optab + 2371,
-  i386_optab + 2373,
+  i386_optab + 2365,
+  i386_optab + 2370,
   i386_optab + 2375,
-  i386_optab + 2377,
-  i386_optab + 2379,
-  i386_optab + 2381,
-  i386_optab + 2383,
+  i386_optab + 2380,
+  i386_optab + 2382,
   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 + 2392,
   i386_optab + 2394,
-  i386_optab + 2396,
-  i386_optab + 2398,
-  i386_optab + 2400,
-  i386_optab + 2402,
-  i386_optab + 2404,
+  i386_optab + 2395,
+  i386_optab + 2397,
+  i386_optab + 2399,
+  i386_optab + 2401,
+  i386_optab + 2403,
   i386_optab + 2405,
+  i386_optab + 2406,
   i386_optab + 2407,
-  i386_optab + 2409,
-  i386_optab + 2411,
-  i386_optab + 2413,
-  i386_optab + 2414,
-  i386_optab + 2415,
-  i386_optab + 2417,
-  i386_optab + 2419,
-  i386_optab + 2421,
-  i386_optab + 2423,
-  i386_optab + 2425,
-  i386_optab + 2427,
-  i386_optab + 2429,
-  i386_optab + 2431,
-  i386_optab + 2432,
-  i386_optab + 2433,
+  i386_optab + 2408,
+  i386_optab + 2412,
+  i386_optab + 2416,
+  i386_optab + 2418,
+  i386_optab + 2422,
+  i386_optab + 2426,
+  i386_optab + 2430,
   i386_optab + 2434,
-  i386_optab + 2435,
   i386_optab + 2438,
-  i386_optab + 2441,
+  i386_optab + 2440,
   i386_optab + 2444,
-  i386_optab + 2447,
+  i386_optab + 2446,
   i386_optab + 2448,
   i386_optab + 2450,
-  i386_optab + 2453,
-  i386_optab + 2455,
+  i386_optab + 2452,
+  i386_optab + 2454,
+  i386_optab + 2456,
   i386_optab + 2458,
-  i386_optab + 2459,
   i386_optab + 2460,
-  i386_optab + 2462,
-  i386_optab + 2464,
-  i386_optab + 2466,
-  i386_optab + 2468,
-  i386_optab + 2470,
-  i386_optab + 2472,
-  i386_optab + 2474,
+  i386_optab + 2461,
+  i386_optab + 2463,
+  i386_optab + 2465,
+  i386_optab + 2467,
+  i386_optab + 2469,
+  i386_optab + 2471,
+  i386_optab + 2473,
+  i386_optab + 2475,
   i386_optab + 2477,
+  i386_optab + 2478,
+  i386_optab + 2479,
+  i386_optab + 2480,
+  i386_optab + 2481,
   i386_optab + 2482,
-  i386_optab + 2487,
+  i386_optab + 2483,
+  i386_optab + 2484,
+  i386_optab + 2485,
+  i386_optab + 2486,
+  i386_optab + 2488,
+  i386_optab + 2490,
   i386_optab + 2492,
-  i386_optab + 2497,
-  i386_optab + 2500,
+  i386_optab + 2494,
+  i386_optab + 2496,
+  i386_optab + 2498,
+  i386_optab + 2499,
+  i386_optab + 2501,
+  i386_optab + 2503,
   i386_optab + 2505,
-  i386_optab + 2510,
+  i386_optab + 2507,
+  i386_optab + 2508,
+  i386_optab + 2509,
+  i386_optab + 2511,
   i386_optab + 2513,
-  i386_optab + 2516,
+  i386_optab + 2515,
+  i386_optab + 2517,
   i386_optab + 2519,
-  i386_optab + 2522,
+  i386_optab + 2521,
   i386_optab + 2523,
-  i386_optab + 2524,
+  i386_optab + 2525,
+  i386_optab + 2526,
   i386_optab + 2527,
-  i386_optab + 2530,
-  i386_optab + 2533,
-  i386_optab + 2536,
-  i386_optab + 2539,
+  i386_optab + 2528,
+  i386_optab + 2529,
+  i386_optab + 2532,
+  i386_optab + 2535,
+  i386_optab + 2538,
   i386_optab + 2541,
-  i386_optab + 2543,
-  i386_optab + 2545,
-  i386_optab + 2546,
+  i386_optab + 2542,
+  i386_optab + 2544,
   i386_optab + 2547,
-  i386_optab + 2548,
   i386_optab + 2549,
-  i386_optab + 2550,
-  i386_optab + 2555,
+  i386_optab + 2552,
+  i386_optab + 2553,
+  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 + 2571,
   i386_optab + 2576,
-  i386_optab + 2578,
-  i386_optab + 2580,
-  i386_optab + 2582,
-  i386_optab + 2584,
+  i386_optab + 2581,
   i386_optab + 2586,
-  i386_optab + 2588,
-  i386_optab + 2590,
-  i386_optab + 2592,
+  i386_optab + 2591,
   i386_optab + 2594,
-  i386_optab + 2596,
-  i386_optab + 2598,
-  i386_optab + 2600,
-  i386_optab + 2602,
+  i386_optab + 2599,
   i386_optab + 2604,
-  i386_optab + 2606,
-  i386_optab + 2608,
+  i386_optab + 2607,
   i386_optab + 2610,
-  i386_optab + 2612,
-  i386_optab + 2614,
+  i386_optab + 2613,
   i386_optab + 2616,
+  i386_optab + 2617,
   i386_optab + 2618,
-  i386_optab + 2620,
-  i386_optab + 2622,
+  i386_optab + 2621,
   i386_optab + 2624,
-  i386_optab + 2626,
-  i386_optab + 2628,
+  i386_optab + 2627,
   i386_optab + 2630,
-  i386_optab + 2632,
-  i386_optab + 2634,
-  i386_optab + 2636,
-  i386_optab + 2638,
+  i386_optab + 2633,
+  i386_optab + 2635,
+  i386_optab + 2637,
+  i386_optab + 2639,
   i386_optab + 2640,
+  i386_optab + 2641,
   i386_optab + 2642,
+  i386_optab + 2643,
   i386_optab + 2644,
-  i386_optab + 2646,
-  i386_optab + 2648,
-  i386_optab + 2650,
-  i386_optab + 2652,
+  i386_optab + 2649,
   i386_optab + 2654,
   i386_optab + 2656,
   i386_optab + 2658,
@@ -39387,11 +40380,8 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2676,
   i386_optab + 2678,
   i386_optab + 2680,
-  i386_optab + 2681,
   i386_optab + 2682,
-  i386_optab + 2683,
   i386_optab + 2684,
-  i386_optab + 2685,
   i386_optab + 2686,
   i386_optab + 2688,
   i386_optab + 2690,
@@ -39401,77 +40391,41 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2698,
   i386_optab + 2700,
   i386_optab + 2702,
-  i386_optab + 2703,
   i386_optab + 2704,
-  i386_optab + 2705,
   i386_optab + 2706,
-  i386_optab + 2707,
   i386_optab + 2708,
-  i386_optab + 2709,
   i386_optab + 2710,
-  i386_optab + 2711,
   i386_optab + 2712,
-  i386_optab + 2713,
   i386_optab + 2714,
-  i386_optab + 2715,
   i386_optab + 2716,
-  i386_optab + 2717,
   i386_optab + 2718,
-  i386_optab + 2719,
   i386_optab + 2720,
-  i386_optab + 2721,
   i386_optab + 2722,
-  i386_optab + 2723,
   i386_optab + 2724,
-  i386_optab + 2725,
   i386_optab + 2726,
-  i386_optab + 2727,
   i386_optab + 2728,
-  i386_optab + 2729,
   i386_optab + 2730,
-  i386_optab + 2731,
   i386_optab + 2732,
-  i386_optab + 2733,
   i386_optab + 2734,
-  i386_optab + 2735,
   i386_optab + 2736,
-  i386_optab + 2737,
   i386_optab + 2738,
-  i386_optab + 2739,
   i386_optab + 2740,
-  i386_optab + 2741,
   i386_optab + 2742,
-  i386_optab + 2743,
   i386_optab + 2744,
-  i386_optab + 2745,
   i386_optab + 2746,
-  i386_optab + 2747,
   i386_optab + 2748,
-  i386_optab + 2749,
   i386_optab + 2750,
-  i386_optab + 2751,
   i386_optab + 2752,
-  i386_optab + 2753,
   i386_optab + 2754,
-  i386_optab + 2755,
   i386_optab + 2756,
-  i386_optab + 2757,
   i386_optab + 2758,
-  i386_optab + 2759,
   i386_optab + 2760,
-  i386_optab + 2761,
   i386_optab + 2762,
-  i386_optab + 2763,
   i386_optab + 2764,
-  i386_optab + 2765,
   i386_optab + 2766,
-  i386_optab + 2767,
   i386_optab + 2768,
-  i386_optab + 2769,
   i386_optab + 2770,
-  i386_optab + 2771,
   i386_optab + 2772,
-  i386_optab + 2773,
   i386_optab + 2774,
   i386_optab + 2775,
   i386_optab + 2776,
@@ -39479,26 +40433,20 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2778,
   i386_optab + 2779,
   i386_optab + 2780,
-  i386_optab + 2781,
   i386_optab + 2782,
-  i386_optab + 2783,
   i386_optab + 2784,
-  i386_optab + 2785,
   i386_optab + 2786,
-  i386_optab + 2787,
   i386_optab + 2788,
-  i386_optab + 2789,
   i386_optab + 2790,
-  i386_optab + 2791,
   i386_optab + 2792,
-  i386_optab + 2793,
   i386_optab + 2794,
-  i386_optab + 2795,
   i386_optab + 2796,
   i386_optab + 2797,
   i386_optab + 2798,
   i386_optab + 2799,
+  i386_optab + 2800,
   i386_optab + 2801,
+  i386_optab + 2802,
   i386_optab + 2803,
   i386_optab + 2804,
   i386_optab + 2805,
@@ -39528,9 +40476,13 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2829,
   i386_optab + 2830,
   i386_optab + 2831,
+  i386_optab + 2832,
   i386_optab + 2833,
+  i386_optab + 2834,
   i386_optab + 2835,
+  i386_optab + 2836,
   i386_optab + 2837,
+  i386_optab + 2838,
   i386_optab + 2839,
   i386_optab + 2840,
   i386_optab + 2841,
@@ -39544,10 +40496,16 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2849,
   i386_optab + 2850,
   i386_optab + 2851,
+  i386_optab + 2852,
   i386_optab + 2853,
+  i386_optab + 2854,
+  i386_optab + 2855,
   i386_optab + 2856,
+  i386_optab + 2857,
   i386_optab + 2858,
+  i386_optab + 2859,
   i386_optab + 2860,
+  i386_optab + 2861,
   i386_optab + 2862,
   i386_optab + 2863,
   i386_optab + 2864,
@@ -39580,9 +40538,7 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2891,
   i386_optab + 2892,
   i386_optab + 2893,
-  i386_optab + 2894,
   i386_optab + 2895,
-  i386_optab + 2896,
   i386_optab + 2897,
   i386_optab + 2898,
   i386_optab + 2899,
@@ -39591,27 +40547,30 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2902,
   i386_optab + 2903,
   i386_optab + 2904,
+  i386_optab + 2905,
   i386_optab + 2906,
+  i386_optab + 2907,
   i386_optab + 2908,
   i386_optab + 2909,
   i386_optab + 2910,
+  i386_optab + 2911,
   i386_optab + 2912,
   i386_optab + 2913,
+  i386_optab + 2914,
   i386_optab + 2915,
+  i386_optab + 2916,
   i386_optab + 2917,
   i386_optab + 2918,
   i386_optab + 2919,
+  i386_optab + 2920,
   i386_optab + 2921,
+  i386_optab + 2922,
   i386_optab + 2923,
   i386_optab + 2924,
   i386_optab + 2925,
-  i386_optab + 2926,
   i386_optab + 2927,
-  i386_optab + 2928,
   i386_optab + 2929,
-  i386_optab + 2930,
   i386_optab + 2931,
-  i386_optab + 2932,
   i386_optab + 2933,
   i386_optab + 2934,
   i386_optab + 2935,
@@ -39621,25 +40580,32 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2939,
   i386_optab + 2940,
   i386_optab + 2941,
+  i386_optab + 2942,
   i386_optab + 2943,
+  i386_optab + 2944,
   i386_optab + 2945,
-  i386_optab + 2946,
   i386_optab + 2947,
-  i386_optab + 2948,
-  i386_optab + 2949,
   i386_optab + 2950,
-  i386_optab + 2951,
-  i386_optab + 2953,
-  i386_optab + 2955,
+  i386_optab + 2952,
+  i386_optab + 2954,
+  i386_optab + 2956,
   i386_optab + 2957,
   i386_optab + 2958,
   i386_optab + 2959,
+  i386_optab + 2960,
   i386_optab + 2961,
+  i386_optab + 2962,
   i386_optab + 2963,
+  i386_optab + 2964,
   i386_optab + 2965,
+  i386_optab + 2966,
   i386_optab + 2967,
+  i386_optab + 2968,
+  i386_optab + 2969,
   i386_optab + 2970,
+  i386_optab + 2971,
   i386_optab + 2972,
+  i386_optab + 2973,
   i386_optab + 2974,
   i386_optab + 2975,
   i386_optab + 2976,
@@ -39659,20 +40625,23 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 2990,
   i386_optab + 2991,
   i386_optab + 2992,
+  i386_optab + 2993,
+  i386_optab + 2994,
+  i386_optab + 2995,
+  i386_optab + 2996,
+  i386_optab + 2997,
   i386_optab + 2998,
+  i386_optab + 3000,
+  i386_optab + 3002,
+  i386_optab + 3003,
   i386_optab + 3004,
-  i386_optab + 3005,
   i386_optab + 3006,
   i386_optab + 3007,
-  i386_optab + 3008,
   i386_optab + 3009,
-  i386_optab + 3010,
   i386_optab + 3011,
   i386_optab + 3012,
   i386_optab + 3013,
-  i386_optab + 3014,
   i386_optab + 3015,
-  i386_optab + 3016,
   i386_optab + 3017,
   i386_optab + 3018,
   i386_optab + 3019,
@@ -39692,11 +40661,7 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3033,
   i386_optab + 3034,
   i386_optab + 3035,
-  i386_optab + 3036,
-  i386_optab + 3037,
   i386_optab + 3038,
-  i386_optab + 3039,
-  i386_optab + 3040,
   i386_optab + 3041,
   i386_optab + 3042,
   i386_optab + 3043,
@@ -39704,35 +40669,38 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3045,
   i386_optab + 3046,
   i386_optab + 3047,
-  i386_optab + 3048,
   i386_optab + 3049,
-  i386_optab + 3050,
   i386_optab + 3051,
-  i386_optab + 3052,
   i386_optab + 3053,
   i386_optab + 3054,
   i386_optab + 3055,
-  i386_optab + 3056,
   i386_optab + 3057,
-  i386_optab + 3058,
+  i386_optab + 3059,
   i386_optab + 3061,
   i386_optab + 3063,
   i386_optab + 3066,
-  i386_optab + 3069,
+  i386_optab + 3068,
+  i386_optab + 3070,
   i386_optab + 3071,
+  i386_optab + 3072,
+  i386_optab + 3073,
   i386_optab + 3074,
+  i386_optab + 3075,
+  i386_optab + 3076,
   i386_optab + 3077,
+  i386_optab + 3078,
+  i386_optab + 3079,
   i386_optab + 3080,
+  i386_optab + 3081,
+  i386_optab + 3082,
   i386_optab + 3083,
   i386_optab + 3084,
+  i386_optab + 3085,
+  i386_optab + 3086,
   i386_optab + 3087,
   i386_optab + 3088,
-  i386_optab + 3089,
-  i386_optab + 3090,
-  i386_optab + 3091,
-  i386_optab + 3092,
-  i386_optab + 3096,
-  i386_optab + 3098,
+  i386_optab + 3094,
+  i386_optab + 3100,
   i386_optab + 3101,
   i386_optab + 3102,
   i386_optab + 3103,
@@ -39787,47 +40755,24 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3152,
   i386_optab + 3153,
   i386_optab + 3154,
-  i386_optab + 3155,
-  i386_optab + 3156,
   i386_optab + 3157,
-  i386_optab + 3158,
   i386_optab + 3159,
-  i386_optab + 3160,
-  i386_optab + 3161,
   i386_optab + 3162,
-  i386_optab + 3163,
-  i386_optab + 3164,
   i386_optab + 3165,
-  i386_optab + 3166,
   i386_optab + 3167,
-  i386_optab + 3168,
-  i386_optab + 3169,
   i386_optab + 3170,
-  i386_optab + 3171,
-  i386_optab + 3172,
   i386_optab + 3173,
-  i386_optab + 3174,
-  i386_optab + 3175,
   i386_optab + 3176,
-  i386_optab + 3177,
-  i386_optab + 3178,
   i386_optab + 3179,
   i386_optab + 3180,
-  i386_optab + 3181,
-  i386_optab + 3182,
   i386_optab + 3183,
   i386_optab + 3184,
   i386_optab + 3185,
   i386_optab + 3186,
+  i386_optab + 3187,
   i386_optab + 3188,
-  i386_optab + 3189,
-  i386_optab + 3190,
-  i386_optab + 3191,
   i386_optab + 3192,
-  i386_optab + 3193,
   i386_optab + 3194,
-  i386_optab + 3195,
-  i386_optab + 3196,
   i386_optab + 3197,
   i386_optab + 3198,
   i386_optab + 3199,
@@ -39859,31 +40804,61 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3225,
   i386_optab + 3226,
   i386_optab + 3227,
+  i386_optab + 3228,
+  i386_optab + 3229,
   i386_optab + 3230,
+  i386_optab + 3231,
+  i386_optab + 3232,
   i386_optab + 3233,
+  i386_optab + 3234,
+  i386_optab + 3235,
   i386_optab + 3236,
+  i386_optab + 3237,
+  i386_optab + 3238,
   i386_optab + 3239,
+  i386_optab + 3240,
+  i386_optab + 3241,
   i386_optab + 3242,
+  i386_optab + 3243,
+  i386_optab + 3244,
   i386_optab + 3245,
+  i386_optab + 3246,
+  i386_optab + 3247,
   i386_optab + 3248,
+  i386_optab + 3249,
+  i386_optab + 3250,
   i386_optab + 3251,
+  i386_optab + 3252,
+  i386_optab + 3253,
   i386_optab + 3254,
+  i386_optab + 3255,
+  i386_optab + 3256,
   i386_optab + 3257,
+  i386_optab + 3258,
+  i386_optab + 3259,
   i386_optab + 3260,
+  i386_optab + 3261,
+  i386_optab + 3262,
   i386_optab + 3263,
+  i386_optab + 3264,
+  i386_optab + 3265,
   i386_optab + 3266,
+  i386_optab + 3267,
+  i386_optab + 3268,
   i386_optab + 3269,
+  i386_optab + 3270,
+  i386_optab + 3271,
   i386_optab + 3272,
   i386_optab + 3273,
   i386_optab + 3274,
   i386_optab + 3275,
   i386_optab + 3276,
+  i386_optab + 3277,
   i386_optab + 3278,
   i386_optab + 3279,
   i386_optab + 3280,
   i386_optab + 3281,
   i386_optab + 3282,
-  i386_optab + 3283,
   i386_optab + 3284,
   i386_optab + 3285,
   i386_optab + 3286,
@@ -39924,46 +40899,25 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3321,
   i386_optab + 3322,
   i386_optab + 3323,
-  i386_optab + 3324,
-  i386_optab + 3325,
   i386_optab + 3326,
-  i386_optab + 3327,
-  i386_optab + 3328,
   i386_optab + 3329,
-  i386_optab + 3330,
-  i386_optab + 3331,
   i386_optab + 3332,
-  i386_optab + 3333,
-  i386_optab + 3334,
   i386_optab + 3335,
-  i386_optab + 3336,
-  i386_optab + 3337,
   i386_optab + 3338,
-  i386_optab + 3339,
-  i386_optab + 3345,
-  i386_optab + 3351,
-  i386_optab + 3352,
+  i386_optab + 3341,
+  i386_optab + 3344,
+  i386_optab + 3347,
+  i386_optab + 3350,
   i386_optab + 3353,
-  i386_optab + 3354,
-  i386_optab + 3355,
   i386_optab + 3356,
-  i386_optab + 3357,
-  i386_optab + 3358,
   i386_optab + 3359,
-  i386_optab + 3360,
-  i386_optab + 3361,
   i386_optab + 3362,
-  i386_optab + 3363,
-  i386_optab + 3364,
   i386_optab + 3365,
-  i386_optab + 3366,
-  i386_optab + 3367,
   i386_optab + 3368,
   i386_optab + 3369,
   i386_optab + 3370,
   i386_optab + 3371,
   i386_optab + 3372,
-  i386_optab + 3373,
   i386_optab + 3374,
   i386_optab + 3375,
   i386_optab + 3376,
@@ -40004,8 +40958,14 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3411,
   i386_optab + 3412,
   i386_optab + 3413,
+  i386_optab + 3414,
+  i386_optab + 3415,
   i386_optab + 3416,
+  i386_optab + 3417,
+  i386_optab + 3418,
   i386_optab + 3419,
+  i386_optab + 3420,
+  i386_optab + 3421,
   i386_optab + 3422,
   i386_optab + 3423,
   i386_optab + 3424,
@@ -40020,20 +40980,22 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3433,
   i386_optab + 3434,
   i386_optab + 3435,
-  i386_optab + 3436,
-  i386_optab + 3437,
-  i386_optab + 3438,
   i386_optab + 3441,
-  i386_optab + 3444,
-  i386_optab + 3445,
-  i386_optab + 3446,
+  i386_optab + 3447,
+  i386_optab + 3448,
   i386_optab + 3449,
   i386_optab + 3450,
   i386_optab + 3451,
   i386_optab + 3452,
   i386_optab + 3453,
+  i386_optab + 3454,
+  i386_optab + 3455,
   i386_optab + 3456,
+  i386_optab + 3457,
+  i386_optab + 3458,
   i386_optab + 3459,
+  i386_optab + 3460,
+  i386_optab + 3461,
   i386_optab + 3462,
   i386_optab + 3463,
   i386_optab + 3464,
@@ -40045,7 +41007,9 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3470,
   i386_optab + 3471,
   i386_optab + 3472,
+  i386_optab + 3473,
   i386_optab + 3474,
+  i386_optab + 3475,
   i386_optab + 3476,
   i386_optab + 3477,
   i386_optab + 3478,
@@ -40072,20 +41036,16 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3499,
   i386_optab + 3500,
   i386_optab + 3501,
+  i386_optab + 3502,
   i386_optab + 3503,
+  i386_optab + 3504,
   i386_optab + 3505,
   i386_optab + 3506,
   i386_optab + 3507,
   i386_optab + 3508,
   i386_optab + 3509,
-  i386_optab + 3510,
-  i386_optab + 3511,
   i386_optab + 3512,
-  i386_optab + 3513,
-  i386_optab + 3514,
   i386_optab + 3515,
-  i386_optab + 3516,
-  i386_optab + 3517,
   i386_optab + 3518,
   i386_optab + 3519,
   i386_optab + 3520,
@@ -40099,43 +41059,44 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3528,
   i386_optab + 3529,
   i386_optab + 3530,
+  i386_optab + 3531,
   i386_optab + 3532,
+  i386_optab + 3533,
   i386_optab + 3534,
-  i386_optab + 3536,
-  i386_optab + 3538,
-  i386_optab + 3539,
+  i386_optab + 3537,
   i386_optab + 3540,
   i386_optab + 3541,
   i386_optab + 3542,
-  i386_optab + 3543,
-  i386_optab + 3544,
   i386_optab + 3545,
   i386_optab + 3546,
   i386_optab + 3547,
   i386_optab + 3548,
   i386_optab + 3549,
-  i386_optab + 3550,
-  i386_optab + 3551,
   i386_optab + 3552,
-  i386_optab + 3553,
   i386_optab + 3555,
-  i386_optab + 3556,
   i386_optab + 3558,
+  i386_optab + 3559,
+  i386_optab + 3560,
   i386_optab + 3561,
+  i386_optab + 3562,
   i386_optab + 3563,
   i386_optab + 3564,
   i386_optab + 3565,
+  i386_optab + 3566,
   i386_optab + 3567,
-  i386_optab + 3569,
+  i386_optab + 3568,
   i386_optab + 3570,
-  i386_optab + 3571,
   i386_optab + 3572,
   i386_optab + 3573,
   i386_optab + 3574,
   i386_optab + 3575,
+  i386_optab + 3576,
   i386_optab + 3577,
+  i386_optab + 3578,
   i386_optab + 3579,
+  i386_optab + 3580,
   i386_optab + 3581,
+  i386_optab + 3582,
   i386_optab + 3583,
   i386_optab + 3584,
   i386_optab + 3585,
@@ -40146,14 +41107,22 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3590,
   i386_optab + 3591,
   i386_optab + 3592,
+  i386_optab + 3593,
   i386_optab + 3594,
+  i386_optab + 3595,
   i386_optab + 3596,
   i386_optab + 3597,
   i386_optab + 3599,
   i386_optab + 3601,
   i386_optab + 3602,
+  i386_optab + 3603,
+  i386_optab + 3604,
+  i386_optab + 3605,
+  i386_optab + 3606,
   i386_optab + 3607,
+  i386_optab + 3608,
   i386_optab + 3609,
+  i386_optab + 3610,
   i386_optab + 3611,
   i386_optab + 3612,
   i386_optab + 3613,
@@ -40162,69 +41131,69 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3616,
   i386_optab + 3617,
   i386_optab + 3618,
+  i386_optab + 3619,
   i386_optab + 3620,
+  i386_optab + 3621,
   i386_optab + 3622,
   i386_optab + 3623,
   i386_optab + 3624,
   i386_optab + 3625,
-  i386_optab + 3627,
+  i386_optab + 3626,
+  i386_optab + 3628,
   i386_optab + 3630,
-  i386_optab + 3633,
+  i386_optab + 3632,
+  i386_optab + 3634,
+  i386_optab + 3635,
   i386_optab + 3636,
+  i386_optab + 3637,
   i386_optab + 3638,
   i386_optab + 3639,
   i386_optab + 3640,
   i386_optab + 3641,
   i386_optab + 3642,
+  i386_optab + 3643,
   i386_optab + 3644,
+  i386_optab + 3645,
   i386_optab + 3646,
   i386_optab + 3647,
   i386_optab + 3648,
   i386_optab + 3649,
-  i386_optab + 3650,
   i386_optab + 3651,
   i386_optab + 3652,
-  i386_optab + 3653,
   i386_optab + 3654,
-  i386_optab + 3656,
-  i386_optab + 3658,
+  i386_optab + 3657,
+  i386_optab + 3659,
   i386_optab + 3660,
   i386_optab + 3661,
-  i386_optab + 3662,
   i386_optab + 3663,
   i386_optab + 3665,
+  i386_optab + 3666,
   i386_optab + 3667,
+  i386_optab + 3668,
   i386_optab + 3669,
+  i386_optab + 3670,
   i386_optab + 3671,
   i386_optab + 3673,
   i386_optab + 3675,
   i386_optab + 3677,
   i386_optab + 3679,
+  i386_optab + 3680,
   i386_optab + 3681,
+  i386_optab + 3682,
   i386_optab + 3683,
   i386_optab + 3684,
   i386_optab + 3685,
   i386_optab + 3686,
   i386_optab + 3687,
   i386_optab + 3688,
-  i386_optab + 3689,
   i386_optab + 3690,
-  i386_optab + 3691,
   i386_optab + 3692,
   i386_optab + 3693,
-  i386_optab + 3694,
   i386_optab + 3695,
-  i386_optab + 3696,
   i386_optab + 3697,
   i386_optab + 3698,
-  i386_optab + 3699,
-  i386_optab + 3700,
-  i386_optab + 3701,
-  i386_optab + 3702,
   i386_optab + 3703,
-  i386_optab + 3704,
   i386_optab + 3705,
-  i386_optab + 3706,
   i386_optab + 3707,
   i386_optab + 3708,
   i386_optab + 3709,
@@ -40233,33 +41202,21 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3712,
   i386_optab + 3713,
   i386_optab + 3714,
-  i386_optab + 3715,
   i386_optab + 3716,
-  i386_optab + 3717,
   i386_optab + 3718,
   i386_optab + 3719,
   i386_optab + 3720,
   i386_optab + 3721,
-  i386_optab + 3722,
   i386_optab + 3723,
-  i386_optab + 3724,
-  i386_optab + 3725,
   i386_optab + 3726,
-  i386_optab + 3727,
-  i386_optab + 3728,
   i386_optab + 3729,
-  i386_optab + 3730,
-  i386_optab + 3731,
   i386_optab + 3732,
-  i386_optab + 3733,
   i386_optab + 3734,
   i386_optab + 3735,
   i386_optab + 3736,
   i386_optab + 3737,
   i386_optab + 3738,
-  i386_optab + 3739,
   i386_optab + 3740,
-  i386_optab + 3741,
   i386_optab + 3742,
   i386_optab + 3743,
   i386_optab + 3744,
@@ -40269,34 +41226,21 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3748,
   i386_optab + 3749,
   i386_optab + 3750,
-  i386_optab + 3751,
   i386_optab + 3752,
-  i386_optab + 3753,
   i386_optab + 3754,
-  i386_optab + 3755,
   i386_optab + 3756,
   i386_optab + 3757,
   i386_optab + 3758,
   i386_optab + 3759,
-  i386_optab + 3760,
   i386_optab + 3761,
-  i386_optab + 3762,
   i386_optab + 3763,
-  i386_optab + 3764,
   i386_optab + 3765,
-  i386_optab + 3766,
   i386_optab + 3767,
-  i386_optab + 3768,
   i386_optab + 3769,
-  i386_optab + 3770,
   i386_optab + 3771,
-  i386_optab + 3772,
   i386_optab + 3773,
-  i386_optab + 3774,
   i386_optab + 3775,
-  i386_optab + 3776,
   i386_optab + 3777,
-  i386_optab + 3778,
   i386_optab + 3779,
   i386_optab + 3780,
   i386_optab + 3781,
@@ -40314,55 +41258,88 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3793,
   i386_optab + 3794,
   i386_optab + 3795,
+  i386_optab + 3796,
+  i386_optab + 3797,
   i386_optab + 3798,
   i386_optab + 3799,
   i386_optab + 3800,
+  i386_optab + 3801,
+  i386_optab + 3802,
   i386_optab + 3803,
   i386_optab + 3804,
   i386_optab + 3805,
+  i386_optab + 3806,
   i386_optab + 3807,
   i386_optab + 3808,
   i386_optab + 3809,
   i386_optab + 3810,
+  i386_optab + 3811,
   i386_optab + 3812,
   i386_optab + 3813,
   i386_optab + 3814,
   i386_optab + 3815,
+  i386_optab + 3816,
   i386_optab + 3817,
   i386_optab + 3818,
   i386_optab + 3819,
   i386_optab + 3820,
+  i386_optab + 3821,
+  i386_optab + 3822,
   i386_optab + 3823,
   i386_optab + 3824,
   i386_optab + 3825,
   i386_optab + 3826,
   i386_optab + 3827,
+  i386_optab + 3828,
+  i386_optab + 3829,
   i386_optab + 3830,
+  i386_optab + 3831,
+  i386_optab + 3832,
   i386_optab + 3833,
+  i386_optab + 3834,
+  i386_optab + 3835,
   i386_optab + 3836,
+  i386_optab + 3837,
+  i386_optab + 3838,
   i386_optab + 3839,
+  i386_optab + 3840,
+  i386_optab + 3841,
   i386_optab + 3842,
   i386_optab + 3843,
   i386_optab + 3844,
   i386_optab + 3845,
   i386_optab + 3846,
+  i386_optab + 3847,
   i386_optab + 3848,
+  i386_optab + 3849,
   i386_optab + 3850,
   i386_optab + 3851,
   i386_optab + 3852,
   i386_optab + 3853,
+  i386_optab + 3854,
+  i386_optab + 3855,
   i386_optab + 3856,
+  i386_optab + 3857,
+  i386_optab + 3858,
   i386_optab + 3859,
+  i386_optab + 3860,
+  i386_optab + 3861,
   i386_optab + 3862,
+  i386_optab + 3863,
+  i386_optab + 3864,
   i386_optab + 3865,
+  i386_optab + 3866,
+  i386_optab + 3867,
   i386_optab + 3868,
   i386_optab + 3869,
   i386_optab + 3870,
   i386_optab + 3871,
+  i386_optab + 3872,
   i386_optab + 3873,
   i386_optab + 3874,
   i386_optab + 3875,
   i386_optab + 3876,
+  i386_optab + 3877,
   i386_optab + 3878,
   i386_optab + 3879,
   i386_optab + 3880,
@@ -40370,46 +41347,109 @@ static const insn_template *const i386_op_sets[] =
   i386_optab + 3882,
   i386_optab + 3883,
   i386_optab + 3884,
+  i386_optab + 3885,
   i386_optab + 3886,
+  i386_optab + 3887,
   i386_optab + 3888,
+  i386_optab + 3889,
   i386_optab + 3890,
-  i386_optab + 3892,
+  i386_optab + 3891,
   i386_optab + 3894,
+  i386_optab + 3895,
   i386_optab + 3896,
-  i386_optab + 3898,
+  i386_optab + 3899,
   i386_optab + 3900,
-  i386_optab + 3902,
+  i386_optab + 3901,
+  i386_optab + 3903,
   i386_optab + 3904,
+  i386_optab + 3905,
   i386_optab + 3906,
   i386_optab + 3908,
+  i386_optab + 3909,
   i386_optab + 3910,
-  i386_optab + 3912,
+  i386_optab + 3911,
+  i386_optab + 3913,
   i386_optab + 3914,
+  i386_optab + 3915,
   i386_optab + 3916,
-  i386_optab + 3918,
+  i386_optab + 3919,
   i386_optab + 3920,
+  i386_optab + 3921,
   i386_optab + 3922,
-  i386_optab + 3924,
+  i386_optab + 3923,
   i386_optab + 3926,
-  i386_optab + 3928,
-  i386_optab + 3930,
+  i386_optab + 3929,
   i386_optab + 3932,
-  i386_optab + 3934,
-  i386_optab + 3936,
+  i386_optab + 3935,
   i386_optab + 3938,
+  i386_optab + 3939,
   i386_optab + 3940,
+  i386_optab + 3941,
   i386_optab + 3942,
   i386_optab + 3944,
-  i386_optab + 3945,
   i386_optab + 3946,
   i386_optab + 3947,
+  i386_optab + 3948,
   i386_optab + 3949,
-  i386_optab + 3951,
-  i386_optab + 3953,
+  i386_optab + 3952,
   i386_optab + 3955,
-  i386_optab + 3957,
   i386_optab + 3958,
-  i386_optab + 3959,
+  i386_optab + 3961,
+  i386_optab + 3964,
+  i386_optab + 3965,
+  i386_optab + 3966,
+  i386_optab + 3967,
+  i386_optab + 3969,
+  i386_optab + 3970,
+  i386_optab + 3971,
+  i386_optab + 3972,
+  i386_optab + 3974,
+  i386_optab + 3975,
+  i386_optab + 3976,
+  i386_optab + 3977,
+  i386_optab + 3978,
+  i386_optab + 3979,
+  i386_optab + 3980,
+  i386_optab + 3982,
+  i386_optab + 3984,
+  i386_optab + 3986,
+  i386_optab + 3988,
+  i386_optab + 3990,
+  i386_optab + 3992,
+  i386_optab + 3994,
+  i386_optab + 3996,
+  i386_optab + 3998,
+  i386_optab + 4000,
+  i386_optab + 4002,
+  i386_optab + 4004,
+  i386_optab + 4006,
+  i386_optab + 4008,
+  i386_optab + 4010,
+  i386_optab + 4012,
+  i386_optab + 4014,
+  i386_optab + 4016,
+  i386_optab + 4018,
+  i386_optab + 4020,
+  i386_optab + 4022,
+  i386_optab + 4024,
+  i386_optab + 4026,
+  i386_optab + 4028,
+  i386_optab + 4030,
+  i386_optab + 4032,
+  i386_optab + 4034,
+  i386_optab + 4036,
+  i386_optab + 4038,
+  i386_optab + 4040,
+  i386_optab + 4041,
+  i386_optab + 4042,
+  i386_optab + 4043,
+  i386_optab + 4045,
+  i386_optab + 4047,
+  i386_optab + 4049,
+  i386_optab + 4051,
+  i386_optab + 4053,
+  i386_optab + 4054,
+  i386_optab + 4055,
 };
 
 /* i386 mnemonics table.  */
