x86: Optimize with EVEX128 encoding for AVX512VL
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 9 Mar 2018 03:57:35 +0000 (19:57 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 9 Mar 2018 03:57:48 +0000 (19:57 -0800)
We can optimize AVX512 instructions with EVEX128 only if AVX512VL is
enabled:

1. Instruction is an AVX512VL instruction. Or
2. AVX512VL is enabled explicitly by -march=+avx512vl/".arch .avx512vl".

We should optimize EVEX instructions with EVEX128 encoding when pseudo
{evex} prefix is used.

* config/tc-i386.c (set_cpu_arch): Set cpu_arch_isa_flags.
(md_parse_option): Likewise.
(optimize_encoding): Check i.tm.cpu_flags and cpu_arch_isa_flags
for cpuavx512vl instead of cpu_arch_flags.  Optimize EVEX with
EVEX128 when EVEX encoding is required.
* testsuite/gas/i386/i386.exp: Run optimize-4, optimize-5,
x86-64-optimize-5 and x86-64-optimize-6.
* testsuite/gas/i386/optimize-1.d: Updated.
* testsuite/gas/i386/x86-64-optimize-2.d: Likewise.
* testsuite/gas/i386/optimize-4.d: New file.
* testsuite/gas/i386/optimize-4.s: Likewise.
* testsuite/gas/i386/optimize-5.d: Likewise.
* testsuite/gas/i386/optimize-5.s: Likewise.
* testsuite/gas/i386/x86-64-optimize-5.d: Likewise.
* testsuite/gas/i386/x86-64-optimize-5.s: Likewise.
* testsuite/gas/i386/x86-64-optimize-6.d: Likewise.
* testsuite/gas/i386/x86-64-optimize-6.s: Likewise.

13 files changed:
gas/ChangeLog
gas/config/tc-i386.c
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/optimize-1.d
gas/testsuite/gas/i386/optimize-4.d [new file with mode: 0644]
gas/testsuite/gas/i386/optimize-4.s [new file with mode: 0644]
gas/testsuite/gas/i386/optimize-5.d [new file with mode: 0644]
gas/testsuite/gas/i386/optimize-5.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-optimize-2.d
gas/testsuite/gas/i386/x86-64-optimize-5.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-optimize-5.s [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-optimize-6.d [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-optimize-6.s [new file with mode: 0644]

index 7c37f13..0cf0108 100644 (file)
@@ -1,5 +1,25 @@
 2018-03-08  H.J. Lu  <hongjiu.lu@intel.com>
 
+       * config/tc-i386.c (set_cpu_arch): Set cpu_arch_isa_flags.
+       (md_parse_option): Likewise.
+       (optimize_encoding): Check i.tm.cpu_flags and cpu_arch_isa_flags
+       for cpuavx512vl instead of cpu_arch_flags.  Optimize EVEX with
+       EVEX128 when EVEX encoding is required.
+       * testsuite/gas/i386/i386.exp: Run optimize-4, optimize-5,
+       x86-64-optimize-5 and x86-64-optimize-6.
+       * testsuite/gas/i386/optimize-1.d: Updated.
+       * testsuite/gas/i386/x86-64-optimize-2.d: Likewise.
+       * testsuite/gas/i386/optimize-4.d: New file.
+       * testsuite/gas/i386/optimize-4.s: Likewise.
+       * testsuite/gas/i386/optimize-5.d: Likewise.
+       * testsuite/gas/i386/optimize-5.s: Likewise.
+       * testsuite/gas/i386/x86-64-optimize-5.d: Likewise.
+       * testsuite/gas/i386/x86-64-optimize-5.s: Likewise.
+       * testsuite/gas/i386/x86-64-optimize-6.d: Likewise.
+       * testsuite/gas/i386/x86-64-optimize-6.s: Likewise.
+
+2018-03-08  H.J. Lu  <hongjiu.lu@intel.com>
+
        * config/tc-i386.c (optimize_encoding): Also encode "clr reg64"
        as "xor reg32, reg32".
        * testsuite/gas/i386/x86-64-optimize-1.s: Add "clr reg64" tests.
index 1c64d08..ef7b64b 100644 (file)
@@ -2622,6 +2622,10 @@ set_cpu_arch (int dummy ATTRIBUTE_UNUSED)
                  cpu_arch_flags = flags;
                  cpu_arch_isa_flags = flags;
                }
+             else
+               cpu_arch_isa_flags
+                 = cpu_flags_or (cpu_arch_isa_flags,
+                                 cpu_arch[j].flags);
              (void) restore_line_pointer (e);
              demand_empty_rest_of_line ();
              return;
@@ -3871,7 +3875,8 @@ optimize_encoding (void)
               || (!i.mask
                   && !i.rounding
                   && is_evex_encoding (&i.tm)
-                  && cpu_arch_flags.bitfield.cpuavx512vl))
+                  && (i.tm.cpu_flags.bitfield.cpuavx512vl
+                      || cpu_arch_isa_flags.bitfield.cpuavx512vl)))
           && ((i.tm.base_opcode == 0x55
                || i.tm.base_opcode == 0x6655
                || i.tm.base_opcode == 0x66df
@@ -3915,13 +3920,7 @@ optimize_encoding (void)
        */
       if (is_evex_encoding (&i.tm))
        {
-         /* If only lower 16 vector registers are used, we can use
-            VEX encoding.  */
-         for (j = 0; j < 3; j++)
-           if (register_number (i.op[j].regs) > 15)
-             break;
-
-         if (j < 3)
+         if (i.vec_encoding == vex_encoding_evex)
            i.tm.opcode_modifier.evex = EVEX128;
          else
            {
@@ -10524,6 +10523,10 @@ md_parse_option (int c, const char *arg)
                      cpu_arch_flags = flags;
                      cpu_arch_isa_flags = flags;
                    }
+                 else
+                   cpu_arch_isa_flags
+                     = cpu_flags_or (cpu_arch_isa_flags,
+                                     cpu_arch[j].flags);
                  break;
                }
            }
index f28e6a9..fd87562 100644 (file)
@@ -442,6 +442,8 @@ if [expr ([istarget "i*86-*-*"] ||  [istarget "x86_64-*-*"]) && [gas_32_check]]
     run_dump_test "optimize-1"
     run_dump_test "optimize-2"
     run_dump_test "optimize-3"
+    run_dump_test "optimize-4"
+    run_dump_test "optimize-5"
 
     # These tests require support for 8 and 16 bit relocs,
     # so we only run them for ELF and COFF targets.
@@ -928,6 +930,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
     run_dump_test "x86-64-optimize-2"
     run_dump_test "x86-64-optimize-3"
     run_dump_test "x86-64-optimize-4"
+    run_dump_test "x86-64-optimize-5"
+    run_dump_test "x86-64-optimize-6"
 
     if { ![istarget "*-*-aix*"]
       && ![istarget "*-*-beos*"]
index 3ea6e75..f7da296 100644 (file)
@@ -10,52 +10,52 @@ Disassembly of section .text:
 0+ <_start>:
  +[a-f0-9]+:   62 f1 f5 4f 55 e9       vandnpd %zmm1,%zmm1,%zmm5\{%k7\}
  +[a-f0-9]+:   62 f1 f5 af 55 e9       vandnpd %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
- +[a-f0-9]+:   c5 f1 55 e9             vandnpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 48 55 e9       vandnpd %zmm1,%zmm1,%zmm5
  +[a-f0-9]+:   c5 f1 55 e9             vandnpd %xmm1,%xmm1,%xmm5
  +[a-f0-9]+:   62 f1 74 4f 55 e9       vandnps %zmm1,%zmm1,%zmm5\{%k7\}
  +[a-f0-9]+:   62 f1 74 af 55 e9       vandnps %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
- +[a-f0-9]+:   c5 f0 55 e9             vandnps %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 74 48 55 e9       vandnps %zmm1,%zmm1,%zmm5
  +[a-f0-9]+:   c5 f0 55 e9             vandnps %xmm1,%xmm1,%xmm5
  +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
  +[a-f0-9]+:   62 f1 75 4f df e9       vpandnd %zmm1,%zmm1,%zmm5\{%k7\}
  +[a-f0-9]+:   62 f1 75 af df e9       vpandnd %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
- +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 48 df e9       vpandnd %zmm1,%zmm1,%zmm5
  +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
  +[a-f0-9]+:   62 f1 f5 4f df e9       vpandnq %zmm1,%zmm1,%zmm5\{%k7\}
  +[a-f0-9]+:   62 f1 f5 af df e9       vpandnq %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
- +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 48 df e9       vpandnq %zmm1,%zmm1,%zmm5
  +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
  +[a-f0-9]+:   62 f1 f5 4f 57 e9       vxorpd %zmm1,%zmm1,%zmm5\{%k7\}
  +[a-f0-9]+:   62 f1 f5 af 57 e9       vxorpd %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
- +[a-f0-9]+:   c5 f1 57 e9             vxorpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 48 57 e9       vxorpd %zmm1,%zmm1,%zmm5
  +[a-f0-9]+:   c5 f1 57 e9             vxorpd %xmm1,%xmm1,%xmm5
  +[a-f0-9]+:   62 f1 74 4f 57 e9       vxorps %zmm1,%zmm1,%zmm5\{%k7\}
  +[a-f0-9]+:   62 f1 74 af 57 e9       vxorps %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
- +[a-f0-9]+:   c5 f0 57 e9             vxorps %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 74 48 57 e9       vxorps %zmm1,%zmm1,%zmm5
  +[a-f0-9]+:   c5 f0 57 e9             vxorps %xmm1,%xmm1,%xmm5
  +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
  +[a-f0-9]+:   62 f1 75 4f ef e9       vpxord %zmm1,%zmm1,%zmm5\{%k7\}
  +[a-f0-9]+:   62 f1 75 af ef e9       vpxord %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
- +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 48 ef e9       vpxord %zmm1,%zmm1,%zmm5
  +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
  +[a-f0-9]+:   62 f1 f5 4f ef e9       vpxorq %zmm1,%zmm1,%zmm5\{%k7\}
  +[a-f0-9]+:   62 f1 f5 af ef e9       vpxorq %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
- +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 48 ef e9       vpxorq %zmm1,%zmm1,%zmm5
  +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
  +[a-f0-9]+:   62 f1 75 4f f8 e9       vpsubb %zmm1,%zmm1,%zmm5\{%k7\}
  +[a-f0-9]+:   62 f1 75 af f8 e9       vpsubb %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
- +[a-f0-9]+:   c5 f1 f8 e9             vpsubb %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 48 f8 e9       vpsubb %zmm1,%zmm1,%zmm5
  +[a-f0-9]+:   c5 f1 f8 e9             vpsubb %xmm1,%xmm1,%xmm5
  +[a-f0-9]+:   62 f1 75 4f f9 e9       vpsubw %zmm1,%zmm1,%zmm5\{%k7\}
  +[a-f0-9]+:   62 f1 75 af f9 e9       vpsubw %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
- +[a-f0-9]+:   c5 f1 f9 e9             vpsubw %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 48 f9 e9       vpsubw %zmm1,%zmm1,%zmm5
  +[a-f0-9]+:   c5 f1 f9 e9             vpsubw %xmm1,%xmm1,%xmm5
  +[a-f0-9]+:   62 f1 75 4f fa e9       vpsubd %zmm1,%zmm1,%zmm5\{%k7\}
  +[a-f0-9]+:   62 f1 75 af fa e9       vpsubd %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
- +[a-f0-9]+:   c5 f1 fa e9             vpsubd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 48 fa e9       vpsubd %zmm1,%zmm1,%zmm5
  +[a-f0-9]+:   c5 f1 fa e9             vpsubd %xmm1,%xmm1,%xmm5
  +[a-f0-9]+:   62 f1 f5 4f fb e9       vpsubq %zmm1,%zmm1,%zmm5\{%k7\}
  +[a-f0-9]+:   62 f1 f5 af fb e9       vpsubq %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
- +[a-f0-9]+:   c5 f1 fb e9             vpsubq %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 48 fb e9       vpsubq %zmm1,%zmm1,%zmm5
  +[a-f0-9]+:   c5 f1 fb e9             vpsubq %xmm1,%xmm1,%xmm5
 #pass
diff --git a/gas/testsuite/gas/i386/optimize-4.d b/gas/testsuite/gas/i386/optimize-4.d
new file mode 100644 (file)
index 0000000..8c1cea5
--- /dev/null
@@ -0,0 +1,63 @@
+#as: -O2 -march=+avx512vl -I${srcdir}/$subdir
+#objdump: -drw
+#name: optimized encoding 4 with -O2
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +[a-f0-9]+:   62 f1 f5 4f 55 e9       vandnpd %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 f5 af 55 e9       vandnpd %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 55 e9             vandnpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 55 e9             vandnpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 74 4f 55 e9       vandnps %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 74 af 55 e9       vandnps %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f0 55 e9             vandnps %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f0 55 e9             vandnps %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 4f df e9       vpandnd %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 75 af df e9       vpandnd %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 4f df e9       vpandnq %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 f5 af df e9       vpandnq %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 4f 57 e9       vxorpd %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 f5 af 57 e9       vxorpd %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 57 e9             vxorpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 57 e9             vxorpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 74 4f 57 e9       vxorps %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 74 af 57 e9       vxorps %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f0 57 e9             vxorps %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f0 57 e9             vxorps %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 4f ef e9       vpxord %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 75 af ef e9       vpxord %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 4f ef e9       vpxorq %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 f5 af ef e9       vpxorq %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 4f f8 e9       vpsubb %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 75 af f8 e9       vpsubb %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 f8 e9             vpsubb %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 f8 e9             vpsubb %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 4f f9 e9       vpsubw %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 75 af f9 e9       vpsubw %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 f9 e9             vpsubw %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 f9 e9             vpsubw %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 4f fa e9       vpsubd %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 75 af fa e9       vpsubd %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 fa e9             vpsubd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 fa e9             vpsubd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 4f fb e9       vpsubq %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 f5 af fb e9       vpsubq %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 fb e9             vpsubq %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 fb e9             vpsubq %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 08 55 e9       vandnpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 08 55 e9       vandnpd %xmm1,%xmm1,%xmm5
+#pass
diff --git a/gas/testsuite/gas/i386/optimize-4.s b/gas/testsuite/gas/i386/optimize-4.s
new file mode 100644 (file)
index 0000000..b44c44a
--- /dev/null
@@ -0,0 +1,6 @@
+# Check instructions with optimized encoding
+
+.include "optimize-1.s"
+
+       {evex} vandnpd %zmm1, %zmm1, %zmm5
+       {evex} vandnpd %ymm1, %ymm1, %ymm5
diff --git a/gas/testsuite/gas/i386/optimize-5.d b/gas/testsuite/gas/i386/optimize-5.d
new file mode 100644 (file)
index 0000000..13cd578
--- /dev/null
@@ -0,0 +1,63 @@
+#as: -O2 -I${srcdir}/$subdir
+#objdump: -drw
+#name: optimized encoding 5 with -O2
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +[a-f0-9]+:   62 f1 f5 4f 55 e9       vandnpd %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 f5 af 55 e9       vandnpd %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 55 e9             vandnpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 55 e9             vandnpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 74 4f 55 e9       vandnps %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 74 af 55 e9       vandnps %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f0 55 e9             vandnps %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f0 55 e9             vandnps %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 4f df e9       vpandnd %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 75 af df e9       vpandnd %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 4f df e9       vpandnq %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 f5 af df e9       vpandnq %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 df e9             vpandn %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 4f 57 e9       vxorpd %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 f5 af 57 e9       vxorpd %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 57 e9             vxorpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 57 e9             vxorpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 74 4f 57 e9       vxorps %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 74 af 57 e9       vxorps %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f0 57 e9             vxorps %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f0 57 e9             vxorps %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 4f ef e9       vpxord %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 75 af ef e9       vpxord %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 4f ef e9       vpxorq %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 f5 af ef e9       vpxorq %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 ef e9             vpxor  %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 4f f8 e9       vpsubb %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 75 af f8 e9       vpsubb %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 f8 e9             vpsubb %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 f8 e9             vpsubb %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 4f f9 e9       vpsubw %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 75 af f9 e9       vpsubw %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 f9 e9             vpsubw %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 f9 e9             vpsubw %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 75 4f fa e9       vpsubd %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 75 af fa e9       vpsubd %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 fa e9             vpsubd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 fa e9             vpsubd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 4f fb e9       vpsubq %zmm1,%zmm1,%zmm5\{%k7\}
+ +[a-f0-9]+:   62 f1 f5 af fb e9       vpsubq %ymm1,%ymm1,%ymm5\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 f1 fb e9             vpsubq %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   c5 f1 fb e9             vpsubq %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 08 55 e9       vandnpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 08 55 e9       vandnpd %xmm1,%xmm1,%xmm5
+#pass
diff --git a/gas/testsuite/gas/i386/optimize-5.s b/gas/testsuite/gas/i386/optimize-5.s
new file mode 100644 (file)
index 0000000..66c762b
--- /dev/null
@@ -0,0 +1,8 @@
+# Check instructions with optimized encoding
+
+       .arch .avx512vl
+
+.include "optimize-1.s"
+
+       {evex} vandnpd %zmm1, %zmm1, %zmm5
+       {evex} vandnpd %ymm1, %ymm1, %ymm5
index f59e9b6..9222efe 100644 (file)
@@ -10,100 +10,100 @@ Disassembly of section .text:
 0+ <_start>:
  +[a-f0-9]+:   62 71 f5 4f 55 f9       vandnpd %zmm1,%zmm1,%zmm15\{%k7\}
  +[a-f0-9]+:   62 71 f5 af 55 f9       vandnpd %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   62 71 f5 48 55 f9       vandnpd %zmm1,%zmm1,%zmm15
  +[a-f0-9]+:   c5 71 55 f9             vandnpd %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   c5 71 55 f9             vandnpd %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   62 e1 f5 08 55 c1       vandnpd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 48 55 c1       vandnpd %zmm1,%zmm1,%zmm16
  +[a-f0-9]+:   62 e1 f5 08 55 c1       vandnpd %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 b1 f5 00 55 c9       vandnpd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 40 55 c9       vandnpd %zmm17,%zmm17,%zmm1
  +[a-f0-9]+:   62 b1 f5 00 55 c9       vandnpd %xmm17,%xmm17,%xmm1
  +[a-f0-9]+:   62 71 74 4f 55 f9       vandnps %zmm1,%zmm1,%zmm15\{%k7\}
  +[a-f0-9]+:   62 71 74 af 55 f9       vandnps %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   62 71 74 48 55 f9       vandnps %zmm1,%zmm1,%zmm15
  +[a-f0-9]+:   c5 70 55 f9             vandnps %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   c5 70 55 f9             vandnps %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   62 e1 74 08 55 c1       vandnps %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 74 48 55 c1       vandnps %zmm1,%zmm1,%zmm16
  +[a-f0-9]+:   62 e1 74 08 55 c1       vandnps %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 b1 74 00 55 c9       vandnps %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 74 40 55 c9       vandnps %zmm17,%zmm17,%zmm1
  +[a-f0-9]+:   62 b1 74 00 55 c9       vandnps %xmm17,%xmm17,%xmm1
  +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
  +[a-f0-9]+:   62 71 75 4f df f9       vpandnd %zmm1,%zmm1,%zmm15\{%k7\}
  +[a-f0-9]+:   62 71 75 af df f9       vpandnd %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   62 71 75 48 df f9       vpandnd %zmm1,%zmm1,%zmm15
  +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 75 48 df c1       vpandnd %zmm1,%zmm1,%zmm16
  +[a-f0-9]+:   62 e1 75 08 df c1       vpandnd %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 e1 75 08 df c1       vpandnd %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 b1 75 00 df c9       vpandnd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 40 df c9       vpandnd %zmm17,%zmm17,%zmm1
  +[a-f0-9]+:   62 b1 75 00 df c9       vpandnd %xmm17,%xmm17,%xmm1
  +[a-f0-9]+:   62 71 f5 4f df f9       vpandnq %zmm1,%zmm1,%zmm15\{%k7\}
  +[a-f0-9]+:   62 71 f5 af df f9       vpandnq %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   62 71 f5 48 df f9       vpandnq %zmm1,%zmm1,%zmm15
  +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   62 e1 f5 08 df c1       vpandnq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 48 df c1       vpandnq %zmm1,%zmm1,%zmm16
  +[a-f0-9]+:   62 e1 f5 08 df c1       vpandnq %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 b1 f5 00 df c9       vpandnq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 40 df c9       vpandnq %zmm17,%zmm17,%zmm1
  +[a-f0-9]+:   62 b1 f5 00 df c9       vpandnq %xmm17,%xmm17,%xmm1
  +[a-f0-9]+:   62 71 f5 4f 57 f9       vxorpd %zmm1,%zmm1,%zmm15\{%k7\}
  +[a-f0-9]+:   62 71 f5 af 57 f9       vxorpd %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   62 71 f5 48 57 f9       vxorpd %zmm1,%zmm1,%zmm15
  +[a-f0-9]+:   c5 71 57 f9             vxorpd %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   c5 71 57 f9             vxorpd %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   62 e1 f5 08 57 c1       vxorpd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 48 57 c1       vxorpd %zmm1,%zmm1,%zmm16
  +[a-f0-9]+:   62 e1 f5 08 57 c1       vxorpd %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 b1 f5 00 57 c9       vxorpd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 40 57 c9       vxorpd %zmm17,%zmm17,%zmm1
  +[a-f0-9]+:   62 b1 f5 00 57 c9       vxorpd %xmm17,%xmm17,%xmm1
  +[a-f0-9]+:   62 71 74 4f 57 f9       vxorps %zmm1,%zmm1,%zmm15\{%k7\}
  +[a-f0-9]+:   62 71 74 af 57 f9       vxorps %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   62 71 74 48 57 f9       vxorps %zmm1,%zmm1,%zmm15
  +[a-f0-9]+:   c5 70 57 f9             vxorps %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   c5 70 57 f9             vxorps %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 74 48 57 c1       vxorps %zmm1,%zmm1,%zmm16
  +[a-f0-9]+:   62 e1 74 08 57 c1       vxorps %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 e1 74 08 57 c1       vxorps %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 b1 74 00 57 c9       vxorps %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 74 40 57 c9       vxorps %zmm17,%zmm17,%zmm1
  +[a-f0-9]+:   62 b1 74 00 57 c9       vxorps %xmm17,%xmm17,%xmm1
  +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
  +[a-f0-9]+:   62 71 75 4f ef f9       vpxord %zmm1,%zmm1,%zmm15\{%k7\}
  +[a-f0-9]+:   62 71 75 af ef f9       vpxord %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   62 71 75 48 ef f9       vpxord %zmm1,%zmm1,%zmm15
  +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   62 e1 75 08 ef c1       vpxord %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 75 48 ef c1       vpxord %zmm1,%zmm1,%zmm16
  +[a-f0-9]+:   62 e1 75 08 ef c1       vpxord %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 b1 75 00 ef c9       vpxord %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 40 ef c9       vpxord %zmm17,%zmm17,%zmm1
  +[a-f0-9]+:   62 b1 75 00 ef c9       vpxord %xmm17,%xmm17,%xmm1
  +[a-f0-9]+:   62 71 f5 4f ef f9       vpxorq %zmm1,%zmm1,%zmm15\{%k7\}
  +[a-f0-9]+:   62 71 f5 af ef f9       vpxorq %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   62 71 f5 48 ef f9       vpxorq %zmm1,%zmm1,%zmm15
  +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   62 e1 f5 08 ef c1       vpxorq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 48 ef c1       vpxorq %zmm1,%zmm1,%zmm16
  +[a-f0-9]+:   62 e1 f5 08 ef c1       vpxorq %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 b1 f5 00 ef c9       vpxorq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 40 ef c9       vpxorq %zmm17,%zmm17,%zmm1
  +[a-f0-9]+:   62 b1 f5 00 ef c9       vpxorq %xmm17,%xmm17,%xmm1
  +[a-f0-9]+:   62 71 75 4f f8 f9       vpsubb %zmm1,%zmm1,%zmm15\{%k7\}
  +[a-f0-9]+:   62 71 75 af f8 f9       vpsubb %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   62 71 75 48 f8 f9       vpsubb %zmm1,%zmm1,%zmm15
  +[a-f0-9]+:   c5 71 f8 f9             vpsubb %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   c5 71 f8 f9             vpsubb %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 75 48 f8 c1       vpsubb %zmm1,%zmm1,%zmm16
  +[a-f0-9]+:   62 e1 75 08 f8 c1       vpsubb %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 e1 75 08 f8 c1       vpsubb %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 b1 75 00 f8 c9       vpsubb %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 40 f8 c9       vpsubb %zmm17,%zmm17,%zmm1
  +[a-f0-9]+:   62 b1 75 00 f8 c9       vpsubb %xmm17,%xmm17,%xmm1
  +[a-f0-9]+:   62 71 75 4f f9 f9       vpsubw %zmm1,%zmm1,%zmm15\{%k7\}
  +[a-f0-9]+:   62 71 75 af f9 f9       vpsubw %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   62 71 75 48 f9 f9       vpsubw %zmm1,%zmm1,%zmm15
  +[a-f0-9]+:   c5 71 f9 f9             vpsubw %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   c5 71 f9 f9             vpsubw %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   62 e1 75 08 f9 c1       vpsubw %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 75 48 f9 c1       vpsubw %zmm1,%zmm1,%zmm16
  +[a-f0-9]+:   62 e1 75 08 f9 c1       vpsubw %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 b1 75 00 f9 c9       vpsubw %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 40 f9 c9       vpsubw %zmm17,%zmm17,%zmm1
  +[a-f0-9]+:   62 b1 75 00 f9 c9       vpsubw %xmm17,%xmm17,%xmm1
  +[a-f0-9]+:   62 71 75 4f fa f9       vpsubd %zmm1,%zmm1,%zmm15\{%k7\}
  +[a-f0-9]+:   62 71 75 af fa f9       vpsubd %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   62 71 75 48 fa f9       vpsubd %zmm1,%zmm1,%zmm15
  +[a-f0-9]+:   c5 71 fa f9             vpsubd %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   c5 71 fa f9             vpsubd %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   62 e1 75 08 fa c1       vpsubd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 75 48 fa c1       vpsubd %zmm1,%zmm1,%zmm16
  +[a-f0-9]+:   62 e1 75 08 fa c1       vpsubd %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 b1 75 00 fa c9       vpsubd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 40 fa c9       vpsubd %zmm17,%zmm17,%zmm1
  +[a-f0-9]+:   62 b1 75 00 fa c9       vpsubd %xmm17,%xmm17,%xmm1
  +[a-f0-9]+:   62 71 f5 4f fb f9       vpsubq %zmm1,%zmm1,%zmm15\{%k7\}
  +[a-f0-9]+:   62 71 f5 af fb f9       vpsubq %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   62 71 f5 48 fb f9       vpsubq %zmm1,%zmm1,%zmm15
  +[a-f0-9]+:   c5 71 fb f9             vpsubq %xmm1,%xmm1,%xmm15
- +[a-f0-9]+:   c5 71 fb f9             vpsubq %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 f5 48 fb c1       vpsubq %zmm1,%zmm1,%zmm16
  +[a-f0-9]+:   62 e1 f5 08 fb c1       vpsubq %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 e1 f5 08 fb c1       vpsubq %xmm1,%xmm1,%xmm16
- +[a-f0-9]+:   62 b1 f5 00 fb c9       vpsubq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 40 fb c9       vpsubq %zmm17,%zmm17,%zmm1
  +[a-f0-9]+:   62 b1 f5 00 fb c9       vpsubq %xmm17,%xmm17,%xmm1
 #pass
diff --git a/gas/testsuite/gas/i386/x86-64-optimize-5.d b/gas/testsuite/gas/i386/x86-64-optimize-5.d
new file mode 100644 (file)
index 0000000..3ef5746
--- /dev/null
@@ -0,0 +1,111 @@
+#as: -O2 -march=+avx512vl -I${srcdir}/$subdir
+#objdump: -drw
+#name: x86-64 optimized encoding 5 with -O2
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +[a-f0-9]+:   62 71 f5 4f 55 f9       vandnpd %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 f5 af 55 f9       vandnpd %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 55 f9             vandnpd %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 55 f9             vandnpd %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 f5 08 55 c1       vandnpd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 08 55 c1       vandnpd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 f5 00 55 c9       vandnpd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 00 55 c9       vandnpd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 74 4f 55 f9       vandnps %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 74 af 55 f9       vandnps %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 70 55 f9             vandnps %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 70 55 f9             vandnps %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 74 08 55 c1       vandnps %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 74 08 55 c1       vandnps %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 74 00 55 c9       vandnps %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 74 00 55 c9       vandnps %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 71 75 4f df f9       vpandnd %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 75 af df f9       vpandnd %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 75 08 df c1       vpandnd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 75 08 df c1       vpandnd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 75 00 df c9       vpandnd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 00 df c9       vpandnd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 f5 4f df f9       vpandnq %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 f5 af df f9       vpandnq %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 f5 08 df c1       vpandnq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 08 df c1       vpandnq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 f5 00 df c9       vpandnq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 00 df c9       vpandnq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 f5 4f 57 f9       vxorpd %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 f5 af 57 f9       vxorpd %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 57 f9             vxorpd %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 57 f9             vxorpd %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 f5 08 57 c1       vxorpd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 08 57 c1       vxorpd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 f5 00 57 c9       vxorpd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 00 57 c9       vxorpd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 74 4f 57 f9       vxorps %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 74 af 57 f9       vxorps %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 70 57 f9             vxorps %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 70 57 f9             vxorps %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 74 08 57 c1       vxorps %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 74 08 57 c1       vxorps %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 74 00 57 c9       vxorps %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 74 00 57 c9       vxorps %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 71 75 4f ef f9       vpxord %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 75 af ef f9       vpxord %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 75 08 ef c1       vpxord %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 75 08 ef c1       vpxord %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 75 00 ef c9       vpxord %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 00 ef c9       vpxord %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 f5 4f ef f9       vpxorq %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 f5 af ef f9       vpxorq %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 f5 08 ef c1       vpxorq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 08 ef c1       vpxorq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 f5 00 ef c9       vpxorq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 00 ef c9       vpxorq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 75 4f f8 f9       vpsubb %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 75 af f8 f9       vpsubb %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 f8 f9             vpsubb %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 f8 f9             vpsubb %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 75 08 f8 c1       vpsubb %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 75 08 f8 c1       vpsubb %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 75 00 f8 c9       vpsubb %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 00 f8 c9       vpsubb %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 75 4f f9 f9       vpsubw %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 75 af f9 f9       vpsubw %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 f9 f9             vpsubw %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 f9 f9             vpsubw %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 75 08 f9 c1       vpsubw %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 75 08 f9 c1       vpsubw %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 75 00 f9 c9       vpsubw %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 00 f9 c9       vpsubw %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 75 4f fa f9       vpsubd %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 75 af fa f9       vpsubd %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 fa f9             vpsubd %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 fa f9             vpsubd %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 75 08 fa c1       vpsubd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 75 08 fa c1       vpsubd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 75 00 fa c9       vpsubd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 00 fa c9       vpsubd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 f5 4f fb f9       vpsubq %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 f5 af fb f9       vpsubq %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 fb f9             vpsubq %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 fb f9             vpsubq %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 f5 08 fb c1       vpsubq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 08 fb c1       vpsubq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 f5 00 fb c9       vpsubq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 00 fb c9       vpsubq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 f1 f5 08 55 e9       vandnpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 08 55 e9       vandnpd %xmm1,%xmm1,%xmm5
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-optimize-5.s b/gas/testsuite/gas/i386/x86-64-optimize-5.s
new file mode 100644 (file)
index 0000000..6b4ff10
--- /dev/null
@@ -0,0 +1,6 @@
+# Check 64bit instructions with optimized encoding
+
+.include "x86-64-optimize-2.s"
+
+       {evex} vandnpd %zmm1, %zmm1, %zmm5
+       {evex} vandnpd %ymm1, %ymm1, %ymm5
diff --git a/gas/testsuite/gas/i386/x86-64-optimize-6.d b/gas/testsuite/gas/i386/x86-64-optimize-6.d
new file mode 100644 (file)
index 0000000..527f1a0
--- /dev/null
@@ -0,0 +1,111 @@
+#as: -O2 -I${srcdir}/$subdir
+#objdump: -drw
+#name: x86-64 optimized encoding 6 with -O2
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +[a-f0-9]+:   62 71 f5 4f 55 f9       vandnpd %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 f5 af 55 f9       vandnpd %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 55 f9             vandnpd %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 55 f9             vandnpd %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 f5 08 55 c1       vandnpd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 08 55 c1       vandnpd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 f5 00 55 c9       vandnpd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 00 55 c9       vandnpd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 74 4f 55 f9       vandnps %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 74 af 55 f9       vandnps %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 70 55 f9             vandnps %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 70 55 f9             vandnps %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 74 08 55 c1       vandnps %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 74 08 55 c1       vandnps %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 74 00 55 c9       vandnps %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 74 00 55 c9       vandnps %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 71 75 4f df f9       vpandnd %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 75 af df f9       vpandnd %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 75 08 df c1       vpandnd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 75 08 df c1       vpandnd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 75 00 df c9       vpandnd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 00 df c9       vpandnd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 f5 4f df f9       vpandnq %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 f5 af df f9       vpandnq %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 df f9             vpandn %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 f5 08 df c1       vpandnq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 08 df c1       vpandnq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 f5 00 df c9       vpandnq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 00 df c9       vpandnq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 f5 4f 57 f9       vxorpd %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 f5 af 57 f9       vxorpd %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 57 f9             vxorpd %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 57 f9             vxorpd %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 f5 08 57 c1       vxorpd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 08 57 c1       vxorpd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 f5 00 57 c9       vxorpd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 00 57 c9       vxorpd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 74 4f 57 f9       vxorps %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 74 af 57 f9       vxorps %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 70 57 f9             vxorps %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 70 57 f9             vxorps %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 74 08 57 c1       vxorps %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 74 08 57 c1       vxorps %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 74 00 57 c9       vxorps %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 74 00 57 c9       vxorps %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 71 75 4f ef f9       vpxord %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 75 af ef f9       vpxord %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 75 08 ef c1       vpxord %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 75 08 ef c1       vpxord %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 75 00 ef c9       vpxord %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 00 ef c9       vpxord %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 f5 4f ef f9       vpxorq %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 f5 af ef f9       vpxorq %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 ef f9             vpxor  %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 f5 08 ef c1       vpxorq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 08 ef c1       vpxorq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 f5 00 ef c9       vpxorq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 00 ef c9       vpxorq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 75 4f f8 f9       vpsubb %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 75 af f8 f9       vpsubb %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 f8 f9             vpsubb %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 f8 f9             vpsubb %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 75 08 f8 c1       vpsubb %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 75 08 f8 c1       vpsubb %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 75 00 f8 c9       vpsubb %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 00 f8 c9       vpsubb %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 75 4f f9 f9       vpsubw %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 75 af f9 f9       vpsubw %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 f9 f9             vpsubw %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 f9 f9             vpsubw %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 75 08 f9 c1       vpsubw %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 75 08 f9 c1       vpsubw %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 75 00 f9 c9       vpsubw %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 00 f9 c9       vpsubw %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 75 4f fa f9       vpsubd %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 75 af fa f9       vpsubd %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 fa f9             vpsubd %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 fa f9             vpsubd %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 75 08 fa c1       vpsubd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 75 08 fa c1       vpsubd %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 75 00 fa c9       vpsubd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 75 00 fa c9       vpsubd %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 71 f5 4f fb f9       vpsubq %zmm1,%zmm1,%zmm15\{%k7\}
+ +[a-f0-9]+:   62 71 f5 af fb f9       vpsubq %ymm1,%ymm1,%ymm15\{%k7\}\{z\}
+ +[a-f0-9]+:   c5 71 fb f9             vpsubq %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   c5 71 fb f9             vpsubq %xmm1,%xmm1,%xmm15
+ +[a-f0-9]+:   62 e1 f5 08 fb c1       vpsubq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 e1 f5 08 fb c1       vpsubq %xmm1,%xmm1,%xmm16
+ +[a-f0-9]+:   62 b1 f5 00 fb c9       vpsubq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 b1 f5 00 fb c9       vpsubq %xmm17,%xmm17,%xmm1
+ +[a-f0-9]+:   62 f1 f5 08 55 e9       vandnpd %xmm1,%xmm1,%xmm5
+ +[a-f0-9]+:   62 f1 f5 08 55 e9       vandnpd %xmm1,%xmm1,%xmm5
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-optimize-6.s b/gas/testsuite/gas/i386/x86-64-optimize-6.s
new file mode 100644 (file)
index 0000000..70ccbc4
--- /dev/null
@@ -0,0 +1,8 @@
+# Check 64bit instructions with optimized encoding
+
+       .arch .avx512vl
+
+.include "x86-64-optimize-2.s"
+
+       {evex} vandnpd %zmm1, %zmm1, %zmm5
+       {evex} vandnpd %ymm1, %ymm1, %ymm5