[binutils-gdb] x86: fold F16C templates with their AVX512VL counterparts

Jan Beulich via Binutils-cvs <[email protected]> Fri, 24 Jul 2026 06:30:53 +0000 (GMT)
Newsgroups gmane.comp.gnu.binutils.cvs
Message-ID <[email protected]>
https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D1f0b25dbcbf4=
b980474d0a2caa070680a4275700

commit 1f0b25dbcbf4b980474d0a2caa070680a4275700
Author: Jan Beulich <[email protected]>
Date:   Fri Jul 24 08:27:34 2026 +0200

    x86: fold F16C templates with their AVX512VL counterparts
   =20
    It's not quite clear why this wasn't done so far. These, conceptually,
    aren't any different from the FMA ones.
   =20
    Doing so actually made me notice a flaw in FMA template handling, which=
 is
    being fixed alongside making the necessary changes to accommodate F16C:
    Both features aren't prereqs of AVX512F. When they're disabled, enabling
    AVX512VL would still not allow the 128- and 256-bit forms to assemble.

Diff:
---
 gas/config/tc-i386.c                    |  19 +-
 gas/testsuite/gas/i386/avx512vl-plain.l |  48 +++--
 gas/testsuite/gas/i386/avx512vl-plain.s |   2 +
 opcodes/i386-opc.tbl                    |  19 +-
 opcodes/i386-tbl.h                      | 370 ++++++++++++++--------------=
----
 5 files changed, 213 insertions(+), 245 deletions(-)

diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index c5137e7d039..103b782dc31 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -2317,14 +2317,18 @@ cpu_flags_match (const insn_template *t)
     {
       /* Dual AVX/AVX512 templates need to retain AVX512* only if we alrea=
dy
 	 know that EVEX encoding will be needed.  */
-      if ((any.bitfield.cpuavx || any.bitfield.cpuavx2 || any.bitfield.cpu=
fma)
+      if ((any.bitfield.cpuavx || any.bitfield.cpuavx2
+	   || any.bitfield.cpufma || any.bitfield.cpuf16c)
 	  && (any.bitfield.cpuavx512f || any.bitfield.cpuavx512vl))
 	{
-	  if (need_evex_encoding (t))
+	  if (need_evex_encoding (t)
+	      || (any.bitfield.cpufma && !cpu_arch_flags.bitfield.cpufma)
+	      || (any.bitfield.cpuf16c && !cpu_arch_flags.bitfield.cpuf16c))
 	    {
 	      any.bitfield.cpuavx =3D 0;
 	      any.bitfield.cpuavx2 =3D 0;
 	      any.bitfield.cpufma =3D 0;
+	      any.bitfield.cpuf16c =3D 0;
 	    }
 	  /* need_evex_encoding(t) isn't reliable before operands were
 	     parsed.  */
@@ -4235,10 +4239,12 @@ install_template (const insn_template *t)
   if (t->opcode_modifier.vex && t->opcode_modifier.evex)
     {
       if ((maybe_cpu (t, CpuAVX) || maybe_cpu (t, CpuAVX2)
-	   || maybe_cpu (t, CpuFMA))
+	   || maybe_cpu (t, CpuFMA) || maybe_cpu (t, CpuF16C))
 	  && (maybe_cpu (t, CpuAVX512F) || maybe_cpu (t, CpuAVX512VL)))
 	{
-	  if (need_evex_encoding (t))
+	  if (need_evex_encoding (t)
+	      || (maybe_cpu (t, CpuFMA) && !cpu_arch_flags.bitfield.cpufma)
+	      || (maybe_cpu (t, CpuF16C) && !cpu_arch_flags.bitfield.cpuf16c))
 	    {
 	      i.tm.opcode_modifier.vex =3D 0;
 	      i.tm.cpu.bitfield.cpuavx512f =3D i.tm.cpu_any.bitfield.cpuavx512f;
@@ -8802,7 +8808,10 @@ check_VecOperands (const insn_template *t)
   if (!cpu_flags_all_zero (&cpu)
       && !cpu.bitfield.cpuavx512vl
       && !cpu_arch_flags.bitfield.cpuavx512vl
-      && (!t->opcode_modifier.vex || need_evex_encoding (t)))
+      && (!t->opcode_modifier.vex || need_evex_encoding (t)
+	  /* Note: No need to check F16C here.  Those insns have distinct
+	     templates for distinct VEX.L / EVEX.L'L.  */
+	  || (maybe_cpu (t, CpuFMA) && !cpu_arch_flags.bitfield.cpufma)))
     {
       for (op =3D 0; op < t->operands; ++op)
 	{
diff --git a/gas/testsuite/gas/i386/avx512vl-plain.l b/gas/testsuite/gas/i3=
86/avx512vl-plain.l
index 248d2947424..44112b88535 100644
--- a/gas/testsuite/gas/i386/avx512vl-plain.l
+++ b/gas/testsuite/gas/i386/avx512vl-plain.l
@@ -1,8 +1,8 @@
 .*: Assembler messages:
 .*:5: Error: .*
-.*:6: Error: .*
-.*:7: Error: .*
-.*:20: Error: .*
+.*:8: Error: .*
+.*:9: Error: .*
+.*:22: Error: .*
 GAS LISTING .*
=20
=20
@@ -11,23 +11,27 @@ GAS LISTING .*
 [ 	]*3[ 	]+\.arch \.avx512vl
 [ 	]*4[ 	]+_start:
 [ 	]*5[ 	]+\{evex\} vaesenc[ 	]+%ymm1, %ymm2, %ymm3
-[ 	]*6[ 	]+vgf2p8mulb[ 	]+%ymm1, %ymm2, %ymm3\{%k4\}
-[ 	]*7[ 	]+\{evex\} vpclmulqdq[ 	]+\$0, %ymm1, %ymm2, %ymm3
-[ 	]*8[ 	]*
-[ 	]*9[ 	]+\.arch \.vaes
-[ 	]*10[ 	]+\?\?\?\? 62F26D28[ 	]+\{evex\} vaesenc[ 	]+%ymm1, %ymm2, %ymm3
-[ 	]*10[ 	]+DCD9
-[ 	]*11[ 	]*
-[ 	]*12[ 	]+\.arch \.gfni
-[ 	]*13[ 	]+\?\?\?\? 62F26D2C[ 	]+vgf2p8mulb[ 	]+%ymm1, %ymm2, %ymm3\{%k4\}
-[ 	]*13[ 	]+CFD9
-[ 	]*14[ 	]*
-[ 	]*15[ 	]+\.arch \.vpclmulqdq
-[ 	]*16[ 	]+\?\?\?\? 62F36D28[ 	]+\{evex\} vpclmulqdq[ 	]+\$0, %ymm1, %ymm=
2, %ymm3
-[ 	]*16[ 	]+44D900
-[ 	]*17[ 	]*
-[ 	]*18[ 	]+\.arch generic32
-[ 	]*19[ 	]+\.arch \.avx512f
-[ 	]*20[ 	]+\{evex\}[ 	]+vpermd[ 	]+%ymm1, %ymm2, %ymm3
-[ 	]*21[ 	]+\?\?\?\? C4E26D36[ 	]+vpermd[ 	]+%ymm1, %ymm2, %ymm3
+[ 	]*6[ 	]+\?\?\?\? 62F27D08[ 	]+vcvtph2ps[ 	]+%xmm1, %xmm2
+[ 	]*6[ 	]+13D1
+[ 	]*7[ 	]+\?\?\?\? 62F26D08[ 	]+vfmadd132ps[ 	]+%xmm1, %xmm2, %xmm3
+[ 	]*7[ 	]+98D9
+[ 	]*8[ 	]+vgf2p8mulb[ 	]+%ymm1, %ymm2, %ymm3\{%k4\}
+[ 	]*9[ 	]+\{evex\} vpclmulqdq[ 	]+\$0, %ymm1, %ymm2, %ymm3
+[ 	]*10[ 	]*
+[ 	]*11[ 	]+\.arch \.vaes
+[ 	]*12[ 	]+\?\?\?\? 62F26D28[ 	]+\{evex\} vaesenc[ 	]+%ymm1, %ymm2, %ymm3
+[ 	]*12[ 	]+DCD9
+[ 	]*13[ 	]*
+[ 	]*14[ 	]+\.arch \.gfni
+[ 	]*15[ 	]+\?\?\?\? 62F26D2C[ 	]+vgf2p8mulb[ 	]+%ymm1, %ymm2, %ymm3\{%k4\}
+[ 	]*15[ 	]+CFD9
+[ 	]*16[ 	]*
+[ 	]*17[ 	]+\.arch \.vpclmulqdq
+[ 	]*18[ 	]+\?\?\?\? 62F36D28[ 	]+\{evex\} vpclmulqdq[ 	]+\$0, %ymm1, %ymm=
2, %ymm3
+[ 	]*18[ 	]+44D900
+[ 	]*19[ 	]*
+[ 	]*20[ 	]+\.arch generic32
+[ 	]*21[ 	]+\.arch \.avx512f
+[ 	]*22[ 	]+\{evex\}[ 	]+vpermd[ 	]+%ymm1, %ymm2, %ymm3
+[ 	]*23[ 	]+\?\?\?\? C4E26D36[ 	]+vpermd[ 	]+%ymm1, %ymm2, %ymm3
 #pass
diff --git a/gas/testsuite/gas/i386/avx512vl-plain.s b/gas/testsuite/gas/i3=
86/avx512vl-plain.s
index a19e3eb5f4b..dfb9e1db787 100644
--- a/gas/testsuite/gas/i386/avx512vl-plain.s
+++ b/gas/testsuite/gas/i386/avx512vl-plain.s
@@ -3,6 +3,8 @@
 	.arch .avx512vl
 _start:
 	{evex} vaesenc		%ymm1, %ymm2, %ymm3
+	       vcvtph2ps	%xmm1, %xmm2
+	       vfmadd132ps	%xmm1, %xmm2, %xmm3
 	       vgf2p8mulb	%ymm1, %ymm2, %ymm3{%k4}
 	{evex} vpclmulqdq	$0, %ymm1, %ymm2, %ymm3
=20
diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl
index 7042ca4512e..ae875f22b85 100644
--- a/opcodes/i386-opc.tbl
+++ b/opcodes/i386-opc.tbl
@@ -1922,17 +1922,20 @@ vgf2p8affineinvqb, 0x66cf, AVX&GFNI, Modrm|Vex|Spac=
e0F3A|Src1VVVV|VexW1|CheckOpe
 vgf2p8affineqb, 0x66ce, AVX&GFNI, Modrm|Vex|Space0F3A|Src1VVVV|VexW1|Check=
OperandSize|NoSuf, { Imm8, Unspecified|BaseIndex|RegXMM|RegYMM, RegXMM|RegY=
MM, RegXMM|RegYMM }
 vgf2p8mulb, 0x66cf, GFNI&(AVX|AVX512F), Modrm|Vex|EVexDYN|Masking|Space0F3=
8|Src1VVVV|VexW0|Disp8ShiftVL|CheckOperandSize|NoSuf, { RegXMM|RegYMM|RegZM=
M|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
=20
-// FSGSBASE, RDRND and F16C
+// FSGSBASE and RDRND
=20
 rdfsbase, 0xf30fae/0, FSGSBase, Modrm|IgnoreSize|NoSuf, { Reg32|Reg64 }
 rdgsbase, 0xf30fae/1, FSGSBase, Modrm|IgnoreSize|NoSuf, { Reg32|Reg64 }
 rdrand, 0xfc7/6, RdRnd, Modrm|NoSuf, { Reg16|Reg32|Reg64 }
 wrfsbase, 0xf30fae/2, FSGSBase, Modrm|IgnoreSize|NoSuf, { Reg32|Reg64 }
 wrgsbase, 0xf30fae/3, FSGSBase, Modrm|IgnoreSize|NoSuf, { Reg32|Reg64 }
-vcvtph2ps, 0x6613, F16C, Modrm|Vex|Space0F38|VexW0|NoSuf, { Qword|Unspecif=
ied|BaseIndex|RegXMM, RegXMM }
-vcvtph2ps, 0x6613, F16C, Modrm|Vex=3D2|Space0F38|VexW=3D1|NoSuf, { Unspeci=
fied|BaseIndex|RegXMM, RegYMM }
-vcvtps2ph, 0x661d, F16C, Modrm|Vex|Space0F3A|VexW0|NoSuf, { Imm8, RegXMM, =
Qword|Unspecified|BaseIndex|RegXMM }
-vcvtps2ph, 0x661d, F16C, Modrm|Vex=3D2|Space0F3A|VexW=3D1|NoSuf, { Imm8, R=
egYMM, Unspecified|BaseIndex|RegXMM }
+
+// F16C instructions
+
+vcvtph2ps, 0x6613, F16C|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F38|V=
exW0|Disp8MemShift=3D3|NoSuf, { Qword|Unspecified|BaseIndex|RegXMM, RegXMM }
+vcvtph2ps, 0x6613, F16C|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F38|V=
exW0|Disp8MemShift=3D4|NoSuf, { Unspecified|BaseIndex|RegXMM, RegYMM }
+vcvtps2ph, 0x661d, F16C|AVX512VL, Modrm|Vex128|EVex128|Masking|Space0F3A|V=
exW0|Disp8MemShift=3D3|NoSuf, { Imm8, RegXMM, Qword|Unspecified|BaseIndex|R=
egXMM }
+vcvtps2ph, 0x661d, F16C|AVX512VL, Modrm|Vex256|EVex256|Masking|Space0F3A|V=
exW0|Disp8MemShift=3D4|NoSuf, { Imm8, RegYMM, Unspecified|BaseIndex|RegXMM }
=20
 // FMA instructions
=20
@@ -2655,15 +2658,9 @@ vcvtdq2pd, 0xF3E6, AVX512VL, Modrm|EVex256|Masking|S=
pace0F|VexW0|Broadcast|Disp8
 vcvtudq2pd, 0xF37A, AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcas=
t|Disp8MemShift=3D3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegX=
MM }
 vcvtudq2pd, 0xF37A, AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcas=
t|Disp8MemShift=3D4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
=20
-vcvtph2ps, 0x6613, AVX512VL, Modrm|EVex=3D2|Masking|Space0F38|VexW0|Disp8M=
emShift=3D3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
-vcvtph2ps, 0x6613, AVX512VL, Modrm|EVex=3D3|Masking|Space0F38|VexW=3D1|Dis=
p8MemShift=3D4|NoSuf, { RegXMM|Unspecified|BaseIndex, RegYMM }
-
 vcvtps2pd, 0x5A, AVX512VL, Modrm|EVex128|Masking|Space0F|VexW0|Broadcast|D=
isp8MemShift=3D3|NoSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM }
 vcvtps2pd, 0x5A, AVX512VL, Modrm|EVex256|Masking|Space0F|VexW0|Broadcast|D=
isp8MemShift=3D4|NoSuf, { RegXMM|Dword|Unspecified|BaseIndex, RegYMM }
=20
-vcvtps2ph, 0x661D, AVX512VL, Modrm|EVex128|Masking|Space0F3A|VexW0|Disp8Me=
mShift=3D3|NoSuf, { Imm8, RegXMM, RegXMM|Qword|Unspecified|BaseIndex }
-vcvtps2ph, 0x661D, AVX512VL, Modrm|EVex256|Masking|Space0F3A|VexW0|Disp8Me=
mShift=3D4|NoSuf, { Imm8, RegYMM, RegXMM|Unspecified|BaseIndex }
-
 vmovddup, 0xF212, AVX512VL, Modrm|EVex=3D2|Masking|Space0F|VexW1|Disp8MemS=
hift=3D3|NoSuf, { RegXMM|Qword|Unspecified|BaseIndex, RegXMM }
=20
 vp<movn>db, 0xf3<movn:opc>1, AVX512VL, Modrm|EVex128|Masking|Space0F38|Vex=
W0|Disp8MemShift=3D2|NoSuf, { RegXMM, RegXMM|Dword|Unspecified|BaseIndex }
diff --git a/opcodes/i386-tbl.h b/opcodes/i386-tbl.h
index 5435f500028..429e5016778 100644
--- a/opcodes/i386-tbl.h
+++ b/opcodes/i386-tbl.h
@@ -31942,20 +31942,20 @@ static const insn_template i386_optab[] =3D
 	  0, 0, 0, 0, 0, 0 } } } },
   { MN_vcvtph2ps, 0x13, 2, SPACE_0F38, None,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+      0, 0, 0, 1, 0, 1, 1, 0, 0, 2, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0,
       0, 0 },
-    { { 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { 60, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } },
     { { { 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
 	  1, 0, 0, 0, 1, 0 } },
       { { 8, 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 } } } },
   { MN_vcvtph2ps, 0x13, 2, SPACE_0F38, None,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+      0, 0, 0, 2, 0, 1, 1, 0, 0, 3, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0,
       0, 0 },
-    { { 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { 60, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } },
     { { { 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
 	  1, 0, 0, 0, 1, 0 } },
       { { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -31970,32 +31970,12 @@ static const insn_template i386_optab[] =3D
 	  0, 1, 0, 0, 1, 0 } },
       { { 8, 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 } } } },
-  { MN_vcvtph2ps, 0x13, 2, SPACE_0F38, None,
-    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0,
-      0, 0 },
-    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } },
-    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-	  1, 0, 0, 0, 1, 0 } },
-      { { 8, 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 } } } },
-  { MN_vcvtph2ps, 0x13, 2, SPACE_0F38, None,
-    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 0, 0, 1, 1, 0, 0, 3, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0,
-      0, 0 },
-    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } },
-    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
-	  1, 0, 0, 0, 1, 0 } },
-      { { 8, 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 } } } },
   { MN_vcvtps2ph, 0x1d, 3, SPACE_0F3A, None,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+      0, 0, 0, 1, 0, 1, 1, 0, 0, 2, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0,
       0, 0 },
