x86: Add -mvexwig=[0|1] option to assembler
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 17 Sep 2018 16:26:18 +0000 (09:26 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 17 Sep 2018 16:26:29 +0000 (09:26 -0700)
Add -mvexwig=[0|1] option to x86 assembler to control how the assembler
should encode the VEX.W bit in WIG VEX instructions.

* gas/NEWS: Mention -mvexwig=[0|1] option.
* config/tc-i386.c (vexwig): New.
(build_vex_prefix): Set the VEX.W bit for -mvexwig=1 for WIG
VEX instructions.
(OPTION_MVEXWIG): New.
(md_longopts): Add -mvexwig=.
(md_parse_option): Handle OPTION_MVEXWIG.
(md_show_usage): Show -mvexwig=[0|1].
* doc/c-i386.texi: Document -mvexwig=[0|1].
* testsuite/gas/i386/avx-wig.d: New file.
* testsuite/gas/i386/avx-wig.s: Likewise.
* testsuite/gas/i386/avx2-wig.d: Likewise.
* testsuite/gas/i386/avx2-wig.s: Likewise.
* testsuite/gas/i386/x86-64-avx-wig.d: Likewise.
* testsuite/gas/i386/x86-64-avx-wig.s: Likewise.
* testsuite/gas/i386/x86-64-avx2-wig.d: Likewise.
* testsuite/gas/i386/x86-64-avx2-wig.s: Likewise.
* testsuite/gas/i386/i386.exp: Run avx-wig, avx2-wig,
x86-64-avx-wig and x86-64-avx2-wig.

13 files changed:
gas/ChangeLog
gas/NEWS
gas/config/tc-i386.c
gas/doc/c-i386.texi
gas/testsuite/gas/i386/avx-wig.d [new file with mode: 0644]
gas/testsuite/gas/i386/avx-wig.s [new file with mode: 0644]
gas/testsuite/gas/i386/avx2-wig.d [new file with mode: 0644]
gas/testsuite/gas/i386/avx2-wig.s [new file with mode: 0644]
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/x86-64-avx-wig.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx-wig.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx2-wig.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-avx2-wig.s [new file with mode: 0644]

index a7919c016bb641f0160f49577f0b37e4261194be..7428c24526b0b8cbc5d03132bc3f3ddf9c5e4ede 100644 (file)
@@ -1,3 +1,25 @@
+2018-09-17  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * gas/NEWS: Mention -mvexwig=[0|1] option.
+       * config/tc-i386.c (vexwig): New.
+       (build_vex_prefix): Set the VEX.W bit for -mvexwig=1 for WIG
+       VEX instructions.
+       (OPTION_MVEXWIG): New.
+       (md_longopts): Add -mvexwig=.
+       (md_parse_option): Handle OPTION_MVEXWIG.
+       (md_show_usage): Show -mvexwig=[0|1].
+       * doc/c-i386.texi: Document -mvexwig=[0|1].
+       * testsuite/gas/i386/avx-wig.d: New file.
+       * testsuite/gas/i386/avx-wig.s: Likewise.
+       * testsuite/gas/i386/avx2-wig.d: Likewise.
+       * testsuite/gas/i386/avx2-wig.s: Likewise.
+       * testsuite/gas/i386/x86-64-avx-wig.d: Likewise.
+       * testsuite/gas/i386/x86-64-avx-wig.s: Likewise.
+       * testsuite/gas/i386/x86-64-avx2-wig.d: Likewise.
+       * testsuite/gas/i386/x86-64-avx2-wig.s: Likewise.
+       * testsuite/gas/i386/i386.exp: Run avx-wig, avx2-wig,
+       x86-64-avx-wig and x86-64-avx2-wig.
+
 2018-09-17  Alan Modra  <amodra@gmail.com>
 
        * testsuite/gas/arm/arch7.d: Delete notarget.
index 87fe10a474df463d97f4abcdd074d4c03378c544..26f78b08c6ca979fde865db8361735db893d65a7 100644 (file)
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -1,5 +1,8 @@
 -*- text -*-
 
+* Add -mvexwig=[0|1] option to x86 assembler to control encoding of
+  VEX.W-ignored (WIG) VEX instructions.
+
 * Add -mx86-used-note=[yes|no] option to generate (or not) x86 GNU property
   notes.  Add a --enable-x86-used-note configure time option to set the
   default behavior.  Set the default if the configure option is not used
index d2ee3b44451a433c951093d73686823bff36f6b4..2204d00d8c0f21b8a289a5066dab3192ada82a74 100644 (file)
@@ -684,6 +684,13 @@ static enum
     vex256
   } avxscalar;
 
+/* Encode VEX WIG instructions with specific vex.w.  */
+static enum
+  {
+    vexw0 = 0,
+    vexw1
+  } vexwig;
+
 /* Encode scalar EVEX LIG instructions with specific vector length.  */
 static enum
   {
@@ -3353,6 +3360,7 @@ build_vex_prefix (const insn_template *t)
   unsigned int register_specifier;
   unsigned int implied_prefix;
   unsigned int vector_length;
+  unsigned int w;
 
   /* Check register specifier.  */
   if (i.vex.register_specifier)
@@ -3439,10 +3447,18 @@ build_vex_prefix (const insn_template *t)
       abort ();
     }
 
+  /* Check the REX.W bit and VEXW.  */
+  if (i.tm.opcode_modifier.vexw == VEXWIG)
+    w = (vexwig == vexw1 || (i.rex & REX_W)) ? 1 : 0;
+  else if (i.tm.opcode_modifier.vexw)
+    w = i.tm.opcode_modifier.vexw == VEXW1 ? 1 : 0;
+  else
+    w = (i.rex & REX_W) ? 1 : 0;
+
   /* Use 2-byte VEX prefix if possible.  */
