From 03751133023c5623cf60f8d3222cb79a376331f9 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 17 Sep 2018 09:26:18 -0700 Subject: [PATCH] x86: Add -mvexwig=[0|1] option to assembler 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/ChangeLog | 22 ++ 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 ++++++++++ 13 files changed, 1545 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/ChangeLog b/gas/ChangeLog index a7919c016bb..7428c24526b 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,25 @@ +2018-09-17 H.J. Lu + + * 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 * testsuite/gas/arm/arch7.d: Delete notarget. diff --git a/gas/NEWS b/gas/NEWS index 87fe10a474d..26f78b08c6c 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 d2ee3b44451..2204d00d8c0 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 64e33977d7b..77ccfbc1ab6 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 00000000000..00a2195917f --- /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 00000000000..fa982368f84 --- /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 00000000000..03ef21fcda3 --- /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 00000000000..6ebc5e78489 --- /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 bd7acd1ed90..90da612f5f8 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 00000000000..90d61be4f57 --- /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 00000000000..74ef15251cd --- /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 00000000000..55f85d6d620 --- /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 00000000000..162a9f84bb6 --- /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.30.2