-    { { 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { 60, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } },
     { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	  0, 0, 0, 0, 0, 0 } },
       { { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -32004,10 +31984,10 @@ static const insn_template i386_optab[] =3D
 	  1, 0, 0, 0, 1, 0 } } } },
   { MN_vcvtps2ph, 0x1d, 3, SPACE_0F3A, None,
     { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+      0, 0, 0, 2, 0, 1, 1, 0, 0, 3, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0,
       0, 0 },
-    { { 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+    { { 60, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } },
     { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	  0, 0, 0, 0, 0, 0 } },
       { { 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -32026,30 +32006,6 @@ static const insn_template i386_optab[] =3D
 	  0, 0, 1, 0, 0, 0 } },
       { { 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
 	  0, 1, 0, 0, 1, 0 } } } },
-  { MN_vcvtps2ph, 0x1d, 3, SPACE_0F3A, None,
-    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0,
-      0, 0 },
-    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } },
-    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	  0, 0, 0, 0, 0, 0 } },
-      { { 8, 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 } },
-      { { 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0,
-	  1, 0, 0, 0, 1, 0 } } } },
-  { MN_vcvtps2ph, 0x1d, 3, SPACE_0F3A, None,
-    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
-      0, 0, 0, 0, 0, 1, 1, 0, 0, 3, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0,
-      0, 0 },
-    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } },
-    { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
-    { { { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	  0, 0, 0, 0, 0, 0 } },
-      { { 8, 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 } },
-      { { 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
-	  1, 0, 0, 0, 1, 0 } } } },
   { MN_vfmadd132ps, 0x88 | 0x10, 3, SPACE_0F38, None,
     { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
       0, 0, 0, 1, 1, 1, 1, 0, 0, 5, 1, 3, 1, 1, 7, 0, 0, 0, 0, 0,
@@ -48363,161 +48319,161 @@ static const i386_op_off_t i386_op_sets[] =3D
   3038, 3041, 3046, 3051, 3056, 3061, 3064, 3069,
   3074, 3076, 3078, 3080, 3082, 3083, 3084, 3086,
   3088, 3090, 3092, 3094, 3096, 3098, 3099, 3100,
-  3101, 3102, 3103, 3104, 3109, 3114, 3115, 3116,
-  3117, 3118, 3119, 3120, 3121, 3122, 3123, 3124,
-  3125, 3126, 3127, 3128, 3129, 3130, 3131, 3132,
-  3133, 3134, 3135, 3136, 3137, 3138, 3139, 3140,
-  3141, 3142, 3143, 3144, 3145, 3146, 3147, 3148,
-  3149, 3150, 3151, 3152, 3153, 3154, 3155, 3156,
-  3157, 3158, 3159, 3160, 3161, 3162, 3163, 3164,
-  3165, 3166, 3167, 3168, 3169, 3170, 3171, 3172,
-  3173, 3174, 3175, 3176, 3177, 3178, 3179, 3180,
-  3181, 3182, 3183, 3184, 3185, 3186, 3187, 3188,
-  3189, 3190, 3191, 3192, 3193, 3194, 3195, 3196,
-  3197, 3198, 3199, 3200, 3201, 3202, 3203, 3204,
-  3205, 3206, 3207, 3208, 3209, 3210, 3211, 3212,
-  3213, 3214, 3215, 3216, 3217, 3218, 3219, 3220,
-  3221, 3222, 3223, 3224, 3225, 3226, 3227, 3228,
-  3229, 3230, 3231, 3232, 3233, 3234, 3235, 3236,
-  3237, 3238, 3239, 3240, 3241, 3242, 3243, 3244,
-  3245, 3246, 3247, 3248, 3249, 3250, 3251, 3252,
-  3253, 3254, 3255, 3256, 3257, 3258, 3259, 3260,
-  3261, 3262, 3263, 3264, 3265, 3266, 3267, 3268,
-  3269, 3270, 3271, 3272, 3273, 3274, 3275, 3276,
-  3277, 3278, 3279, 3280, 3281, 3282, 3283, 3284,
-  3285, 3286, 3287, 3288, 3289, 3290, 3291, 3292,
-  3293, 3294, 3295, 3296, 3297, 3298, 3299, 3300,
-  3301, 3302, 3303, 3304, 3305, 3306, 3307, 3308,
-  3309, 3310, 3311, 3312, 3313, 3314, 3315, 3317,
-  3319, 3320, 3321, 3322, 3323, 3324, 3325, 3326,
-  3327, 3328, 3329, 3330, 3331, 3332, 3333, 3334,
-  3335, 3336, 3337, 3338, 3339, 3340, 3341, 3342,
-  3343, 3344, 3345, 3346, 3347, 3349, 3351, 3353,
-  3355, 3356, 3357, 3358, 3359, 3360, 3361, 3362,
-  3363, 3364, 3365, 3366, 3367, 3368, 3370, 3371,
-  3372, 3373, 3375, 3376, 3377, 3378, 3379, 3380,
-  3381, 3382, 3383, 3384, 3385, 3386, 3387, 3388,
-  3389, 3390, 3391, 3392, 3393, 3394, 3395, 3396,
-  3397, 3398, 3399, 3400, 3401, 3402, 3403, 3404,
-  3405, 3406, 3407, 3408, 3409, 3410, 3411, 3412,
-  3413, 3414, 3415, 3416, 3418, 3420, 3421, 3422,
-  3424, 3425, 3427, 3429, 3430, 3431, 3433, 3435,
-  3437, 3439, 3440, 3441, 3442, 3443, 3444, 3445,
-  3446, 3447, 3448, 3449, 3450, 3451, 3452, 3453,
-  3454, 3455, 3456, 3457, 3458, 3459, 3460, 3461,
-  3462, 3463, 3466, 3469, 3470, 3471, 3472, 3473,
-  3474, 3475, 3477, 3479, 3481, 3482, 3483, 3484,
-  3485, 3486, 3487, 3489, 3490, 3491, 3492, 3493,
-  3494, 3495, 3496, 3497, 3499, 3501, 3502, 3503,
-  3504, 3505, 3506, 3507, 3508, 3509, 3510, 3511,
-  3514, 3517, 3518, 3519, 3520, 3521, 3522, 3523,
-  3524, 3525, 3526, 3527, 3528, 3529, 3530, 3531,
-  3532, 3533, 3534, 3535, 3536, 3537, 3538, 3539,
-  3540, 3541, 3542, 3543, 3544, 3545, 3546, 3547,
-  3548, 3549, 3550, 3551, 3552, 3553, 3554, 3555,
-  3556, 3557, 3558, 3559, 3560, 3561, 3562, 3563,
-  3564, 3565, 3566, 3567, 3568, 3569, 3570, 3571,
-  3572, 3573, 3574, 3575, 3578, 3580, 3583, 3586,
-  3588, 3591, 3594, 3597, 3600, 3601, 3604, 3605,
-  3606, 3607, 3608, 3609, 3613, 3615, 3618, 3619,
-  3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627,
-  3628, 3629, 3630, 3631, 3632, 3633, 3634, 3635,
-  3636, 3637, 3638, 3639, 3640, 3641, 3642, 3643,
-  3644, 3645, 3646, 3647, 3648, 3649, 3650, 3651,
-  3652, 3653, 3654, 3655, 3656, 3657, 3658, 3659,
-  3660, 3661, 3662, 3663, 3664, 3665, 3666, 3667,
-  3668, 3669, 3671, 3672, 3673, 3674, 3675, 3676,
-  3677, 3678, 3679, 3680, 3681, 3682, 3683, 3684,
-  3685, 3686, 3687, 3688, 3689, 3690, 3691, 3692,
-  3693, 3694, 3695, 3696, 3697, 3698, 3699, 3700,
-  3701, 3702, 3703, 3704, 3705, 3706, 3707, 3708,
-  3709, 3710, 3713, 3716, 3719, 3722, 3725, 3728,
-  3731, 3734, 3737, 3740, 3743, 3746, 3749, 3752,
-  3755, 3756, 3757, 3758, 3759, 3761, 3762, 3763,
-  3764, 3765, 3766, 3767, 3768, 3769, 3770, 3771,
-  3772, 3773, 3774, 3775, 3776, 3777, 3778, 3779,
-  3780, 3781, 3782, 3783, 3784, 3785, 3786, 3787,
-  3788, 3789, 3790, 3791, 3792, 3793, 3794, 3795,
-  3796, 3797, 3798, 3799, 3800, 3801, 3802, 3803,
-  3804, 3805, 3806, 3807, 3808, 3809, 3810, 3811,
-  3812, 3813, 3814, 3815, 3816, 3817, 3818, 3819,
-  3820, 3821, 3822, 3825, 3828, 3829, 3830, 3831,
-  3832, 3833, 3834, 3835, 3836, 3837, 3838, 3839,
-  3840, 3841, 3842, 3843, 3844, 3845, 3846, 3847,
-  3848, 3849, 3850, 3851, 3852, 3853, 3854, 3855,
-  3856, 3857, 3858, 3859, 3860, 3861, 3862, 3863,
-  3864, 3865, 3866, 3867, 3868, 3869, 3870, 3871,
-  3872, 3873, 3874, 3875, 3876, 3877, 3878, 3879,
-  3880, 3881, 3882, 3883, 3884, 3885, 3886, 3887,
-  3888, 3889, 3890, 3893, 3896, 3899, 3900, 3901,
-  3902, 3903, 3904, 3905, 3906, 3907, 3908, 3909,
-  3910, 3911, 3912, 3913, 3914, 3915, 3918, 3921,
-  3922, 3923, 3926, 3927, 3928, 3929, 3930, 3933,
-  3936, 3939, 3940, 3941, 3942, 3943, 3944, 3945,
-  3946, 3947, 3948, 3949, 3951, 3952, 3953, 3954,
-  3956, 3957, 3958, 3959, 3960, 3961, 3962, 3963,
-  3964, 3965, 3966, 3967, 3968, 3969, 3970, 3971,
-  3972, 3973, 3974, 3975, 3976, 3977, 3978, 3980,
-  3982, 3983, 3984, 3985, 3986, 3987, 3988, 3989,
-  3990, 3991, 3992, 3993, 3994, 3995, 3996, 3997,
-  3998, 3999, 4000, 4001, 4002, 4003, 4004, 4005,
-  4006, 4007, 4009, 4011, 4013, 4015, 4017, 4019,
-  4021, 4023, 4025, 4027, 4029, 4031, 4033, 4035,
-  4037, 4039, 4040, 4041, 4042, 4044, 4045, 4047,
-  4050, 4052, 4053, 4054, 4056, 4058, 4059, 4060,
-  4061, 4062, 4063, 4064, 4066, 4068, 4070, 4072,
-  4073, 4074, 4075, 4076, 4077, 4078, 4079, 4080,
-  4081, 4083, 4085, 4086, 4088, 4090, 4091, 4096,
-  4098, 4100, 4101, 4102, 4103, 4104, 4105, 4106,
-  4107, 4108, 4109, 4110, 4112, 4114, 4115, 4116,
-  4117, 4119, 4122, 4126, 4129, 4131, 4132, 4133,
-  4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141,
-  4142, 4143, 4144, 4145, 4146, 4147, 4148, 4149,
-  4150, 4151, 4152, 4153, 4154, 4155, 4156, 4157,
-  4158, 4159, 4160, 4161, 4162, 4163, 4164, 4165,
-  4166, 4167, 4168, 4169, 4170, 4171, 4172, 4173,
-  4174, 4176, 4178, 4180, 4182, 4184, 4186, 4187,
-  4188, 4189, 4190, 4191, 4192, 4193, 4194, 4195,
-  4196, 4197, 4198, 4199, 4200, 4201, 4202, 4203,
-  4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211,
-  4212, 4213, 4214, 4215, 4216, 4217, 4218, 4219,
-  4220, 4221, 4222, 4223, 4224, 4225, 4226, 4227,
-  4228, 4229, 4230, 4231, 4232, 4233, 4234, 4235,
-  4236, 4237, 4238, 4239, 4240, 4241, 4242, 4243,
-  4244, 4245, 4246, 4247, 4248, 4249, 4250, 4251,
-  4252, 4253, 4254, 4255, 4256, 4257, 4258, 4259,
-  4260, 4261, 4262, 4263, 4264, 4265, 4266, 4267,
-  4268, 4269, 4270, 4271, 4272, 4273, 4274, 4275,
-  4276, 4277, 4278, 4279, 4280, 4281, 4282, 4283,
-  4284, 4285, 4286, 4287, 4288, 4289, 4290, 4291,
-  4292, 4293, 4294, 4295, 4296, 4297, 4298, 4299,
-  4300, 4301, 4302, 4303, 4304, 4305, 4306, 4307,
-  4308, 4309, 4312, 4313, 4314, 4317, 4318, 4319,
-  4321, 4322, 4323, 4324, 4326, 4327, 4328, 4329,
-  4331, 4332, 4333, 4334, 4337, 4338, 4339, 4340,
-  4341, 4344, 4347, 4350, 4353, 4356, 4357, 4358,
-  4359, 4360, 4362, 4364, 4365, 4366, 4367, 4370,
-  4373, 4376, 4379, 4382, 4383, 4384, 4385, 4387,
-  4388, 4389, 4390, 4393, 4394, 4395, 4396, 4397,
-  4398, 4399, 4400, 4401, 4402, 4403, 4404, 4405,
-  4406, 4407, 4408, 4409, 4410, 4411, 4412, 4413,
-  4414, 4415, 4416, 4417, 4418, 4419, 4420, 4421,
-  4422, 4423, 4424, 4425, 4426, 4427, 4428, 4429,
-  4431, 4432, 4433, 4435, 4437, 4439, 4441, 4443,
-  4444, 4445, 4448, 4451, 4452, 4453, 4454, 4455,
-  4456, 4457, 4459, 4461, 4463, 4465, 4466, 4467,
-  4468, 4469, 4472, 4473, 4474, 4477, 4478, 4479,
-  4482, 4483, 4484, 4487, 4488, 4489, 4492, 4493,
-  4494, 4495, 4496, 4497, 4498, 4499, 4500, 4501,
-  4502, 4503, 4504, 4505, 4506, 4507, 4508, 4509,
-  4510, 4511, 4512, 4513, 4514, 4515, 4516, 4517,
-  4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525,
-  4526, 4527, 4528, 4529, 4530, 4531, 4532, 4533,
-  4534, 4535, 4536, 4539, 4540, 4541, 4544, 4545,
-  4546, 4547, 4548, 4549, 4550, 4553, 4556, 4557,
-  4558, 4559, 4560, 4561, 4562, 4563, 4564, 4565,
-  4566, 4567, 4568, 4569, 4570, 4571, 4572, 4573,
-  4574, 4576, 4577, 4578, 4579, 4580
+  3101, 3102, 3103, 3104, 3107, 3110, 3111, 3112,
+  3113, 3114, 3115, 3116, 3117, 3118, 3119, 3120,
+  3121, 3122, 3123, 3124, 3125, 3126, 3127, 3128,
+  3129, 3130, 3131, 3132, 3133, 3134, 3135, 3136,
+  3137, 3138, 3139, 3140, 3141, 3142, 3143, 3144,
+  3145, 3146, 3147, 3148, 3149, 3150, 3151, 3152,
+  3153, 3154, 3155, 3156, 3157, 3158, 3159, 3160,
+  3161, 3162, 3163, 3164, 3165, 3166, 3167, 3168,
+  3169, 3170, 3171, 3172, 3173, 3174, 3175, 3176,
+  3177, 3178, 3179, 3180, 3181, 3182, 3183, 3184,
+  3185, 3186, 3187, 3188, 3189, 3190, 3191, 3192,
+  3193, 3194, 3195, 3196, 3197, 3198, 3199, 3200,
+  3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208,
+  3209, 3210, 3211, 3212, 3213, 3214, 3215, 3216,
+  3217, 3218, 3219, 3220, 3221, 3222, 3223, 3224,
+  3225, 3226, 3227, 3228, 3229, 3230, 3231, 3232,
+  3233, 3234, 3235, 3236, 3237, 3238, 3239, 3240,
+  3241, 3242, 3243, 3244, 3245, 3246, 3247, 3248,
+  3249, 3250, 3251, 3252, 3253, 3254, 3255, 3256,
+  3257, 3258, 3259, 3260, 3261, 3262, 3263, 3264,
+  3265, 3266, 3267, 3268, 3269, 3270, 3271, 3272,
+  3273, 3274, 3275, 3276, 3277, 3278, 3279, 3280,
+  3281, 3282, 3283, 3284, 3285, 3286, 3287, 3288,
+  3289, 3290, 3291, 3292, 3293, 3294, 3295, 3296,
+  3297, 3298, 3299, 3300, 3301, 3302, 3303, 3304,
+  3305, 3306, 3307, 3308, 3309, 3310, 3311, 3313,
+  3315, 3316, 3317, 3318, 3319, 3320, 3321, 3322,
+  3323, 3324, 3325, 3326, 3327, 3328, 3329, 3330,
+  3331, 3332, 3333, 3334, 3335, 3336, 3337, 3338,
+  3339, 3340, 3341, 3342, 3343, 3345, 3347, 3349,
+  3351, 3352, 3353, 3354, 3355, 3356, 3357, 3358,
+  3359, 3360, 3361, 3362, 3363, 3364, 3366, 3367,
+  3368, 3369, 3371, 3372, 3373, 3374, 3375, 3376,
+  3377, 3378, 3379, 3380, 3381, 3382, 3383, 3384,
+  3385, 3386, 3387, 3388, 3389, 3390, 3391, 3392,
+  3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400,
+  3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408,
+  3409, 3410, 3411, 3412, 3414, 3416, 3417, 3418,
+  3420, 3421, 3423, 3425, 3426, 3427, 3429, 3431,
+  3433, 3435, 3436, 3437, 3438, 3439, 3440, 3441,
+  3442, 3443, 3444, 3445, 3446, 3447, 3448, 3449,
+  3450, 3451, 3452, 3453, 3454, 3455, 3456, 3457,
+  3458, 3459, 3462, 3465, 3466, 3467, 3468, 3469,
+  3470, 3471, 3473, 3475, 3477, 3478, 3479, 3480,
+  3481, 3482, 3483, 3485, 3486, 3487, 3488, 3489,
+  3490, 3491, 3492, 3493, 3495, 3497, 3498, 3499,
+  3500, 3501, 3502, 3503, 3504, 3505, 3506, 3507,
+  3510, 3513, 3514, 3515, 3516, 3517, 3518, 3519,
+  3520, 3521, 3522, 3523, 3524, 3525, 3526, 3527,
+  3528, 3529, 3530, 3531, 3532, 3533, 3534, 3535,
+  3536, 3537, 3538, 3539, 3540, 3541, 3542, 3543,
+  3544, 3545, 3546, 3547, 3548, 3549, 3550, 3551,
+  3552, 3553, 3554, 3555, 3556, 3557, 3558, 3559,
+  3560, 3561, 3562, 3563, 3564, 3565, 3566, 3567,
+  3568, 3569, 3570, 3571, 3574, 3576, 3579, 3582,
+  3584, 3587, 3590, 3593, 3596, 3597, 3600, 3601,
+  3602, 3603, 3604, 3605, 3609, 3611, 3614, 3615,
+  3616, 3617, 3618, 3619, 3620, 3621, 3622, 3623,
+  3624, 3625, 3626, 3627, 3628, 3629, 3630, 3631,
+  3632, 3633, 3634, 3635, 3636, 3637, 3638, 3639,
+  3640, 3641, 3642, 3643, 3644, 3645, 3646, 3647,
+  3648, 3649, 3650, 3651, 3652, 3653, 3654, 3655,
+  3656, 3657, 3658, 3659, 3660, 3661, 3662, 3663,
+  3664, 3665, 3667, 3668, 3669, 3670, 3671, 3672,
+  3673, 3674, 3675, 3676, 3677, 3678, 3679, 3680,
+  3681, 3682, 3683, 3684, 3685, 3686, 3687, 3688,
+  3689, 3690, 3691, 3692, 3693, 3694, 3695, 3696,
+  3697, 3698, 3699, 3700, 3701, 3702, 3703, 3704,
+  3705, 3706, 3709, 3712, 3715, 3718, 3721, 3724,
+  3727, 3730, 3733, 3736, 3739, 3742, 3745, 3748,
+  3751, 3752, 3753, 3754, 3755, 3757, 3758, 3759,
+  3760, 3761, 3762, 3763, 3764, 3765, 3766, 3767,
+  3768, 3769, 3770, 3771, 3772, 3773, 3774, 3775,
+  3776, 3777, 3778, 3779, 3780, 3781, 3782, 3783,
+  3784, 3785, 3786, 3787, 3788, 3789, 3790, 3791,
+  3792, 3793, 3794, 3795, 3796, 3797, 3798, 3799,
+  3800, 3801, 3802, 3803, 3804, 3805, 3806, 3807,
+  3808, 3809, 3810, 3811, 3812, 3813, 3814, 3815,
+  3816, 3817, 3818, 3821, 3824, 3825, 3826, 3827,
+  3828, 3829, 3830, 3831, 3832, 3833, 3834, 3835,
+  3836, 3837, 3838, 3839, 3840, 3841, 3842, 3843,
+  3844, 3845, 3846, 3847, 3848, 3849, 3850, 3851,
+  3852, 3853, 3854, 3855, 3856, 3857, 3858, 3859,
+  3860, 3861, 3862, 3863, 3864, 3865, 3866, 3867,
+  3868, 3869, 3870, 3871, 3872, 3873, 3874, 3875,
+  3876, 3877, 3878, 3879, 3880, 3881, 3882, 3883,
+  3884, 3885, 3886, 3889, 3892, 3895, 3896, 3897,
+  3898, 3899, 3900, 3901, 3902, 3903, 3904, 3905,
+  3906, 3907, 3908, 3909, 3910, 3911, 3914, 3917,
+  3918, 3919, 3922, 3923, 3924, 3925, 3926, 3929,
+  3932, 3935, 3936, 3937, 3938, 3939, 3940, 3941,
+  3942, 3943, 3944, 3945, 3947, 3948, 3949, 3950,
+  3952, 3953, 3954, 3955, 3956, 3957, 3958, 3959,
+  3960, 3961, 3962, 3963, 3964, 3965, 3966, 3967,
+  3968, 3969, 3970, 3971, 3972, 3973, 3974, 3976,
+  3978, 3979, 3980, 3981, 3982, 3983, 3984, 3985,
+  3986, 3987, 3988, 3989, 3990, 3991, 3992, 3993,
+  3994, 3995, 3996, 3997, 3998, 3999, 4000, 4001,
+  4002, 4003, 4005, 4007, 4009, 4011, 4013, 4015,
+  4017, 4019, 4021, 4023, 4025, 4027, 4029, 4031,
+  4033, 4035, 4036, 4037, 4038, 4040, 4041, 4043,
+  4046, 4048, 4049, 4050, 4052, 4054, 4055, 4056,
+  4057, 4058, 4059, 4060, 4062, 4064, 4066, 4068,
+  4069, 4070, 4071, 4072, 4073, 4074, 4075, 4076,
+  4077, 4079, 4081, 4082, 4084, 4086, 4087, 4092,
+  4094, 4096, 4097, 4098, 4099, 4100, 4101, 4102,
+  4103, 4104, 4105, 4106, 4108, 4110, 4111, 4112,
+  4113, 4115, 4118, 4122, 4125, 4127, 4128, 4129,
+  4130, 4131, 4132, 4133, 4134, 4135, 4136, 4137,
+  4138, 4139, 4140, 4141, 4142, 4143, 4144, 4145,
+  4146, 4147, 4148, 4149, 4150, 4151, 4152, 4153,
+  4154, 4155, 4156, 4157, 4158, 4159, 4160, 4161,
+  4162, 4163, 4164, 4165, 4166, 4167, 4168, 4169,
+  4170, 4172, 4174, 4176, 4178, 4180, 4182, 4183,
+  4184, 4185, 4186, 4187, 4188, 4189, 4190, 4191,
+  4192, 4193, 4194, 4195, 4196, 4197, 4198, 4199,
+  4200, 4201, 4202, 4203, 4204, 4205, 4206, 4207,
+  4208, 4209, 4210, 4211, 4212, 4213, 4214, 4215,
+  4216, 4217, 4218, 4219, 4220, 4221, 4222, 4223,
+  4224, 4225, 4226, 4227, 4228, 4229, 4230, 4231,
+  4232, 4233, 4234, 4235, 4236, 4237, 4238, 4239,
+  4240, 4241, 4242, 4243, 4244, 4245, 4246, 4247,
+  4248, 4249, 4250, 4251, 4252, 4253, 4254, 4255,
+  4256, 4257, 4258, 4259, 4260, 4261, 4262, 4263,
+  4264, 4265, 4266, 4267, 4268, 4269, 4270, 4271,
+  4272, 4273, 4274, 4275, 4276, 4277, 4278, 4279,
+  4280, 4281, 4282, 4283, 4284, 4285, 4286, 4287,
+  4288, 4289, 4290, 4291, 4292, 4293, 4294, 4295,
+  4296, 4297, 4298, 4299, 4300, 4301, 4302, 4303,
+  4304, 4305, 4308, 4309, 4310, 4313, 4314, 4315,
+  4317, 4318, 4319, 4320, 4322, 4323, 4324, 4325,
+  4327, 4328, 4329, 4330, 4333, 4334, 4335, 4336,
+  4337, 4340, 4343, 4346, 4349, 4352, 4353, 4354,
+  4355, 4356, 4358, 4360, 4361, 4362, 4363, 4366,
+  4369, 4372, 4375, 4378, 4379, 4380, 4381, 4383,
+  4384, 4385, 4386, 4389, 4390, 4391, 4392, 4393,
+  4394, 4395, 4396, 4397, 4398, 4399, 4400, 4401,
+  4402, 4403, 4404, 4405, 4406, 4407, 4408, 4409,
+  4410, 4411, 4412, 4413, 4414, 4415, 4416, 4417,
+  4418, 4419, 4420, 4421, 4422, 4423, 4424, 4425,
+  4427, 4428, 4429, 4431, 4433, 4435, 4437, 4439,
+  4440, 4441, 4444, 4447, 4448, 4449, 4450, 4451,
+  4452, 4453, 4455, 4457, 4459, 4461, 4462, 4463,
+  4464, 4465, 4468, 4469, 4470, 4473, 4474, 4475,
+  4478, 4479, 4480, 4483, 4484, 4485, 4488, 4489,
+  4490, 4491, 4492, 4493, 4494, 4495, 4496, 4497,
+  4498, 4499, 4500, 4501, 4502, 4503, 4504, 4505,
+  4506, 4507, 4508, 4509, 4510, 4511, 4512, 4513,
+  4514, 4515, 4516, 4517, 4518, 4519, 4520, 4521,
+  4522, 4523, 4524, 4525, 4526, 4527, 4528, 4529,
+  4530, 4531, 4532, 4535, 4536, 4537, 4540, 4541,
+  4542, 4543, 4544, 4545, 4546, 4549, 4552, 4553,
+  4554, 4555, 4556, 4557, 4558, 4559, 4560, 4561,
+  4562, 4563, 4564, 4565, 4566, 4567, 4568, 4569,
+  4570, 4572, 4573, 4574, 4575, 4576
 };
=20
 /* i386 mnemonics table.  */