-  if (i.vec_encoding != vex_encoding_vex3
+  if (w == 0
+      && i.vec_encoding != vex_encoding_vex3
       && i.tm.opcode_modifier.vexopcode == VEX0F
-      && i.tm.opcode_modifier.vexw != VEXW1
       && (i.rex & (REX_W | REX_X | REX_B)) == 0)
     {
       /* 2-byte VEX prefix.  */
@@ -3461,7 +3477,7 @@ build_vex_prefix (const insn_template *t)
   else
     {
       /* 3-byte VEX prefix.  */
-      unsigned int m, w;
+      unsigned int m;
 
       i.vex.length = 3;
 
@@ -3499,14 +3515,6 @@ build_vex_prefix (const insn_template *t)
         of RXB bits from REX.  */
       i.vex.bytes[1] = (~i.rex & 0x7) << 5 | m;
 
-      /* Check the REX.W bit and VEXW.  */
-      if (i.tm.opcode_modifier.vexw == VEXWIG)
-       w = (i.rex & REX_W) ? 1 : 0;
-      else if (i.tm.opcode_modifier.vexw)
-       w = i.tm.opcode_modifier.vexw == VEXW1 ? 1 : 0;
-      else
-       w = (i.rex & REX_W) ? 1 : 0;
-
       i.vex.bytes[2] = (w << 7
                        | register_specifier << 3
                        | vector_length << 2
@@ -10878,6 +10886,7 @@ const char *md_shortopts = "qnO::";
 #define OPTION_MINTEL64 (OPTION_MD_BASE + 23)
 #define OPTION_MFENCE_AS_LOCK_ADD (OPTION_MD_BASE + 24)
 #define OPTION_X86_USED_NOTE (OPTION_MD_BASE + 25)
+#define OPTION_MVEXWIG (OPTION_MD_BASE + 26)
 
 struct option md_longopts[] =
 {
@@ -10902,6 +10911,7 @@ struct option md_longopts[] =
   {"msse-check", required_argument, NULL, OPTION_MSSE_CHECK},
   {"moperand-check", required_argument, NULL, OPTION_MOPERAND_CHECK},
   {"mavxscalar", required_argument, NULL, OPTION_MAVXSCALAR},
+  {"mvexwig", required_argument, NULL, OPTION_MVEXWIG},
   {"madd-bnd-prefix", no_argument, NULL, OPTION_MADD_BND_PREFIX},
   {"mevexlig", required_argument, NULL, OPTION_MEVEXLIG},
   {"mevexwig", required_argument, NULL, OPTION_MEVEXWIG},
@@ -11219,6 +11229,15 @@ md_parse_option (int c, const char *arg)
        as_fatal (_("invalid -mavxscalar= option: `%s'"), arg);
       break;
 
+    case OPTION_MVEXWIG:
+      if (strcmp (arg, "0") == 0)
+       vexwig = evexw0;
+      else if (strcmp (arg, "1") == 0)
+       vexwig = evexw1;
+      else
+       as_fatal (_("invalid -mvexwig= option: `%s'"), arg);
+      break;
+
     case OPTION_MADD_BND_PREFIX:
       add_bnd_prefix = 1;
       break;
@@ -11477,6 +11496,10 @@ md_show_usage (FILE *stream)
                           encode scalar AVX instructions with specific vector\n\
                            length\n"));
   fprintf (stream, _("\
+  -mvexwig=[0|1] (default: 0)\n\
+                          encode VEX instructions with specific VEX.W value\n\
+                           for VEX.W bit ignored instructions\n"));
+  fprintf (stream, _("\
   -mevexlig=[128|256|512] (default: 128)\n\
                           encode scalar EVEX instructions with specific vector\n\
                            length\n"));
index 64e33977d7b8e66b9a5df933570a11cba1a67744..77ccfbc1ab641dbba92aa2db4cab530e63b1c9ae 100644 (file)
@@ -298,6 +298,16 @@ AVX instructions with 128bit vector length, which is the default.
 @option{-mavxscalar=@var{256}} will encode scalar AVX instructions
 with 256bit vector length.
 
+@cindex @samp{-mvexwig=} option, i386
+@cindex @samp{-mvexwig=} option, x86-64
+@item -mvexwig=@var{0}
+@itemx -mvexwig=@var{1}
+These options control how the assembler should encode VEX.W-ignored (WIG)
+VEX instructions.  @option{-mvexwig=@var{0}} will encode WIG VEX
+instructions with vex.w = 0, which is the default.
+@option{-mvexwig=@var{1}} will encode WIG EVEX instructions with
+vex.w = 1.
+
 @cindex @samp{-mevexlig=} option, i386
 @cindex @samp{-mevexlig=} option, x86-64
 @item -mevexlig=@var{128}
diff --git a/gas/testsuite/gas/i386/avx-wig.d b/gas/testsuite/gas/i386/avx-wig.d
new file mode 100644 (file)
index 0000000..00a2195
--- /dev/null
@@ -0,0 +1,254 @@
+#as: -mvexwig=1
+#objdump: -dw
+#name: i386 AVX WIG insns with -mvexwig=1
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +[a-f0-9]+:   c4 e1 cd 58 d4          vaddpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 58 d4          vaddps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb 58 d4          vaddsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 58 d4          vaddss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 cd d0 d4          vaddsubpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cf d0 d4          vaddsubps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 c9 de d4          vaesdec %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 df d4          vaesdeclast %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 dc d4          vaesenc %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 dd d4          vaesenclast %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 f9 db f4          vaesimc %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e3 f9 df f4 07       vaeskeygenassist \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e3 cd 0d d4 07       vblendpd \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 cd 0c d4 07       vblendps \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd c2 d4 07       vcmpordpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc c2 d4 07       vcmpordps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb c2 d4 07       vcmpordsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca c2 d4 07       vcmpordss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 f9 2f f4          vcomisd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f8 2f f4          vcomiss %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 fe e6 e4          vcvtdq2pd %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e1 fc 5b f4          vcvtdq2ps %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 ff e6 e4          vcvtpd2dq %ymm4,%xmm4
+ +[a-f0-9]+:   c4 e1 fb e6 f4          vcvtpd2dq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 ff e6 e4          vcvtpd2dq %ymm4,%xmm4
+ +[a-f0-9]+:   c4 e1 fd 5a e4          vcvtpd2ps %ymm4,%xmm4
+ +[a-f0-9]+:   c4 e1 f9 5a f4          vcvtpd2ps %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 fd 5a e4          vcvtpd2ps %ymm4,%xmm4
+ +[a-f0-9]+:   c4 e1 fd 5b f4          vcvtps2dq %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fc 5a e4          vcvtps2pd %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e1 cb 5a d4          vcvtsd2ss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 fd e6 e4          vcvttpd2dq %ymm4,%xmm4
+ +[a-f0-9]+:   c4 e1 f9 e6 f4          vcvttpd2dq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 fd e6 e4          vcvttpd2dq %ymm4,%xmm4
+ +[a-f0-9]+:   c4 e1 fe 5b f4          vcvttps2dq %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 cd 5e d4          vdivpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 5e d4          vdivps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb 5e d4          vdivsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 5e d4          vdivss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 41 d4 07       vdppd  \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 cd 40 d4 07       vdpps  \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 f9 17 21 07       vextractps \$0x7,%xmm4,\(%ecx\)
+ +[a-f0-9]+:   c4 e1 cd 7c d4          vhaddpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cf 7c d4          vhaddps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 7d d4          vhsubpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cf 7d d4          vhsubps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 c9 21 d4 07       vinsertps \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ff f0 21          vlddqu \(%ecx\),%ymm4
+ +[a-f0-9]+:   c4 e1 f8 ae 11          vldmxcsr \(%ecx\)
+ +[a-f0-9]+:   c4 e1 f9 f7 f4          vmaskmovdqu %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 cd 5f d4          vmaxpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 5f d4          vmaxps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb 5f d4          vmaxsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 5f d4          vmaxss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 cd 5d d4          vminpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 5d d4          vminps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb 5d d4          vminsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 5d d4          vminss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 fd 28 f4          vmovapd %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fc 28 f4          vmovaps %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fd 29 e6          vmovapd %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fc 29 e6          vmovaps %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 ff 12 f4          vmovddup %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fd 6f f4          vmovdqa %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fe 6f f4          vmovdqu %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fd 7f e6          vmovdqa %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fe 7f e6          vmovdqu %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 c8 12 d4          vmovhlps %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 d9 16 31          vmovhpd \(%ecx\),%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f9 17 21          vmovhpd %xmm4,\(%ecx\)
+ +[a-f0-9]+:   c4 e1 d8 16 31          vmovhps \(%ecx\),%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f8 17 21          vmovhps %xmm4,\(%ecx\)
+ +[a-f0-9]+:   c4 e1 c8 16 d4          vmovlhps %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 d9 12 31          vmovlpd \(%ecx\),%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f9 13 21          vmovlpd %xmm4,\(%ecx\)
+ +[a-f0-9]+:   c4 e1 d8 12 31          vmovlps \(%ecx\),%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f8 13 21          vmovlps %xmm4,\(%ecx\)
+ +[a-f0-9]+:   c4 e1 f9 50 cc          vmovmskpd %xmm4,%ecx
+ +[a-f0-9]+:   c4 e1 f8 50 cc          vmovmskps %xmm4,%ecx
+ +[a-f0-9]+:   c4 e1 fd e7 21          vmovntdq %ymm4,\(%ecx\)
+ +[a-f0-9]+:   c4 e2 f9 2a 21          vmovntdqa \(%ecx\),%xmm4
+ +[a-f0-9]+:   c4 e1 fd 2b 21          vmovntpd %ymm4,\(%ecx\)
+ +[a-f0-9]+:   c4 e1 fc 2b 21          vmovntps %ymm4,\(%ecx\)
+ +[a-f0-9]+:   c4 e1 fa 7e f4          vmovq  %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f9 d6 21          vmovq  %xmm4,\(%ecx\)
+ +[a-f0-9]+:   c4 e1 fb 10 21          vmovsd \(%ecx\),%xmm4
+ +[a-f0-9]+:   c4 e1 fb 11 21          vmovsd %xmm4,\(%ecx\)
+ +[a-f0-9]+:   c4 e1 fe 16 f4          vmovshdup %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fe 12 f4          vmovsldup %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fa 10 21          vmovss \(%ecx\),%xmm4
+ +[a-f0-9]+:   c4 e1 fa 11 21          vmovss %xmm4,\(%ecx\)
+ +[a-f0-9]+:   c4 e1 fd 10 f4          vmovupd %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fd 11 21          vmovupd %ymm4,\(%ecx\)
+ +[a-f0-9]+:   c4 e1 fc 10 f4          vmovups %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fc 11 21          vmovups %ymm4,\(%ecx\)
+ +[a-f0-9]+:   c4 e3 c9 42 d4 07       vmpsadbw \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 cd 59 d4          vmulpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 59 d4          vmulps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb 59 d4          vmulsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 59 d4          vmulss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 f9 1c f4          vpabsb %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 1e f4          vpabsd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 1d f4          vpabsw %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 c9 6b d4          vpackssdw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 63 d4          vpacksswb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 2b d4          vpackusdw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 67 d4          vpackuswb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 fc d4          vpaddb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 fe d4          vpaddd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 d4 d4          vpaddq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 ec d4          vpaddsb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 ed d4          vpaddsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 dc d4          vpaddusb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 dd d4          vpaddusw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 fd d4          vpaddw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 0f d4 07       vpalignr \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 db d4          vpand  %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 df d4          vpandn %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e0 d4          vpavgb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e3 d4          vpavgw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 0e d4 07       vpblendw \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 44 d4 11       vpclmulhqhqdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 44 d4 01       vpclmulhqlqdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 44 d4 10       vpclmullqhqdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 44 d4 00       vpclmullqlqdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 44 d4 07       vpclmulqdq \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 74 d4          vpcmpeqb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 76 d4          vpcmpeqd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 29 d4          vpcmpeqq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 75 d4          vpcmpeqw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 64 d4          vpcmpgtb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 66 d4          vpcmpgtd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 37 d4          vpcmpgtq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 65 d4          vpcmpgtw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 f9 63 f4 07       vpcmpistri \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e3 f9 62 f4 07       vpcmpistrm \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 c9 02 d4          vphaddd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 03 d4          vphaddsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 01 d4          vphaddw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 f9 41 f4          vphminposuw %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 c9 06 d4          vphsubd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 07 d4          vphsubsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 05 d4          vphsubw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 04 d4          vpmaddubsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f5 d4          vpmaddwd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 3c d4          vpmaxsb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 3d d4          vpmaxsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 ee d4          vpmaxsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c5 c9 de d4             vpmaxub %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 3f d4          vpmaxud %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 3e d4          vpmaxuw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 38 d4          vpminsb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 39 d4          vpminsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 ea d4          vpminsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 da d4          vpminub %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 3b d4          vpminud %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 3a d4          vpminuw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 f9 d7 cc          vpmovmskb %xmm4,%ecx
+ +[a-f0-9]+:   c4 e2 f9 21 f4          vpmovsxbd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 22 f4          vpmovsxbq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 20 f4          vpmovsxbw %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 25 f4          vpmovsxdq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 23 f4          vpmovsxwd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 24 f4          vpmovsxwq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 31 f4          vpmovzxbd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 32 f4          vpmovzxbq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 30 f4          vpmovzxbw %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 35 f4          vpmovzxdq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 33 f4          vpmovzxwd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 34 f4          vpmovzxwq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 c9 28 d4          vpmuldq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 0b d4          vpmulhrsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e4 d4          vpmulhuw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e5 d4          vpmulhw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 40 d4          vpmulld %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 d5 d4          vpmullw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f4 d4          vpmuludq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 eb d4          vpor   %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f6 d4          vpsadbw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 00 d4          vpshufb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 f9 70 f4 07       vpshufd \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 fa 70 f4 07       vpshufhw \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 fb 70 f4 07       vpshuflw \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 c9 08 d4          vpsignb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 0a d4          vpsignd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 09 d4          vpsignw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f2 d4          vpslld %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 73 fc 07       vpslldq \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 c9 f3 d4          vpsllq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f1 d4          vpsllw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e2 d4          vpsrad %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e1 d4          vpsraw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 d2 d4          vpsrld %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 73 dc 07       vpsrldq \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 c9 d3 d4          vpsrlq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 d1 d4          vpsrlw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f8 d4          vpsubb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 fa d4          vpsubd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 fb d4          vpsubq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e8 d4          vpsubsb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e9 d4          vpsubsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 d8 d4          vpsubusb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 d9 d4          vpsubusw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f9 d4          vpsubw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 fd 17 f4          vptest %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 c9 68 d4          vpunpckhbw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 6a d4          vpunpckhdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 6d d4          vpunpckhqdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 69 d4          vpunpckhwd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 60 d4          vpunpcklbw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 62 d4          vpunpckldq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 6c d4          vpunpcklqdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 61 d4          vpunpcklwd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 ef d4          vpxor  %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 fc 53 f4          vrcpps %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 ca 53 d4          vrcpss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 fd 09 d6 07       vroundpd \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 fd 08 d6 07       vroundps \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 c9 0b d4 07       vroundsd \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 0a d4 07       vroundss \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 fc 52 f4          vrsqrtps %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 ca 52 d4          vrsqrtss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 cd c6 d4 07       vshufpd \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc c6 d4 07       vshufps \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 fd 51 f4          vsqrtpd %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fc 51 f4          vsqrtps %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 cb 51 d4          vsqrtsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 51 d4          vsqrtss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 f8 ae 19          vstmxcsr \(%ecx\)
+ +[a-f0-9]+:   c4 e1 cd 5c d4          vsubpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 5c d4          vsubps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb 5c d4          vsubsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 5c d4          vsubss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 f9 2e f4          vucomisd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f8 2e f4          vucomiss %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 cd 15 d4          vunpckhpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 15 d4          vunpckhps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 14 d4          vunpcklpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 14 d4          vunpcklps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 57 d4          vxorpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 57 d4          vxorps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 fc 77             vzeroall 
+ +[a-f0-9]+:   c4 e1 f8 77             vzeroupper 
+#pass
diff --git a/gas/testsuite/gas/i386/avx-wig.s b/gas/testsuite/gas/i386/avx-wig.s
new file mode 100644 (file)
index 0000000..fa98236
--- /dev/null
@@ -0,0 +1,248 @@
+# Check AVX WIG instructions
+
+       .allow_index_reg
+       .text
+_start:
+       vaddpd %ymm4,%ymm6,%ymm2
+       vaddps %ymm4,%ymm6,%ymm2
+       vaddsd %xmm4,%xmm6,%xmm2
+       vaddss %xmm4,%xmm6,%xmm2
+       vaddsubpd %ymm4,%ymm6,%ymm2
+       vaddsubps %ymm4,%ymm6,%ymm2
+       vaesdec %xmm4,%xmm6,%xmm2
+       vaesdeclast %xmm4,%xmm6,%xmm2
+       vaesenc %xmm4,%xmm6,%xmm2
+       vaesenclast %xmm4,%xmm6,%xmm2
+       vaesimc %xmm4,%xmm6
+       vaeskeygenassist $7,%xmm4,%xmm6
+       vblendpd $7,%ymm4,%ymm6,%ymm2
+       vblendps $7,%ymm4,%ymm6,%ymm2
+       vcmppd $7,%ymm4,%ymm6,%ymm2
+       vcmpps $7,%ymm4,%ymm6,%ymm2
+       vcmpsd $7,%xmm4,%xmm6,%xmm2
+       vcmpss $7,%xmm4,%xmm6,%xmm2
+       vcomisd %xmm4,%xmm6
+       vcomiss %xmm4,%xmm6
+       vcvtdq2pd %xmm4,%ymm4
+       vcvtdq2ps %ymm4,%ymm6
+       vcvtpd2dqy %ymm4,%xmm4
+       vcvtpd2dqx %xmm4,%xmm6
+       vcvtpd2dqy %ymm4,%xmm4
+       vcvtpd2psy %ymm4,%xmm4
+       vcvtpd2psx %xmm4,%xmm6
+       vcvtpd2psy %ymm4,%xmm4
+       vcvtps2dq %ymm4,%ymm6
+       vcvtps2pd %xmm4,%ymm4
+       vcvtsd2ss %xmm4,%xmm6,%xmm2
+       vcvttpd2dqy %ymm4,%xmm4
+       vcvttpd2dqx %xmm4,%xmm6
+       vcvttpd2dqy %ymm4,%xmm4
+       vcvttps2dq %ymm4,%ymm6
+       vdivpd %ymm4,%ymm6,%ymm2
+       vdivps %ymm4,%ymm6,%ymm2
+       vdivsd %xmm4,%xmm6,%xmm2
+       vdivss %xmm4,%xmm6,%xmm2
+       vdppd $7,%xmm4,%xmm6,%xmm2
+       vdpps $7,%ymm4,%ymm6,%ymm2
+       vextractps $7,%xmm4,(%ecx)
+       vhaddpd %ymm4,%ymm6,%ymm2
+       vhaddps %ymm4,%ymm6,%ymm2
+       vhsubpd %ymm4,%ymm6,%ymm2
+       vhsubps %ymm4,%ymm6,%ymm2
+       vinsertps $7,%xmm4,%xmm6,%xmm2
+       vlddqu (%ecx),%ymm4
+       vldmxcsr (%ecx)
+       vmaskmovdqu %xmm4,%xmm6
+       vmaxpd %ymm4,%ymm6,%ymm2
+       vmaxps %ymm4,%ymm6,%ymm2
+       vmaxsd %xmm4,%xmm6,%xmm2
+       vmaxss %xmm4,%xmm6,%xmm2
+       vminpd %ymm4,%ymm6,%ymm2
+       vminps %ymm4,%ymm6,%ymm2
+       vminsd %xmm4,%xmm6,%xmm2
+       vminss %xmm4,%xmm6,%xmm2
+       vmovapd %ymm4,%ymm6
+       vmovaps %ymm4,%ymm6
+       {store} vmovapd %ymm4,%ymm6
+       {store} vmovaps %ymm4,%ymm6
+       vmovddup %ymm4,%ymm6
+       vmovdqa %ymm4,%ymm6
+       vmovdqu %ymm4,%ymm6
+       {store} vmovdqa %ymm4,%ymm6
+       {store} vmovdqu %ymm4,%ymm6
+       vmovhlps %xmm4,%xmm6,%xmm2
+       vmovhpd (%ecx),%xmm4,%xmm6
+       vmovhpd %xmm4,(%ecx)
+       vmovhps (%ecx),%xmm4,%xmm6
+       vmovhps %xmm4,(%ecx)
+       vmovlhps %xmm4,%xmm6,%xmm2
+       vmovlpd (%ecx),%xmm4,%xmm6
+       vmovlpd %xmm4,(%ecx)
+       vmovlps (%ecx),%xmm4,%xmm6
+       vmovlps %xmm4,(%ecx)
+       vmovmskpd %xmm4,%ecx
+       vmovmskps %xmm4,%ecx
+       vmovntdq %ymm4,(%ecx)
+       vmovntdqa (%ecx),%xmm4
+       vmovntpd %ymm4,(%ecx)
+       vmovntps %ymm4,(%ecx)
+       vmovq %xmm4,%xmm6
+       vmovq %xmm4,(%ecx)
+       vmovsd (%ecx),%xmm4
+       vmovsd %xmm4,(%ecx)
+       vmovshdup %ymm4,%ymm6
+       vmovsldup %ymm4,%ymm6
+       vmovss (%ecx),%xmm4
+       vmovss %xmm4,(%ecx)
+       vmovupd %ymm4,%ymm6
+       vmovupd %ymm4,(%ecx)
+       vmovups %ymm4,%ymm6
+       vmovups %ymm4,(%ecx)
+       vmpsadbw $7,%xmm4,%xmm6,%xmm2
+       vmulpd %ymm4,%ymm6,%ymm2
+       vmulps %ymm4,%ymm6,%ymm2
+       vmulsd %xmm4,%xmm6,%xmm2
+       vmulss %xmm4,%xmm6,%xmm2
+       vpabsb %xmm4,%xmm6
+       vpabsd %xmm4,%xmm6
+       vpabsw %xmm4,%xmm6
+       vpackssdw %xmm4,%xmm6,%xmm2
+       vpacksswb %xmm4,%xmm6,%xmm2
+       vpackusdw %xmm4,%xmm6,%xmm2
+       vpackuswb %xmm4,%xmm6,%xmm2
+       vpaddb %xmm4,%xmm6,%xmm2
+       vpaddd %xmm4,%xmm6,%xmm2
+       vpaddq %xmm4,%xmm6,%xmm2
+       vpaddsb %xmm4,%xmm6,%xmm2
+       vpaddsw %xmm4,%xmm6,%xmm2
+       vpaddusb %xmm4,%xmm6,%xmm2
+       vpaddusw %xmm4,%xmm6,%xmm2
+       vpaddw %xmm4,%xmm6,%xmm2
+       vpalignr $7,%xmm4,%xmm6,%xmm2
+       vpand %xmm4,%xmm6,%xmm2
+       vpandn %xmm4,%xmm6,%xmm2
+       vpavgb %xmm4,%xmm6,%xmm2
+       vpavgw %xmm4,%xmm6,%xmm2
+       vpblendw $7,%xmm4,%xmm6,%xmm2
+       vpclmulhqhqdq %xmm4,%xmm6,%xmm2
+       vpclmulhqlqdq %xmm4,%xmm6,%xmm2
+       vpclmullqhqdq %xmm4,%xmm6,%xmm2
+       vpclmullqlqdq %xmm4,%xmm6,%xmm2
+       vpclmulqdq $7,%xmm4,%xmm6,%xmm2
+       vpcmpeqb %xmm4,%xmm6,%xmm2
+       vpcmpeqd %xmm4,%xmm6,%xmm2
+       vpcmpeqq %xmm4,%xmm6,%xmm2
+       vpcmpeqw %xmm4,%xmm6,%xmm2
+       vpcmpgtb %xmm4,%xmm6,%xmm2
+       vpcmpgtd %xmm4,%xmm6,%xmm2
+       vpcmpgtq %xmm4,%xmm6,%xmm2
+       vpcmpgtw %xmm4,%xmm6,%xmm2
+       vpcmpistri $7,%xmm4,%xmm6
+       vpcmpistrm $7,%xmm4,%xmm6
+       vphaddd %xmm4,%xmm6,%xmm2
+       vphaddsw %xmm4,%xmm6,%xmm2
+       vphaddw %xmm4,%xmm6,%xmm2
+       vphminposuw %xmm4,%xmm6
+       vphsubd %xmm4,%xmm6,%xmm2
+       vphsubsw %xmm4,%xmm6,%xmm2
+       vphsubw %xmm4,%xmm6,%xmm2
+       vpmaddubsw %xmm4,%xmm6,%xmm2
+       vpmaddwd %xmm4,%xmm6,%xmm2
+       vpmaxsb %xmm4,%xmm6,%xmm2
+       vpmaxsd %xmm4,%xmm6,%xmm2
+       vpmaxsw %xmm4,%xmm6,%xmm2
+       vpmaxub %xmm4,%xmm6,%xmm2
+       vpmaxud %xmm4,%xmm6,%xmm2
+       vpmaxuw %xmm4,%xmm6,%xmm2
+       vpminsb %xmm4,%xmm6,%xmm2
+       vpminsd %xmm4,%xmm6,%xmm2
+       vpminsw %xmm4,%xmm6,%xmm2
+       vpminub %xmm4,%xmm6,%xmm2
+       vpminud %xmm4,%xmm6,%xmm2
+       vpminuw %xmm4,%xmm6,%xmm2
+       vpmovmskb %xmm4,%ecx
+       vpmovsxbd %xmm4,%xmm6
+       vpmovsxbq %xmm4,%xmm6
+       vpmovsxbw %xmm4,%xmm6
+       vpmovsxdq %xmm4,%xmm6
+       vpmovsxwd %xmm4,%xmm6
+       vpmovsxwq %xmm4,%xmm6
+       vpmovzxbd %xmm4,%xmm6
+       vpmovzxbq %xmm4,%xmm6
+       vpmovzxbw %xmm4,%xmm6
+       vpmovzxdq %xmm4,%xmm6
+       vpmovzxwd %xmm4,%xmm6
+       vpmovzxwq %xmm4,%xmm6
+       vpmuldq %xmm4,%xmm6,%xmm2
+       vpmulhrsw %xmm4,%xmm6,%xmm2
+       vpmulhuw %xmm4,%xmm6,%xmm2
+       vpmulhw %xmm4,%xmm6,%xmm2
+       vpmulld %xmm4,%xmm6,%xmm2
+       vpmullw %xmm4,%xmm6,%xmm2
+       vpmuludq %xmm4,%xmm6,%xmm2
+       vpor %xmm4,%xmm6,%xmm2
+       vpsadbw %xmm4,%xmm6,%xmm2
+       vpshufb %xmm4,%xmm6,%xmm2
+       vpshufd $7,%xmm4,%xmm6
+       vpshufhw $7,%xmm4,%xmm6
+       vpshuflw $7,%xmm4,%xmm6
+       vpsignb %xmm4,%xmm6,%xmm2
+       vpsignd %xmm4,%xmm6,%xmm2
+       vpsignw %xmm4,%xmm6,%xmm2
+       vpslld %xmm4,%xmm6,%xmm2
+       vpslldq $7,%xmm4,%xmm6
+       vpsllq %xmm4,%xmm6,%xmm2
+       vpsllw %xmm4,%xmm6,%xmm2
+       vpsrad %xmm4,%xmm6,%xmm2
+       vpsraw %xmm4,%xmm6,%xmm2
+       vpsrld %xmm4,%xmm6,%xmm2
+       vpsrldq $7,%xmm4,%xmm6
+       vpsrlq %xmm4,%xmm6,%xmm2
+       vpsrlw %xmm4,%xmm6,%xmm2
+       vpsubb %xmm4,%xmm6,%xmm2
+       vpsubd %xmm4,%xmm6,%xmm2
+       vpsubq %xmm4,%xmm6,%xmm2
+       vpsubsb %xmm4,%xmm6,%xmm2
+       vpsubsw %xmm4,%xmm6,%xmm2
+       vpsubusb %xmm4,%xmm6,%xmm2
+       vpsubusw %xmm4,%xmm6,%xmm2
+       vpsubw %xmm4,%xmm6,%xmm2
+       vptest %ymm4,%ymm6
+       vpunpckhbw %xmm4,%xmm6,%xmm2
+       vpunpckhdq %xmm4,%xmm6,%xmm2
+       vpunpckhqdq %xmm4,%xmm6,%xmm2
+       vpunpckhwd %xmm4,%xmm6,%xmm2
+       vpunpcklbw %xmm4,%xmm6,%xmm2
+       vpunpckldq %xmm4,%xmm6,%xmm2
+       vpunpcklqdq %xmm4,%xmm6,%xmm2
+       vpunpcklwd %xmm4,%xmm6,%xmm2
+       vpxor %xmm4,%xmm6,%xmm2
+       vrcpps %ymm4,%ymm6
+       vrcpss %xmm4,%xmm6,%xmm2
+       vroundpd $7,%ymm6,%ymm2
+       vroundps $7,%ymm6,%ymm2
+       vroundsd $7,%xmm4,%xmm6,%xmm2
+       vroundss $7,%xmm4,%xmm6,%xmm2
+       vrsqrtps %ymm4,%ymm6
+       vrsqrtss %xmm4,%xmm6,%xmm2
+       vshufpd $7,%ymm4,%ymm6,%ymm2
+       vshufps $7,%ymm4,%ymm6,%ymm2
+       vsqrtpd %ymm4,%ymm6
+       vsqrtps %ymm4,%ymm6
+       vsqrtsd %xmm4,%xmm6,%xmm2
+       vsqrtss %xmm4,%xmm6,%xmm2
+       vstmxcsr (%ecx)
+       vsubpd %ymm4,%ymm6,%ymm2
+       vsubps %ymm4,%ymm6,%ymm2
+       vsubsd %xmm4,%xmm6,%xmm2
+       vsubss %xmm4,%xmm6,%xmm2
+       vucomisd %xmm4,%xmm6
+       vucomiss %xmm4,%xmm6
+       vunpckhpd %ymm4,%ymm6,%ymm2
+       vunpckhps %ymm4,%ymm6,%ymm2
+       vunpcklpd %ymm4,%ymm6,%ymm2
+       vunpcklps %ymm4,%ymm6,%ymm2
+       vxorpd %ymm4,%ymm6,%ymm2
+       vxorps %ymm4,%ymm6,%ymm2
+       vzeroall
+       vzeroupper
diff --git a/gas/testsuite/gas/i386/avx2-wig.d b/gas/testsuite/gas/i386/avx2-wig.d
new file mode 100644 (file)
index 0000000..03ef21f
--- /dev/null
@@ -0,0 +1,119 @@
+#as: -mvexwig=1
+#objdump: -dw
+#name: i386 AVX2 WIG insns with -mvexwig=1
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +[a-f0-9]+:   c4 e2 7d 2a 21          vmovntdqa \(%ecx\),%ymm4
+ +[a-f0-9]+:   c4 e2 7d 2a 21          vmovntdqa \(%ecx\),%ymm4
+ +[a-f0-9]+:   c4 e3 4d 42 d4 07       vmpsadbw \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 fd 1c f4          vpabsb %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e2 fd 1e f4          vpabsd %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e2 fd 1d f4          vpabsw %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 cd 6b d4          vpackssdw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 63 d4          vpacksswb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 2b d4          vpackusdw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 67 d4          vpackuswb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd fc d4          vpaddb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd fe d4          vpaddd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd d4 d4          vpaddq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd ec d4          vpaddsb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd ed d4          vpaddsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd dc d4          vpaddusb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd dd d4          vpaddusw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd fd d4          vpaddw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 cd 0f d4 07       vpalignr \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd db d4          vpand  %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd df d4          vpandn %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd e0 d4          vpavgb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd e3 d4          vpavgw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 cd 0e d4 07       vpblendw \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 74 d4          vpcmpeqb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 76 d4          vpcmpeqd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 29 d4          vpcmpeqq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 75 d4          vpcmpeqw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 64 d4          vpcmpgtb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 66 d4          vpcmpgtd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 37 d4          vpcmpgtq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 65 d4          vpcmpgtw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 02 d4          vphaddd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 03 d4          vphaddsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 01 d4          vphaddw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 4d 06 d4          vphsubd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 4d 07 d4          vphsubsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 4d 05 d4          vphsubw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 04 d4          vpmaddubsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd f5 d4          vpmaddwd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 3c d4          vpmaxsb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 3d d4          vpmaxsd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd ee d4          vpmaxsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c5 cd de d4             vpmaxub %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 3f d4          vpmaxud %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 3e d4          vpmaxuw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 38 d4          vpminsb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 39 d4          vpminsd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd ea d4          vpminsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd da d4          vpminub %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 3b d4          vpminud %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 3a d4          vpminuw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 fd d7 cc          vpmovmskb %ymm4,%ecx
+ +[a-f0-9]+:   c4 e2 fd 21 f4          vpmovsxbd %xmm4,%ymm6
+ +[a-f0-9]+:   c4 e2 fd 22 e4          vpmovsxbq %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 20 e4          vpmovsxbw %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 25 e4          vpmovsxdq %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 23 e4          vpmovsxwd %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 24 f4          vpmovsxwq %xmm4,%ymm6
+ +[a-f0-9]+:   c4 e2 fd 31 f4          vpmovzxbd %xmm4,%ymm6
+ +[a-f0-9]+:   c4 e2 fd 32 e4          vpmovzxbq %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 30 e4          vpmovzxbw %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 35 e4          vpmovzxdq %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 33 e4          vpmovzxwd %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 34 f4          vpmovzxwq %xmm4,%ymm6
+ +[a-f0-9]+:   c4 e2 cd 28 d4          vpmuldq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 0b d4          vpmulhrsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd e4 d4          vpmulhuw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd e5 d4          vpmulhw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 40 d4          vpmulld %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd d5 d4          vpmullw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd f4 d4          vpmuludq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd eb d4          vpor   %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd f6 d4          vpsadbw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 00 d4          vpshufb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 fd 70 d6 07       vpshufd \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 fe 70 d6 07       vpshufhw \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ff 70 d6 07       vpshuflw \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 08 d4          vpsignb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 0a d4          vpsignd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 09 d4          vpsignw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 72 f6 07       vpslld \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 73 fe 07       vpslldq \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 73 f6 07       vpsllq \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 71 f6 07       vpsllw \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 72 e6 07       vpsrad \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 71 e6 07       vpsraw \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 72 d6 07       vpsrld \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 73 de 07       vpsrldq \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 73 d6 07       vpsrlq \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 71 d6 07       vpsrlw \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd f8 d4          vpsubb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd fa d4          vpsubd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd fb d4          vpsubq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd e8 d4          vpsubsb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd e9 d4          vpsubsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd d8 d4          vpsubusb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd d9 d4          vpsubusw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd f9 d4          vpsubw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 68 d4          vpunpckhbw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 6a d4          vpunpckhdq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 6d d4          vpunpckhqdq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 69 d4          vpunpckhwd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 60 d4          vpunpcklbw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 62 d4          vpunpckldq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 6c d4          vpunpcklqdq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 61 d4          vpunpcklwd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd ef d4          vpxor  %ymm4,%ymm6,%ymm2
+#pass
diff --git a/gas/testsuite/gas/i386/avx2-wig.s b/gas/testsuite/gas/i386/avx2-wig.s
new file mode 100644 (file)
index 0000000..6ebc5e7
--- /dev/null
@@ -0,0 +1,113 @@
+# Check AVX2 WIG instructions
+
+       .allow_index_reg
+       .text
+_start:
+       vmovntdqa (%ecx),%ymm4
+       vmovntdqa (%ecx),%ymm4
+       vmpsadbw $7,%ymm4,%ymm6,%ymm2
+       vpabsb %ymm4,%ymm6
+       vpabsd %ymm4,%ymm6
+       vpabsw %ymm4,%ymm6
+       vpackssdw %ymm4,%ymm6,%ymm2
+       vpacksswb %ymm4,%ymm6,%ymm2
+       vpackusdw %ymm4,%ymm6,%ymm2
+       vpackuswb %ymm4,%ymm6,%ymm2
+       vpaddb %ymm4,%ymm6,%ymm2
+       vpaddd %ymm4,%ymm6,%ymm2
+       vpaddq %ymm4,%ymm6,%ymm2
+       vpaddsb %ymm4,%ymm6,%ymm2
+       vpaddsw %ymm4,%ymm6,%ymm2
+       vpaddusb %ymm4,%ymm6,%ymm2
+       vpaddusw %ymm4,%ymm6,%ymm2
+       vpaddw %ymm4,%ymm6,%ymm2
+       vpalignr $7,%ymm4,%ymm6,%ymm2
+       vpand %ymm4,%ymm6,%ymm2
+       vpandn %ymm4,%ymm6,%ymm2
+       vpavgb %ymm4,%ymm6,%ymm2
+       vpavgw %ymm4,%ymm6,%ymm2
+       vpblendw $7,%ymm4,%ymm6,%ymm2
+       vpcmpeqb %ymm4,%ymm6,%ymm2
+       vpcmpeqd %ymm4,%ymm6,%ymm2
+       vpcmpeqq %ymm4,%ymm6,%ymm2
+       vpcmpeqw %ymm4,%ymm6,%ymm2
+       vpcmpgtb %ymm4,%ymm6,%ymm2
+       vpcmpgtd %ymm4,%ymm6,%ymm2
+       vpcmpgtq %ymm4,%ymm6,%ymm2
+       vpcmpgtw %ymm4,%ymm6,%ymm2
+       vphaddd %ymm4,%ymm6,%ymm2
+       vphaddsw %ymm4,%ymm6,%ymm2
+       vphaddw %ymm4,%ymm6,%ymm2
+       vphsubd %ymm4,%ymm6,%ymm2
+       vphsubsw %ymm4,%ymm6,%ymm2
+       vphsubw %ymm4,%ymm6,%ymm2
+       vpmaddubsw %ymm4,%ymm6,%ymm2
+       vpmaddwd %ymm4,%ymm6,%ymm2
+       vpmaxsb %ymm4,%ymm6,%ymm2
+       vpmaxsd %ymm4,%ymm6,%ymm2
+       vpmaxsw %ymm4,%ymm6,%ymm2
+       vpmaxub %ymm4,%ymm6,%ymm2
+       vpmaxud %ymm4,%ymm6,%ymm2
+       vpmaxuw %ymm4,%ymm6,%ymm2
+       vpminsb %ymm4,%ymm6,%ymm2
+       vpminsd %ymm4,%ymm6,%ymm2
+       vpminsw %ymm4,%ymm6,%ymm2
+       vpminub %ymm4,%ymm6,%ymm2
+       vpminud %ymm4,%ymm6,%ymm2
+       vpminuw %ymm4,%ymm6,%ymm2
+       vpmovmskb %ymm4,%ecx
+       vpmovsxbd %xmm4,%ymm6
+       vpmovsxbq %xmm4,%ymm4
+       vpmovsxbw %xmm4,%ymm4
+       vpmovsxdq %xmm4,%ymm4
+       vpmovsxwd %xmm4,%ymm4
+       vpmovsxwq %xmm4,%ymm6
+       vpmovzxbd %xmm4,%ymm6
+       vpmovzxbq %xmm4,%ymm4
+       vpmovzxbw %xmm4,%ymm4
+       vpmovzxdq %xmm4,%ymm4
+       vpmovzxwd %xmm4,%ymm4
+       vpmovzxwq %xmm4,%ymm6
+       vpmuldq %ymm4,%ymm6,%ymm2
+       vpmulhrsw %ymm4,%ymm6,%ymm2
+       vpmulhuw %ymm4,%ymm6,%ymm2
+       vpmulhw %ymm4,%ymm6,%ymm2
+       vpmulld %ymm4,%ymm6,%ymm2
+       vpmullw %ymm4,%ymm6,%ymm2
+       vpmuludq %ymm4,%ymm6,%ymm2
+       vpor %ymm4,%ymm6,%ymm2
+       vpsadbw %ymm4,%ymm6,%ymm2
+       vpshufb %ymm4,%ymm6,%ymm2
+       vpshufd $7,%ymm6,%ymm2
+       vpshufhw $7,%ymm6,%ymm2
+       vpshuflw $7,%ymm6,%ymm2
+       vpsignb %ymm4,%ymm6,%ymm2
+       vpsignd %ymm4,%ymm6,%ymm2
+       vpsignw %ymm4,%ymm6,%ymm2
+       vpslld $7,%ymm6,%ymm2
+       vpslldq $7,%ymm6,%ymm2
+       vpsllq $7,%ymm6,%ymm2
+       vpsllw $7,%ymm6,%ymm2
+       vpsrad $7,%ymm6,%ymm2
+       vpsraw $7,%ymm6,%ymm2
+       vpsrld $7,%ymm6,%ymm2
+       vpsrldq $7,%ymm6,%ymm2
+       vpsrlq $7,%ymm6,%ymm2
+       vpsrlw $7,%ymm6,%ymm2
+       vpsubb %ymm4,%ymm6,%ymm2
+       vpsubd %ymm4,%ymm6,%ymm2
+       vpsubq %ymm4,%ymm6,%ymm2
+       vpsubsb %ymm4,%ymm6,%ymm2
+       vpsubsw %ymm4,%ymm6,%ymm2
+       vpsubusb %ymm4,%ymm6,%ymm2
+       vpsubusw %ymm4,%ymm6,%ymm2
+       vpsubw %ymm4,%ymm6,%ymm2
+       vpunpckhbw %ymm4,%ymm6,%ymm2
+       vpunpckhdq %ymm4,%ymm6,%ymm2
+       vpunpckhqdq %ymm4,%ymm6,%ymm2
+       vpunpckhwd %ymm4,%ymm6,%ymm2
+       vpunpcklbw %ymm4,%ymm6,%ymm2
+       vpunpckldq %ymm4,%ymm6,%ymm2
+       vpunpcklqdq %ymm4,%ymm6,%ymm2
+       vpunpcklwd %ymm4,%ymm6,%ymm2
+       vpxor %ymm4,%ymm6,%ymm2
index bd7acd1ed90e9665945256d55a3c4397f265353e..90da612f5f803cca4f03cf662a52bb5631271741 100644 (file)
@@ -213,6 +213,8 @@ if [expr ([istarget "i*86-*-*"] ||  [istarget "x86_64-*-*"]) && [gas_32_check]]
     run_dump_test "avx2-intel"
     run_dump_test "avx-gather"
     run_dump_test "avx-gather-intel"
+    run_dump_test "avx-wig"
+    run_dump_test "avx2-wig"
     run_dump_test "avx512f"
     run_dump_test "avx512f-intel"
     run_dump_test "avx512f-opts"
@@ -732,6 +734,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
     run_dump_test "x86-64-avx2-intel"
     run_dump_test "x86-64-avx-gather"
     run_dump_test "x86-64-avx-gather-intel"
+    run_dump_test "x86-64-avx-wig"
+    run_dump_test "x86-64-avx2-wig"
     run_dump_test "x86-64-avx512f"
     run_dump_test "x86-64-avx512f-intel"
     run_dump_test "x86-64-avx512f-opts"
diff --git a/gas/testsuite/gas/i386/x86-64-avx-wig.d b/gas/testsuite/gas/i386/x86-64-avx-wig.d
new file mode 100644 (file)
index 0000000..90d61be
--- /dev/null
@@ -0,0 +1,256 @@
+#as: -mvexwig=1
+#objdump: -dw
+#name: x86-64 AVX WIG insns with -mvexwig=1
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +[a-f0-9]+:   c4 e1 cd 58 d4          vaddpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 58 d4          vaddps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb 58 d4          vaddsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 58 d4          vaddss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 cd d0 d4          vaddsubpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cf d0 d4          vaddsubps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 c9 de d4          vaesdec %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 df d4          vaesdeclast %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 dc d4          vaesenc %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 dd d4          vaesenclast %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 f9 db f4          vaesimc %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e3 f9 df f4 07       vaeskeygenassist \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e3 cd 0d d4 07       vblendpd \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 cd 0c d4 07       vblendps \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd c2 d4 07       vcmpordpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc c2 d4 07       vcmpordps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb c2 d4 07       vcmpordsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca c2 d4 07       vcmpordss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 f9 2f f4          vcomisd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f8 2f f4          vcomiss %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 fe e6 e4          vcvtdq2pd %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e1 fc 5b f4          vcvtdq2ps %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 ff e6 e4          vcvtpd2dq %ymm4,%xmm4
+ +[a-f0-9]+:   c4 e1 fb e6 f4          vcvtpd2dq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 ff e6 e4          vcvtpd2dq %ymm4,%xmm4
+ +[a-f0-9]+:   c4 e1 fd 5a e4          vcvtpd2ps %ymm4,%xmm4
+ +[a-f0-9]+:   c4 e1 f9 5a f4          vcvtpd2ps %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 fd 5a e4          vcvtpd2ps %ymm4,%xmm4
+ +[a-f0-9]+:   c4 e1 fd 5b f4          vcvtps2dq %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fc 5a e4          vcvtps2pd %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e1 cb 5a d4          vcvtsd2ss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 fd e6 e4          vcvttpd2dq %ymm4,%xmm4
+ +[a-f0-9]+:   c4 e1 f9 e6 f4          vcvttpd2dq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 fd e6 e4          vcvttpd2dq %ymm4,%xmm4
+ +[a-f0-9]+:   c4 e1 fe 5b f4          vcvttps2dq %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 cd 5e d4          vdivpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 5e d4          vdivps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb 5e d4          vdivsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 5e d4          vdivss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 41 d4 07       vdppd  \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 cd 40 d4 07       vdpps  \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 f9 17 e1 07       vextractps \$0x7,%xmm4,%rcx
+ +[a-f0-9]+:   c4 e1 cd 7c d4          vhaddpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cf 7c d4          vhaddps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 7d d4          vhsubpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cf 7d d4          vhsubps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 c9 21 d4 07       vinsertps \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ff f0 21          vlddqu \(%rcx\),%ymm4
+ +[a-f0-9]+:   c4 e1 f8 ae 11          vldmxcsr \(%rcx\)
+ +[a-f0-9]+:   c4 e1 f9 f7 f4          vmaskmovdqu %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 cd 5f d4          vmaxpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 5f d4          vmaxps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb 5f d4          vmaxsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 5f d4          vmaxss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 cd 5d d4          vminpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 5d d4          vminps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb 5d d4          vminsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 5d d4          vminss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 fd 28 f4          vmovapd %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fc 28 f4          vmovaps %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fd 29 e6          vmovapd %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fc 29 e6          vmovaps %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 ff 12 f4          vmovddup %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fd 6f f4          vmovdqa %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fe 6f f4          vmovdqu %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fd 7f e6          vmovdqa %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fe 7f e6          vmovdqu %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 c8 12 d4          vmovhlps %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 d9 16 31          vmovhpd \(%rcx\),%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f9 17 21          vmovhpd %xmm4,\(%rcx\)
+ +[a-f0-9]+:   c4 e1 d8 16 31          vmovhps \(%rcx\),%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f8 17 21          vmovhps %xmm4,\(%rcx\)
+ +[a-f0-9]+:   c4 e1 c8 16 d4          vmovlhps %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 d9 12 31          vmovlpd \(%rcx\),%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f9 13 21          vmovlpd %xmm4,\(%rcx\)
+ +[a-f0-9]+:   c4 e1 d8 12 31          vmovlps \(%rcx\),%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f8 13 21          vmovlps %xmm4,\(%rcx\)
+ +[a-f0-9]+:   c4 e1 f9 50 cc          vmovmskpd %xmm4,%rcx
+ +[a-f0-9]+:   c4 e1 f8 50 cc          vmovmskps %xmm4,%rcx
+ +[a-f0-9]+:   c4 e1 fd e7 21          vmovntdq %ymm4,\(%rcx\)
+ +[a-f0-9]+:   c4 e2 f9 2a 21          vmovntdqa \(%rcx\),%xmm4
+ +[a-f0-9]+:   c4 e1 fd 2b 21          vmovntpd %ymm4,\(%rcx\)
+ +[a-f0-9]+:   c4 e1 fc 2b 21          vmovntps %ymm4,\(%rcx\)
+ +[a-f0-9]+:   c4 e1 fa 7e f4          vmovq  %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f9 d6 21          vmovq  %xmm4,\(%rcx\)
+ +[a-f0-9]+:   c4 e1 f9 7e e1          vmovq  %xmm4,%rcx
+ +[a-f0-9]+:   c4 e1 f9 6e e1          vmovq  %rcx,%xmm4
+ +[a-f0-9]+:   c4 e1 fb 10 21          vmovsd \(%rcx\),%xmm4
+ +[a-f0-9]+:   c4 e1 fb 11 21          vmovsd %xmm4,\(%rcx\)
+ +[a-f0-9]+:   c4 e1 fe 16 f4          vmovshdup %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fe 12 f4          vmovsldup %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fa 10 21          vmovss \(%rcx\),%xmm4
+ +[a-f0-9]+:   c4 e1 fa 11 21          vmovss %xmm4,\(%rcx\)
+ +[a-f0-9]+:   c4 e1 fd 10 f4          vmovupd %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fd 11 21          vmovupd %ymm4,\(%rcx\)
+ +[a-f0-9]+:   c4 e1 fc 10 f4          vmovups %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fc 11 21          vmovups %ymm4,\(%rcx\)
+ +[a-f0-9]+:   c4 e3 c9 42 d4 07       vmpsadbw \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 cd 59 d4          vmulpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 59 d4          vmulps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb 59 d4          vmulsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 59 d4          vmulss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 f9 1c f4          vpabsb %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 1e f4          vpabsd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 1d f4          vpabsw %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 c9 6b d4          vpackssdw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 63 d4          vpacksswb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 2b d4          vpackusdw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 67 d4          vpackuswb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 fc d4          vpaddb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 fe d4          vpaddd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 d4 d4          vpaddq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 ec d4          vpaddsb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 ed d4          vpaddsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 dc d4          vpaddusb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 dd d4          vpaddusw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 fd d4          vpaddw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 0f d4 07       vpalignr \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 db d4          vpand  %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 df d4          vpandn %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e0 d4          vpavgb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e3 d4          vpavgw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 0e d4 07       vpblendw \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 44 d4 11       vpclmulhqhqdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 44 d4 01       vpclmulhqlqdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 44 d4 10       vpclmullqhqdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 44 d4 00       vpclmullqlqdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 44 d4 07       vpclmulqdq \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 74 d4          vpcmpeqb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 76 d4          vpcmpeqd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 29 d4          vpcmpeqq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 75 d4          vpcmpeqw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 64 d4          vpcmpgtb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 66 d4          vpcmpgtd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 37 d4          vpcmpgtq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 65 d4          vpcmpgtw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 f9 63 f4 07       vpcmpistri \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e3 f9 62 f4 07       vpcmpistrm \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 c9 02 d4          vphaddd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 03 d4          vphaddsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 01 d4          vphaddw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 f9 41 f4          vphminposuw %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 c9 06 d4          vphsubd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 07 d4          vphsubsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 05 d4          vphsubw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 04 d4          vpmaddubsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f5 d4          vpmaddwd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 3c d4          vpmaxsb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 3d d4          vpmaxsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 ee d4          vpmaxsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c5 c9 de d4             vpmaxub %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 3f d4          vpmaxud %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 3e d4          vpmaxuw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 38 d4          vpminsb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 39 d4          vpminsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 ea d4          vpminsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 da d4          vpminub %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 3b d4          vpminud %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 3a d4          vpminuw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 f9 d7 cc          vpmovmskb %xmm4,%rcx
+ +[a-f0-9]+:   c4 e2 f9 21 f4          vpmovsxbd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 22 f4          vpmovsxbq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 20 f4          vpmovsxbw %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 25 f4          vpmovsxdq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 23 f4          vpmovsxwd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 24 f4          vpmovsxwq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 31 f4          vpmovzxbd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 32 f4          vpmovzxbq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 30 f4          vpmovzxbw %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 35 f4          vpmovzxdq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 33 f4          vpmovzxwd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 f9 34 f4          vpmovzxwq %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 c9 28 d4          vpmuldq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 0b d4          vpmulhrsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e4 d4          vpmulhuw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e5 d4          vpmulhw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 40 d4          vpmulld %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 d5 d4          vpmullw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f4 d4          vpmuludq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 eb d4          vpor   %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f6 d4          vpsadbw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 00 d4          vpshufb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 f9 70 f4 07       vpshufd \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 fa 70 f4 07       vpshufhw \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 fb 70 f4 07       vpshuflw \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e2 c9 08 d4          vpsignb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 0a d4          vpsignd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 c9 09 d4          vpsignw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f2 d4          vpslld %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 73 fc 07       vpslldq \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 c9 f3 d4          vpsllq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f1 d4          vpsllw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e2 d4          vpsrad %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e1 d4          vpsraw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 d2 d4          vpsrld %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 73 dc 07       vpsrldq \$0x7,%xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 c9 d3 d4          vpsrlq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 d1 d4          vpsrlw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f8 d4          vpsubb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 fa d4          vpsubd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 fb d4          vpsubq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e8 d4          vpsubsb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 e9 d4          vpsubsw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 d8 d4          vpsubusb %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 d9 d4          vpsubusw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 f9 d4          vpsubw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e2 fd 17 f4          vptest %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 c9 68 d4          vpunpckhbw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 6a d4          vpunpckhdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 6d d4          vpunpckhqdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 69 d4          vpunpckhwd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 60 d4          vpunpcklbw %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 62 d4          vpunpckldq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 6c d4          vpunpcklqdq %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 61 d4          vpunpcklwd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 c9 ef d4          vpxor  %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 fc 53 f4          vrcpps %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 ca 53 d4          vrcpss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 fd 09 d6 07       vroundpd \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 fd 08 d6 07       vroundps \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 c9 0b d4 07       vroundsd \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e3 c9 0a d4 07       vroundss \$0x7,%xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 fc 52 f4          vrsqrtps %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 ca 52 d4          vrsqrtss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 cd c6 d4 07       vshufpd \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc c6 d4 07       vshufps \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 fd 51 f4          vsqrtpd %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 fc 51 f4          vsqrtps %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 cb 51 d4          vsqrtsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 51 d4          vsqrtss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 f8 ae 19          vstmxcsr \(%rcx\)
+ +[a-f0-9]+:   c4 e1 cd 5c d4          vsubpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 5c d4          vsubps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cb 5c d4          vsubsd %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 ca 5c d4          vsubss %xmm4,%xmm6,%xmm2
+ +[a-f0-9]+:   c4 e1 f9 2e f4          vucomisd %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 f8 2e f4          vucomiss %xmm4,%xmm6
+ +[a-f0-9]+:   c4 e1 cd 15 d4          vunpckhpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 15 d4          vunpckhps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 14 d4          vunpcklpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 14 d4          vunpcklps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 57 d4          vxorpd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cc 57 d4          vxorps %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 fc 77             vzeroall 
+ +[a-f0-9]+:   c4 e1 f8 77             vzeroupper 
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-avx-wig.s b/gas/testsuite/gas/i386/x86-64-avx-wig.s
new file mode 100644 (file)
index 0000000..74ef152
--- /dev/null
@@ -0,0 +1,250 @@
+# Check AVX WIG instructions
+
+       .allow_index_reg
+       .text
+_start:
+       vaddpd %ymm4,%ymm6,%ymm2
+       vaddps %ymm4,%ymm6,%ymm2
+       vaddsd %xmm4,%xmm6,%xmm2
+       vaddss %xmm4,%xmm6,%xmm2
+       vaddsubpd %ymm4,%ymm6,%ymm2
+       vaddsubps %ymm4,%ymm6,%ymm2
+       vaesdec %xmm4,%xmm6,%xmm2
+       vaesdeclast %xmm4,%xmm6,%xmm2
+       vaesenc %xmm4,%xmm6,%xmm2
+       vaesenclast %xmm4,%xmm6,%xmm2
+       vaesimc %xmm4,%xmm6
+       vaeskeygenassist $7,%xmm4,%xmm6
+       vblendpd $7,%ymm4,%ymm6,%ymm2
+       vblendps $7,%ymm4,%ymm6,%ymm2
+       vcmppd $7,%ymm4,%ymm6,%ymm2
+       vcmpps $7,%ymm4,%ymm6,%ymm2
+       vcmpsd $7,%xmm4,%xmm6,%xmm2
+       vcmpss $7,%xmm4,%xmm6,%xmm2
+       vcomisd %xmm4,%xmm6
+       vcomiss %xmm4,%xmm6
+       vcvtdq2pd %xmm4,%ymm4
+       vcvtdq2ps %ymm4,%ymm6
+       vcvtpd2dqy %ymm4,%xmm4
+       vcvtpd2dqx %xmm4,%xmm6
+       vcvtpd2dqy %ymm4,%xmm4
+       vcvtpd2psy %ymm4,%xmm4
+       vcvtpd2psx %xmm4,%xmm6
+       vcvtpd2psy %ymm4,%xmm4
+       vcvtps2dq %ymm4,%ymm6
+       vcvtps2pd %xmm4,%ymm4
+       vcvtsd2ss %xmm4,%xmm6,%xmm2
+       vcvttpd2dqy %ymm4,%xmm4
+       vcvttpd2dqx %xmm4,%xmm6
+       vcvttpd2dqy %ymm4,%xmm4
+       vcvttps2dq %ymm4,%ymm6
+       vdivpd %ymm4,%ymm6,%ymm2
+       vdivps %ymm4,%ymm6,%ymm2
+       vdivsd %xmm4,%xmm6,%xmm2
+       vdivss %xmm4,%xmm6,%xmm2
+       vdppd $7,%xmm4,%xmm6,%xmm2
+       vdpps $7,%ymm4,%ymm6,%ymm2
+       vextractps $7,%xmm4,%rcx
+       vhaddpd %ymm4,%ymm6,%ymm2
+       vhaddps %ymm4,%ymm6,%ymm2
+       vhsubpd %ymm4,%ymm6,%ymm2
+       vhsubps %ymm4,%ymm6,%ymm2
+       vinsertps $7,%xmm4,%xmm6,%xmm2
+       vlddqu (%rcx),%ymm4
+       vldmxcsr (%rcx)
+       vmaskmovdqu %xmm4,%xmm6
+       vmaxpd %ymm4,%ymm6,%ymm2
+       vmaxps %ymm4,%ymm6,%ymm2
+       vmaxsd %xmm4,%xmm6,%xmm2
+       vmaxss %xmm4,%xmm6,%xmm2
+       vminpd %ymm4,%ymm6,%ymm2
+       vminps %ymm4,%ymm6,%ymm2
+       vminsd %xmm4,%xmm6,%xmm2
+       vminss %xmm4,%xmm6,%xmm2
+       vmovapd %ymm4,%ymm6
+       vmovaps %ymm4,%ymm6
+       {store} vmovapd %ymm4,%ymm6
+       {store} vmovaps %ymm4,%ymm6
+       vmovddup %ymm4,%ymm6
+       vmovdqa %ymm4,%ymm6
+       vmovdqu %ymm4,%ymm6
+       {store} vmovdqa %ymm4,%ymm6
+       {store} vmovdqu %ymm4,%ymm6
+       vmovhlps %xmm4,%xmm6,%xmm2
+       vmovhpd (%rcx),%xmm4,%xmm6
+       vmovhpd %xmm4,(%rcx)
+       vmovhps (%rcx),%xmm4,%xmm6
+       vmovhps %xmm4,(%rcx)
+       vmovlhps %xmm4,%xmm6,%xmm2
+       vmovlpd (%rcx),%xmm4,%xmm6
+       vmovlpd %xmm4,(%rcx)
+       vmovlps (%rcx),%xmm4,%xmm6
+       vmovlps %xmm4,(%rcx)
+       vmovmskpd %xmm4,%rcx
+       vmovmskps %xmm4,%rcx
+       vmovntdq %ymm4,(%rcx)
+       vmovntdqa (%rcx),%xmm4
+       vmovntpd %ymm4,(%rcx)
+       vmovntps %ymm4,(%rcx)
+       vmovq %xmm4,%xmm6
+       vmovq %xmm4,(%rcx)
+       vmovq %xmm4,%rcx
+       vmovq %rcx,%xmm4
+       vmovsd (%rcx),%xmm4
+       vmovsd %xmm4,(%rcx)
+       vmovshdup %ymm4,%ymm6
+       vmovsldup %ymm4,%ymm6
+       vmovss (%rcx),%xmm4
+       vmovss %xmm4,(%rcx)
+       vmovupd %ymm4,%ymm6
+       vmovupd %ymm4,(%rcx)
+       vmovups %ymm4,%ymm6
+       vmovups %ymm4,(%rcx)
+       vmpsadbw $7,%xmm4,%xmm6,%xmm2
+       vmulpd %ymm4,%ymm6,%ymm2
+       vmulps %ymm4,%ymm6,%ymm2
+       vmulsd %xmm4,%xmm6,%xmm2
+       vmulss %xmm4,%xmm6,%xmm2
+       vpabsb %xmm4,%xmm6
+       vpabsd %xmm4,%xmm6
+       vpabsw %xmm4,%xmm6
+       vpackssdw %xmm4,%xmm6,%xmm2
+       vpacksswb %xmm4,%xmm6,%xmm2
+       vpackusdw %xmm4,%xmm6,%xmm2
+       vpackuswb %xmm4,%xmm6,%xmm2
+       vpaddb %xmm4,%xmm6,%xmm2
+       vpaddd %xmm4,%xmm6,%xmm2
+       vpaddq %xmm4,%xmm6,%xmm2
+       vpaddsb %xmm4,%xmm6,%xmm2
+       vpaddsw %xmm4,%xmm6,%xmm2
+       vpaddusb %xmm4,%xmm6,%xmm2
+       vpaddusw %xmm4,%xmm6,%xmm2
+       vpaddw %xmm4,%xmm6,%xmm2
+       vpalignr $7,%xmm4,%xmm6,%xmm2
+       vpand %xmm4,%xmm6,%xmm2
+       vpandn %xmm4,%xmm6,%xmm2
+       vpavgb %xmm4,%xmm6,%xmm2
+       vpavgw %xmm4,%xmm6,%xmm2
+       vpblendw $7,%xmm4,%xmm6,%xmm2
+       vpclmulhqhqdq %xmm4,%xmm6,%xmm2
+       vpclmulhqlqdq %xmm4,%xmm6,%xmm2
+       vpclmullqhqdq %xmm4,%xmm6,%xmm2
+       vpclmullqlqdq %xmm4,%xmm6,%xmm2
+       vpclmulqdq $7,%xmm4,%xmm6,%xmm2
+       vpcmpeqb %xmm4,%xmm6,%xmm2
+       vpcmpeqd %xmm4,%xmm6,%xmm2
+       vpcmpeqq %xmm4,%xmm6,%xmm2
+       vpcmpeqw %xmm4,%xmm6,%xmm2
+       vpcmpgtb %xmm4,%xmm6,%xmm2
+       vpcmpgtd %xmm4,%xmm6,%xmm2
+       vpcmpgtq %xmm4,%xmm6,%xmm2
+       vpcmpgtw %xmm4,%xmm6,%xmm2
+       vpcmpistri $7,%xmm4,%xmm6
+       vpcmpistrm $7,%xmm4,%xmm6
+       vphaddd %xmm4,%xmm6,%xmm2
+       vphaddsw %xmm4,%xmm6,%xmm2
+       vphaddw %xmm4,%xmm6,%xmm2
+       vphminposuw %xmm4,%xmm6
+       vphsubd %xmm4,%xmm6,%xmm2
+       vphsubsw %xmm4,%xmm6,%xmm2
+       vphsubw %xmm4,%xmm6,%xmm2
+       vpmaddubsw %xmm4,%xmm6,%xmm2
+       vpmaddwd %xmm4,%xmm6,%xmm2
+       vpmaxsb %xmm4,%xmm6,%xmm2
+       vpmaxsd %xmm4,%xmm6,%xmm2
+       vpmaxsw %xmm4,%xmm6,%xmm2
+       vpmaxub %xmm4,%xmm6,%xmm2
+       vpmaxud %xmm4,%xmm6,%xmm2
+       vpmaxuw %xmm4,%xmm6,%xmm2
+       vpminsb %xmm4,%xmm6,%xmm2
+       vpminsd %xmm4,%xmm6,%xmm2
+       vpminsw %xmm4,%xmm6,%xmm2
+       vpminub %xmm4,%xmm6,%xmm2
+       vpminud %xmm4,%xmm6,%xmm2
+       vpminuw %xmm4,%xmm6,%xmm2
+       vpmovmskb %xmm4,%rcx
+       vpmovsxbd %xmm4,%xmm6
+       vpmovsxbq %xmm4,%xmm6
+       vpmovsxbw %xmm4,%xmm6
+       vpmovsxdq %xmm4,%xmm6
+       vpmovsxwd %xmm4,%xmm6
+       vpmovsxwq %xmm4,%xmm6
+       vpmovzxbd %xmm4,%xmm6
+       vpmovzxbq %xmm4,%xmm6
+       vpmovzxbw %xmm4,%xmm6
+       vpmovzxdq %xmm4,%xmm6
+       vpmovzxwd %xmm4,%xmm6
+       vpmovzxwq %xmm4,%xmm6
+       vpmuldq %xmm4,%xmm6,%xmm2
+       vpmulhrsw %xmm4,%xmm6,%xmm2
+       vpmulhuw %xmm4,%xmm6,%xmm2
+       vpmulhw %xmm4,%xmm6,%xmm2
+       vpmulld %xmm4,%xmm6,%xmm2
+       vpmullw %xmm4,%xmm6,%xmm2
+       vpmuludq %xmm4,%xmm6,%xmm2
+       vpor %xmm4,%xmm6,%xmm2
+       vpsadbw %xmm4,%xmm6,%xmm2
+       vpshufb %xmm4,%xmm6,%xmm2
+       vpshufd $7,%xmm4,%xmm6
+       vpshufhw $7,%xmm4,%xmm6
+       vpshuflw $7,%xmm4,%xmm6
+       vpsignb %xmm4,%xmm6,%xmm2
+       vpsignd %xmm4,%xmm6,%xmm2
+       vpsignw %xmm4,%xmm6,%xmm2
+       vpslld %xmm4,%xmm6,%xmm2
+       vpslldq $7,%xmm4,%xmm6
+       vpsllq %xmm4,%xmm6,%xmm2
+       vpsllw %xmm4,%xmm6,%xmm2
+       vpsrad %xmm4,%xmm6,%xmm2
+       vpsraw %xmm4,%xmm6,%xmm2
+       vpsrld %xmm4,%xmm6,%xmm2
+       vpsrldq $7,%xmm4,%xmm6
+       vpsrlq %xmm4,%xmm6,%xmm2
+       vpsrlw %xmm4,%xmm6,%xmm2
+       vpsubb %xmm4,%xmm6,%xmm2
+       vpsubd %xmm4,%xmm6,%xmm2
+       vpsubq %xmm4,%xmm6,%xmm2
+       vpsubsb %xmm4,%xmm6,%xmm2
+       vpsubsw %xmm4,%xmm6,%xmm2
+       vpsubusb %xmm4,%xmm6,%xmm2
+       vpsubusw %xmm4,%xmm6,%xmm2
+       vpsubw %xmm4,%xmm6,%xmm2
+       vptest %ymm4,%ymm6
+       vpunpckhbw %xmm4,%xmm6,%xmm2
+       vpunpckhdq %xmm4,%xmm6,%xmm2
+       vpunpckhqdq %xmm4,%xmm6,%xmm2
+       vpunpckhwd %xmm4,%xmm6,%xmm2
+       vpunpcklbw %xmm4,%xmm6,%xmm2
+       vpunpckldq %xmm4,%xmm6,%xmm2
+       vpunpcklqdq %xmm4,%xmm6,%xmm2
+       vpunpcklwd %xmm4,%xmm6,%xmm2
+       vpxor %xmm4,%xmm6,%xmm2
+       vrcpps %ymm4,%ymm6
+       vrcpss %xmm4,%xmm6,%xmm2
+       vroundpd $7,%ymm6,%ymm2
+       vroundps $7,%ymm6,%ymm2
+       vroundsd $7,%xmm4,%xmm6,%xmm2
+       vroundss $7,%xmm4,%xmm6,%xmm2
+       vrsqrtps %ymm4,%ymm6
+       vrsqrtss %xmm4,%xmm6,%xmm2
+       vshufpd $7,%ymm4,%ymm6,%ymm2
+       vshufps $7,%ymm4,%ymm6,%ymm2
+       vsqrtpd %ymm4,%ymm6
+       vsqrtps %ymm4,%ymm6
+       vsqrtsd %xmm4,%xmm6,%xmm2
+       vsqrtss %xmm4,%xmm6,%xmm2
+       vstmxcsr (%rcx)
+       vsubpd %ymm4,%ymm6,%ymm2
+       vsubps %ymm4,%ymm6,%ymm2
+       vsubsd %xmm4,%xmm6,%xmm2
+       vsubss %xmm4,%xmm6,%xmm2
+       vucomisd %xmm4,%xmm6
+       vucomiss %xmm4,%xmm6
+       vunpckhpd %ymm4,%ymm6,%ymm2
+       vunpckhps %ymm4,%ymm6,%ymm2
+       vunpcklpd %ymm4,%ymm6,%ymm2
+       vunpcklps %ymm4,%ymm6,%ymm2
+       vxorpd %ymm4,%ymm6,%ymm2
+       vxorps %ymm4,%ymm6,%ymm2
+       vzeroall
+       vzeroupper
diff --git a/gas/testsuite/gas/i386/x86-64-avx2-wig.d b/gas/testsuite/gas/i386/x86-64-avx2-wig.d
new file mode 100644 (file)
index 0000000..55f85d6
--- /dev/null
@@ -0,0 +1,119 @@
+#as: -mvexwig=1
+#objdump: -dw
+#name: x86-64 AVX2 WIG insns with -mvexwig=1
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +[a-f0-9]+:   c4 e2 7d 2a 21          vmovntdqa \(%rcx\),%ymm4
+ +[a-f0-9]+:   c4 e2 7d 2a 21          vmovntdqa \(%rcx\),%ymm4
+ +[a-f0-9]+:   c4 e3 4d 42 d4 07       vmpsadbw \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 fd 1c f4          vpabsb %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e2 fd 1e f4          vpabsd %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e2 fd 1d f4          vpabsw %ymm4,%ymm6
+ +[a-f0-9]+:   c4 e1 cd 6b d4          vpackssdw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 63 d4          vpacksswb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 2b d4          vpackusdw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 67 d4          vpackuswb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd fc d4          vpaddb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd fe d4          vpaddd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd d4 d4          vpaddq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd ec d4          vpaddsb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd ed d4          vpaddsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd dc d4          vpaddusb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd dd d4          vpaddusw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd fd d4          vpaddw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 cd 0f d4 07       vpalignr \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd db d4          vpand  %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd df d4          vpandn %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd e0 d4          vpavgb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd e3 d4          vpavgw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e3 cd 0e d4 07       vpblendw \$0x7,%ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 74 d4          vpcmpeqb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 76 d4          vpcmpeqd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 29 d4          vpcmpeqq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 75 d4          vpcmpeqw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 64 d4          vpcmpgtb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 66 d4          vpcmpgtd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 37 d4          vpcmpgtq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 65 d4          vpcmpgtw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 02 d4          vphaddd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 03 d4          vphaddsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 01 d4          vphaddw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 4d 06 d4          vphsubd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 4d 07 d4          vphsubsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 4d 05 d4          vphsubw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 04 d4          vpmaddubsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd f5 d4          vpmaddwd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 3c d4          vpmaxsb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 3d d4          vpmaxsd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd ee d4          vpmaxsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c5 cd de d4             vpmaxub %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 3f d4          vpmaxud %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 3e d4          vpmaxuw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 38 d4          vpminsb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 39 d4          vpminsd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd ea d4          vpminsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd da d4          vpminub %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 3b d4          vpminud %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 3a d4          vpminuw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 fd d7 cc          vpmovmskb %ymm4,%rcx
+ +[a-f0-9]+:   c4 e2 fd 21 f4          vpmovsxbd %xmm4,%ymm6
+ +[a-f0-9]+:   c4 e2 fd 22 e4          vpmovsxbq %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 20 e4          vpmovsxbw %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 25 e4          vpmovsxdq %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 23 e4          vpmovsxwd %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 24 f4          vpmovsxwq %xmm4,%ymm6
+ +[a-f0-9]+:   c4 e2 fd 31 f4          vpmovzxbd %xmm4,%ymm6
+ +[a-f0-9]+:   c4 e2 fd 32 e4          vpmovzxbq %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 30 e4          vpmovzxbw %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 35 e4          vpmovzxdq %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 33 e4          vpmovzxwd %xmm4,%ymm4
+ +[a-f0-9]+:   c4 e2 fd 34 f4          vpmovzxwq %xmm4,%ymm6
+ +[a-f0-9]+:   c4 e2 cd 28 d4          vpmuldq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 0b d4          vpmulhrsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd e4 d4          vpmulhuw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd e5 d4          vpmulhw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 40 d4          vpmulld %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd d5 d4          vpmullw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd f4 d4          vpmuludq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd eb d4          vpor   %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd f6 d4          vpsadbw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 00 d4          vpshufb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 fd 70 d6 07       vpshufd \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 fe 70 d6 07       vpshufhw \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ff 70 d6 07       vpshuflw \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 08 d4          vpsignb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 0a d4          vpsignd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e2 cd 09 d4          vpsignw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 72 f6 07       vpslld \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 73 fe 07       vpslldq \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 73 f6 07       vpsllq \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 71 f6 07       vpsllw \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 72 e6 07       vpsrad \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 71 e6 07       vpsraw \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 72 d6 07       vpsrld \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 73 de 07       vpsrldq \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 73 d6 07       vpsrlq \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 ed 71 d6 07       vpsrlw \$0x7,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd f8 d4          vpsubb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd fa d4          vpsubd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd fb d4          vpsubq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd e8 d4          vpsubsb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd e9 d4          vpsubsw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd d8 d4          vpsubusb %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd d9 d4          vpsubusw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd f9 d4          vpsubw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 68 d4          vpunpckhbw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 6a d4          vpunpckhdq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 6d d4          vpunpckhqdq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 69 d4          vpunpckhwd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 60 d4          vpunpcklbw %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 62 d4          vpunpckldq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 6c d4          vpunpcklqdq %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd 61 d4          vpunpcklwd %ymm4,%ymm6,%ymm2
+ +[a-f0-9]+:   c4 e1 cd ef d4          vpxor  %ymm4,%ymm6,%ymm2
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-avx2-wig.s b/gas/testsuite/gas/i386/x86-64-avx2-wig.s
new file mode 100644 (file)
index 0000000..162a9f8
--- /dev/null
@@ -0,0 +1,113 @@
+# Check AVX2 WIG instructions
+
+       .allow_index_reg
+       .text
+_start:
+       vmovntdqa (%rcx),%ymm4
+       vmovntdqa (%rcx),%ymm4
+       vmpsadbw $7,%ymm4,%ymm6,%ymm2
+       vpabsb %ymm4,%ymm6
+       vpabsd %ymm4,%ymm6
+       vpabsw %ymm4,%ymm6
+       vpackssdw %ymm4,%ymm6,%ymm2
+       vpacksswb %ymm4,%ymm6,%ymm2
+       vpackusdw %ymm4,%ymm6,%ymm2
+       vpackuswb %ymm4,%ymm6,%ymm2
+       vpaddb %ymm4,%ymm6,%ymm2
+       vpaddd %ymm4,%ymm6,%ymm2
+       vpaddq %ymm4,%ymm6,%ymm2
+       vpaddsb %ymm4,%ymm6,%ymm2
+       vpaddsw %ymm4,%ymm6,%ymm2
+       vpaddusb %ymm4,%ymm6,%ymm2
+       vpaddusw %ymm4,%ymm6,%ymm2
+       vpaddw %ymm4,%ymm6,%ymm2
+       vpalignr $7,%ymm4,%ymm6,%ymm2
+       vpand %ymm4,%ymm6,%ymm2
+       vpandn %ymm4,%ymm6,%ymm2
+       vpavgb %ymm4,%ymm6,%ymm2
+       vpavgw %ymm4,%ymm6,%ymm2
+       vpblendw $7,%ymm4,%ymm6,%ymm2
+       vpcmpeqb %ymm4,%ymm6,%ymm2
+       vpcmpeqd %ymm4,%ymm6,%ymm2
+       vpcmpeqq %ymm4,%ymm6,%ymm2
+       vpcmpeqw %ymm4,%ymm6,%ymm2
+       vpcmpgtb %ymm4,%ymm6,%ymm2
+       vpcmpgtd %ymm4,%ymm6,%ymm2
+       vpcmpgtq %ymm4,%ymm6,%ymm2
+       vpcmpgtw %ymm4,%ymm6,%ymm2
+       vphaddd %ymm4,%ymm6,%ymm2
+       vphaddsw %ymm4,%ymm6,%ymm2
+       vphaddw %ymm4,%ymm6,%ymm2
+       vphsubd %ymm4,%ymm6,%ymm2
+       vphsubsw %ymm4,%ymm6,%ymm2
+       vphsubw %ymm4,%ymm6,%ymm2
+       vpmaddubsw %ymm4,%ymm6,%ymm2
+       vpmaddwd %ymm4,%ymm6,%ymm2
+       vpmaxsb %ymm4,%ymm6,%ymm2
+       vpmaxsd %ymm4,%ymm6,%ymm2
+       vpmaxsw %ymm4,%ymm6,%ymm2
+       vpmaxub %ymm4,%ymm6,%ymm2
+       vpmaxud %ymm4,%ymm6,%ymm2
+       vpmaxuw %ymm4,%ymm6,%ymm2
+       vpminsb %ymm4,%ymm6,%ymm2
+       vpminsd %ymm4,%ymm6,%ymm2
+       vpminsw %ymm4,%ymm6,%ymm2
+       vpminub %ymm4,%ymm6,%ymm2
+       vpminud %ymm4,%ymm6,%ymm2
+       vpminuw %ymm4,%ymm6,%ymm2
+       vpmovmskb %ymm4,%ecx
+       vpmovsxbd %xmm4,%ymm6
+       vpmovsxbq %xmm4,%ymm4
+       vpmovsxbw %xmm4,%ymm4
+       vpmovsxdq %xmm4,%ymm4
+       vpmovsxwd %xmm4,%ymm4
+       vpmovsxwq %xmm4,%ymm6
+       vpmovzxbd %xmm4,%ymm6
+       vpmovzxbq %xmm4,%ymm4
+       vpmovzxbw %xmm4,%ymm4
+       vpmovzxdq %xmm4,%ymm4
+       vpmovzxwd %xmm4,%ymm4
+       vpmovzxwq %xmm4,%ymm6
+       vpmuldq %ymm4,%ymm6,%ymm2
+       vpmulhrsw %ymm4,%ymm6,%ymm2
+       vpmulhuw %ymm4,%ymm6,%ymm2
+       vpmulhw %ymm4,%ymm6,%ymm2
+       vpmulld %ymm4,%ymm6,%ymm2
+       vpmullw %ymm4,%ymm6,%ymm2
+       vpmuludq %ymm4,%ymm6,%ymm2
+       vpor %ymm4,%ymm6,%ymm2
+       vpsadbw %ymm4,%ymm6,%ymm2
+       vpshufb %ymm4,%ymm6,%ymm2
+       vpshufd $7,%ymm6,%ymm2
+       vpshufhw $7,%ymm6,%ymm2
+       vpshuflw $7,%ymm6,%ymm2
+       vpsignb %ymm4,%ymm6,%ymm2
+       vpsignd %ymm4,%ymm6,%ymm2
+       vpsignw %ymm4,%ymm6,%ymm2
+       vpslld $7,%ymm6,%ymm2
+       vpslldq $7,%ymm6,%ymm2
+       vpsllq $7,%ymm6,%ymm2
+       vpsllw $7,%ymm6,%ymm2
+       vpsrad $7,%ymm6,%ymm2
+       vpsraw $7,%ymm6,%ymm2
+       vpsrld $7,%ymm6,%ymm2
+       vpsrldq $7,%ymm6,%ymm2
+       vpsrlq $7,%ymm6,%ymm2
+       vpsrlw $7,%ymm6,%ymm2
+       vpsubb %ymm4,%ymm6,%ymm2
+       vpsubd %ymm4,%ymm6,%ymm2
+       vpsubq %ymm4,%ymm6,%ymm2
+       vpsubsb %ymm4,%ymm6,%ymm2
+       vpsubsw %ymm4,%ymm6,%ymm2
+       vpsubusb %ymm4,%ymm6,%ymm2
+       vpsubusw %ymm4,%ymm6,%ymm2
+       vpsubw %ymm4,%ymm6,%ymm2
+       vpunpckhbw %ymm4,%ymm6,%ymm2
+       vpunpckhdq %ymm4,%ymm6,%ymm2
+       vpunpckhqdq %ymm4,%ymm6,%ymm2
+       vpunpckhwd %ymm4,%ymm6,%ymm2
+       vpunpcklbw %ymm4,%ymm6,%ymm2
+       vpunpckldq %ymm4,%ymm6,%ymm2
+       vpunpcklqdq %ymm4,%ymm6,%ymm2
+       vpunpcklwd %ymm4,%ymm6,%ymm2
+       vpxor %ymm4,%ymm6,%ymm2