[PATCH 2/2] x86: Add -mvexwig=[0|1] option to assembler

H.J. Lu hjl.tools@gmail.com
Mon Sep 17 15:48:00 GMT 2018


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.
---
 gas/NEWS                                 |   3 +
 gas/config/tc-i386.c                     |  45 +++-
 gas/doc/c-i386.texi                      |  10 +
 gas/testsuite/gas/i386/avx-wig.d         | 254 ++++++++++++++++++++++
 gas/testsuite/gas/i386/avx-wig.s         | 248 ++++++++++++++++++++++
 gas/testsuite/gas/i386/avx2-wig.d        | 119 +++++++++++
 gas/testsuite/gas/i386/avx2-wig.s        | 113 ++++++++++
 gas/testsuite/gas/i386/i386.exp          |   4 +
 gas/testsuite/gas/i386/x86-64-avx-wig.d  | 256 +++++++++++++++++++++++
 gas/testsuite/gas/i386/x86-64-avx-wig.s  | 250 ++++++++++++++++++++++
 gas/testsuite/gas/i386/x86-64-avx2-wig.d | 119 +++++++++++
 gas/testsuite/gas/i386/x86-64-avx2-wig.s | 113 ++++++++++
 12 files changed, 1523 insertions(+), 11 deletions(-)
 create mode 100644 gas/testsuite/gas/i386/avx-wig.d
 create mode 100644 gas/testsuite/gas/i386/avx-wig.s
 create mode 100644 gas/testsuite/gas/i386/avx2-wig.d
 create mode 100644 gas/testsuite/gas/i386/avx2-wig.s
 create mode 100644 gas/testsuite/gas/i386/x86-64-avx-wig.d
 create mode 100644 gas/testsuite/gas/i386/x86-64-avx-wig.s
 create mode 100644 gas/testsuite/gas/i386/x86-64-avx2-wig.d
 create mode 100644 gas/testsuite/gas/i386/x86-64-avx2-wig.s

diff --git a/gas/NEWS b/gas/NEWS
index 87fe10a474..26f78b08c6 100644
--- 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
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index d2ee3b4445..2204d00d8c 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -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"));
diff --git a/gas/doc/c-i386.texi b/gas/doc/c-i386.texi
index 64e33977d7..77ccfbc1ab 100644
--- a/gas/doc/c-i386.texi
+++ b/gas/doc/c-i386.texi
@@ -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
index 0000000000..00a2195917
--- /dev/null
+++ b/gas/testsuite/gas/i386/avx-wig.d
@@ -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
index 0000000000..fa982368f8
--- /dev/null
+++ b/gas/testsuite/gas/i386/avx-wig.s
@@ -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
index 0000000000..03ef21fcda
--- /dev/null
+++ b/gas/testsuite/gas/i386/avx2-wig.d
@@ -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
index 0000000000..6ebc5e7848
--- /dev/null
+++ b/gas/testsuite/gas/i386/avx2-wig.s
@@ -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
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index bd7acd1ed9..90da612f5f 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -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
index 0000000000..90d61be4f5
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-avx-wig.d
@@ -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
index 0000000000..74ef15251c
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-avx-wig.s
@@ -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
index 0000000000..55f85d6d62
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-avx2-wig.d
@@ -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
index 0000000000..162a9f84bb
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-avx2-wig.s
@@ -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
-- 
2.17.1



More information about the Binutils mailing list