x86: exclude certain ISA extensions from v3/v4 ISA
authorJan Beulich <jbeulich@suse.com>
Fri, 3 Jun 2022 08:17:35 +0000 (10:17 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 3 Jun 2022 08:17:35 +0000 (10:17 +0200)
Like TBM and LWP, XOP and FMA4 also shouldn't be included in v3.

Like AVX512-4VNNIW, AVX512-4FMAPS also shouldn't be included in v4.

gas/config/tc-i386.c
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/property-v4fmaddps.d [new file with mode: 0644]
gas/testsuite/gas/i386/property-v4fmaddps.s [new file with mode: 0644]
gas/testsuite/gas/i386/property-vfmaddps.d [new file with mode: 0644]
gas/testsuite/gas/i386/property-vfmaddps.s [new file with mode: 0644]
gas/testsuite/gas/i386/property-vpcmov.d [new file with mode: 0644]
gas/testsuite/gas/i386/property-vpcmov.s [new file with mode: 0644]

index a3c64439b1b8adb17ef0ae919e4767d05310fd07..5d486570bf8c998592a09a786e238fb70195a70b 100644 (file)
@@ -9579,12 +9579,14 @@ output_insn (void)
        x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_V2;
       if (i.tm.cpu_flags.bitfield.cpuavx
          || i.tm.cpu_flags.bitfield.cpuavx2
-         /* Any VEX encoded insns execpt for CpuAVX512F, CpuAVX512BW,
-            CpuAVX512DQ, LPW, TBM and AMX.  */
+         /* Any VEX encoded insns execpt for AVX512F, AVX512BW, AVX512DQ,
+            XOP, FMA4, LPW, TBM, and AMX.  */
          || (i.tm.opcode_modifier.vex
              && !i.tm.cpu_flags.bitfield.cpuavx512f
              && !i.tm.cpu_flags.bitfield.cpuavx512bw
              && !i.tm.cpu_flags.bitfield.cpuavx512dq
+             && !i.tm.cpu_flags.bitfield.cpuxop
+             && !i.tm.cpu_flags.bitfield.cpufma4
              && !i.tm.cpu_flags.bitfield.cpulwp
              && !i.tm.cpu_flags.bitfield.cputbm
              && !(x86_feature_2_used & GNU_PROPERTY_X86_FEATURE_2_TMM))
@@ -9602,11 +9604,12 @@ output_insn (void)
          || i.tm.cpu_flags.bitfield.cpuavx512bw
          || i.tm.cpu_flags.bitfield.cpuavx512dq
          || i.tm.cpu_flags.bitfield.cpuavx512vl
-         /* Any EVEX encoded insns except for AVX512ER, AVX512PF and
-            VNNIW.  */
+         /* Any EVEX encoded insns except for AVX512ER, AVX512PF,
+            AVX512-4FMAPS, and AVX512-4VNNIW.  */
          || (i.tm.opcode_modifier.evex
              && !i.tm.cpu_flags.bitfield.cpuavx512er
              && !i.tm.cpu_flags.bitfield.cpuavx512pf
+             && !i.tm.cpu_flags.bitfield.cpuavx512_4fmaps
              && !i.tm.cpu_flags.bitfield.cpuavx512_4vnniw))
        x86_isa_1_used |= GNU_PROPERTY_X86_ISA_1_V4;
     }
index 1e10277da31a625f0a619a84f6dd1df1b1d1f4ad..99a11ebde787776549eddd757c2d46700e05419d 100644 (file)
@@ -755,7 +755,10 @@ if {[is_elf_format] || [istarget "*-*-vxworks*"]} then {
     run_dump_test "property-cvtpi2pd"
     run_dump_test "property-cvtpi2ps"
     run_dump_test "property-ldmxcsr"
+    run_dump_test "property-v4fmaddps"
+    run_dump_test "property-vfmaddps"
     run_dump_test "property-vldmxcsr"
+    run_dump_test "property-vpcmov"
     run_dump_test "property-vzeroall"
     run_dump_test "code16-2"
 
diff --git a/gas/testsuite/gas/i386/property-v4fmaddps.d b/gas/testsuite/gas/i386/property-v4fmaddps.d
new file mode 100644 (file)
index 0000000..923ec09
--- /dev/null
@@ -0,0 +1,9 @@
+#name: i386 property v4fmaddps
+#as: -mx86-used-note=yes --generate-missing-build-notes=no
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA used: x86-64-baseline
+       x86 feature used: x86, XMM, YMM, ZMM
diff --git a/gas/testsuite/gas/i386/property-v4fmaddps.s b/gas/testsuite/gas/i386/property-v4fmaddps.s
new file mode 100644 (file)
index 0000000..43d3a3d
--- /dev/null
@@ -0,0 +1,2 @@
+       .text
+       v4fmaddps       (%eax), %zmm0, %zmm0
diff --git a/gas/testsuite/gas/i386/property-vfmaddps.d b/gas/testsuite/gas/i386/property-vfmaddps.d
new file mode 100644 (file)
index 0000000..f6a92e9
--- /dev/null
@@ -0,0 +1,9 @@
+#name: i386 property vfmaddps
+#as: -mx86-used-note=yes --generate-missing-build-notes=no
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA used: x86-64-baseline
+       x86 feature used: x86, XMM, YMM
diff --git a/gas/testsuite/gas/i386/property-vfmaddps.s b/gas/testsuite/gas/i386/property-vfmaddps.s
new file mode 100644 (file)
index 0000000..c72df47
--- /dev/null
@@ -0,0 +1,2 @@
+       .text
+       vfmaddps        %xmm0, %xmm0, %xmm0, %xmm0
diff --git a/gas/testsuite/gas/i386/property-vpcmov.d b/gas/testsuite/gas/i386/property-vpcmov.d
new file mode 100644 (file)
index 0000000..f40fb8a
--- /dev/null
@@ -0,0 +1,9 @@
+#name: i386 property vpcmov
+#as: -mx86-used-note=yes --generate-missing-build-notes=no
+#readelf: -n
+
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+      Properties: x86 ISA used: x86-64-baseline
+       x86 feature used: x86, XMM, YMM
diff --git a/gas/testsuite/gas/i386/property-vpcmov.s b/gas/testsuite/gas/i386/property-vpcmov.s
new file mode 100644 (file)
index 0000000..6627070
--- /dev/null
@@ -0,0 +1,2 @@
+       .text
+       vpcmov  %xmm0, %xmm0, %xmm0, %xmm0