#objdump: -dw -Msuffix
-#name: i386 EVX insns
+#name: i386 EVEX insns
 
 .*: +file format .*
 
 
 0+ <_start>:
  +[a-f0-9]+:   62 f1 d6 38 2a f0       vcvtsi2ssl %eax,\{rd-sae\},%xmm5,%xmm6
+ +[a-f0-9]+:   62 f1 57 38 2a f0       vcvtsi2sdl %eax,\(bad\),%xmm5,%xmm6
  +[a-f0-9]+:   62 f1 d7 38 2a f0       vcvtsi2sdl %eax,\(bad\),%xmm5,%xmm6
  +[a-f0-9]+:   62 f1 d6 08 7b f0       vcvtusi2ssl %eax,%xmm5,%xmm6
+ +[a-f0-9]+:   62 f1 57 08 7b f0       vcvtusi2sdl %eax,%xmm5,%xmm6
  +[a-f0-9]+:   62 f1 d7 08 7b f0       vcvtusi2sdl %eax,%xmm5,%xmm6
  +[a-f0-9]+:   62 f1 d6 38 7b f0       vcvtusi2ssl %eax,\{rd-sae\},%xmm5,%xmm6
+ +[a-f0-9]+:   62 f1 57 38 7b f0       vcvtusi2sdl %eax,\(bad\),%xmm5,%xmm6
  +[a-f0-9]+:   62 f1 d7 38 7b f0       vcvtusi2sdl %eax,\(bad\),%xmm5,%xmm6
 #pass
 
        .text
 _start:
        .byte 0x62, 0xf1, 0xd6, 0x38, 0x2a, 0xf0
+       .byte 0x62, 0xf1, 0x57, 0x38, 0x2a, 0xf0
        .byte 0x62, 0xf1, 0xd7, 0x38, 0x2a, 0xf0
        .byte 0x62, 0xf1, 0xd6, 0x08, 0x7b, 0xf0
+       .byte 0x62, 0xf1, 0x57, 0x08, 0x7b, 0xf0
        .byte 0x62, 0xf1, 0xd7, 0x08, 0x7b, 0xf0
        .byte 0x62, 0xf1, 0xd6, 0x38, 0x7b, 0xf0
+       .byte 0x62, 0xf1, 0x57, 0x38, 0x7b, 0xf0
        .byte 0x62, 0xf1, 0xd7, 0x38, 0x7b, 0xf0
 
     run_dump_test "x86-64-avx512er-intel"
     run_dump_test "x86-64-avx512pf"
     run_dump_test "x86-64-avx512pf-intel"
+    run_dump_test "x86-64-evex"
     run_dump_test "x86-64-evex-lig256"
     run_dump_test "x86-64-evex-lig512"
     run_dump_test "x86-64-evex-lig256-intel"
 
--- /dev/null
+#objdump: -dw
+#name: x86-64 EVEX insns
+#source: evex.s
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +[a-f0-9]+:   62 f1 d6 38 2a f0       vcvtsi2ss %rax,\{rd-sae\},%xmm5,%xmm6
+ +[a-f0-9]+:   62 f1 57 38 2a f0       vcvtsi2sd %eax,\(bad\),%xmm5,%xmm6
+ +[a-f0-9]+:   62 f1 d7 38 2a f0       vcvtsi2sd %rax,\{rd-sae\},%xmm5,%xmm6
+ +[a-f0-9]+:   62 f1 d6 08 7b f0       vcvtusi2ss %rax,%xmm5,%xmm6
+ +[a-f0-9]+:   62 f1 57 08 7b f0       vcvtusi2sd %eax,%xmm5,%xmm6
+ +[a-f0-9]+:   62 f1 d7 08 7b f0       vcvtusi2sd %rax,%xmm5,%xmm6
+ +[a-f0-9]+:   62 f1 d6 38 7b f0       vcvtusi2ss %rax,\{rd-sae\},%xmm5,%xmm6
+ +[a-f0-9]+:   62 f1 57 38 7b f0       vcvtusi2sd %eax,\(bad\),%xmm5,%xmm6
+ +[a-f0-9]+:   62 f1 d7 38 7b f0       vcvtusi2sd %rax,\{rd-sae\},%xmm5,%xmm6
+#pass
 
     { Bad_Opcode },
     { "vcvtsi2ss{%LQ|}",       { XMScalar, VexScalar, EXxEVexR, Edq }, 0 },
     { Bad_Opcode },
-    { VEX_W_TABLE (EVEX_W_0F2A_P_3) },
+    { "vcvtsi2sd{%LQ|}",       { XMScalar, VexScalar, EXxEVexR64, Edq }, 0 },
   },
   /* PREFIX_EVEX_0F51 */
   {
     { Bad_Opcode },
     { "vcvtusi2ss{%LQ|}",      { XMScalar, VexScalar, EXxEVexR, Edq }, 0 },
     { VEX_W_TABLE (EVEX_W_0F7B_P_2) },
-    { VEX_W_TABLE (EVEX_W_0F7B_P_3) },
+    { "vcvtusi2sd{%LQ|}",      { XMScalar, VexScalar, EXxEVexR64, Edq }, 0 },
   },
   /* PREFIX_EVEX_0F7E */
   {
 
   {
     { "vmovshdup",     { XM, EXx }, 0 },
   },
-  /* EVEX_W_0F2A_P_3 */
-  {
-    { "vcvtsi2sd{%LQ|}",       { XMScalar, VexScalar, Ed }, 0 },
-    { "vcvtsi2sd{%LQ|}",       { XMScalar, VexScalar, EXxEVexR64, Edq }, 0 },
-  },
   /* EVEX_W_0F51_P_1 */
   {
     { "vsqrtss",       { XMScalar, VexScalar, EXxmm_md, EXxEVexR }, 0 },
     { "vcvtps2qq",     { XM, EXEvexHalfBcstXmmq, EXxEVexR }, 0 },
     { "vcvtpd2qq",     { XM, EXx, EXxEVexR }, 0 },
   },
-  /* EVEX_W_0F7B_P_3 */
-  {
-    { "vcvtusi2sd{%LQ|}",      { XMScalar, VexScalar, Ed }, 0 },
-    { "vcvtusi2sd{%LQ|}",      { XMScalar, VexScalar, EXxEVexR64, Edq }, 0 },
-  },
   /* EVEX_W_0F7E_P_1 */
   {
     { Bad_Opcode },
 
   EVEX_W_0F12_P_3,
   EVEX_W_0F16_P_0_M_1,
   EVEX_W_0F16_P_1,
-  EVEX_W_0F2A_P_3,
   EVEX_W_0F51_P_1,
   EVEX_W_0F51_P_3,
   EVEX_W_0F58_P_1,
   EVEX_W_0F7A_P_2,
   EVEX_W_0F7A_P_3,
   EVEX_W_0F7B_P_2,
-  EVEX_W_0F7B_P_3,
   EVEX_W_0F7E_P_1,
   EVEX_W_0F7F_P_1,
   EVEX_W_0F7F_P_2,
     switch (bytemode)
       {
       case evex_rounding_64_mode:
-       if (address_mode != mode_64bit)
+       if (address_mode != mode_64bit || !vex.w)
          {
            oappend ("(bad)");
            break;