x86: correct dependencies of a few AVX512 sub-features
authorJan Beulich <jbeulich@suse.com>
Thu, 22 Dec 2022 08:34:50 +0000 (09:34 +0100)
committerJan Beulich <jbeulich@suse.com>
Thu, 22 Dec 2022 08:34:50 +0000 (09:34 +0100)
Like AVX512-FP16, several other extensions require wider than 16-bit
mask registers. As a result they take AVX512BW as a prereq, not (just)
AVX512F. Which in turn points out wrong expectations in the noavx512-1
testcase.

gas/testsuite/gas/i386/noavx512-1.l
opcodes/i386-gen.c
opcodes/i386-init.h

index 8d6af4507a9f6d5b66ae09bdbc416e846efbc8ea..86e852731e1f0ba5c0c6c8b0f3769de60bdf53d0 100644 (file)
@@ -2,6 +2,9 @@
 .*:8: Error: .*operand size mismatch.*
 .*:9: Error: .*unsupported masking.*
 .*:10: Error: .*unsupported masking.*
+.*:25: Error: .*not supported.*
+.*:26: Error: .*not supported.*
+.*:27: Error: .*not supported.*
 .*:11: Error: .*not supported.*
 .*:12: Error: .*not supported.*
 .*:13: Error: .*not supported.*
 [      ]*[0-9]+[       ]+\?\?\?\? 62F2FD49     >  vgatherpf0dpd 23\(%ebp,%ymm7,8\)\{%k1\}
 [      ]*[0-9]+[       ]+C68CFD17 *
 [      ]*[0-9]+[       ]+000000
-[      ]*[0-9]+[       ]+\?\?\?\? 62F2554F     >  vpermb %zmm4,%zmm5,%zmm6\{%k7\}
-[      ]*[0-9]+[       ]+8DF4
-[      ]*[0-9]+[       ]+\?\?\?\? 62F2550F     >  vpermb %xmm4,%xmm5,%xmm6\{%k7\}
-[      ]*[0-9]+[       ]+8DF4
-[      ]*[0-9]+[       ]+\?\?\?\? 62F2552F     >  vpermb %ymm4,%ymm5,%ymm6\{%k7\}
-[      ]*[0-9]+[       ]+8DF4
+[      ]*[0-9]+[       ]+>  vpermb %zmm4,%zmm5,%zmm6\{%k7\}
+[      ]*[0-9]+[       ]+>  vpermb %xmm4,%xmm5,%xmm6\{%k7\}
+[      ]*[0-9]+[       ]+>  vpermb %ymm4,%ymm5,%ymm6\{%k7\}
 #...
 [      ]*[0-9]+[       ]+>  \.arch default
 [      ]*[0-9]+[       ]+>  \.arch \.noavx512cd
index ee6cecd2d4d4f1cfb04dac1f6ab83d53fcb9b5ee..46d9f6f5823c84bc5bf11b4cbbb978e5e94ed7e5 100644 (file)
@@ -184,7 +184,7 @@ static const dependency isa_dependencies[] =
   { "AVX512IFMA",
     "AVX512F" },
   { "AVX512VBMI",
-    "AVX512F" },
+    "AVX512BW" },
   { "AVX512_4FMAPS",
     "AVX512F" },
   { "AVX512_4VNNIW",
@@ -192,15 +192,15 @@ static const dependency isa_dependencies[] =
   { "AVX512_VPOPCNTDQ",
     "AVX512F" },
   { "AVX512_VBMI2",
-    "AVX512F" },
+    "AVX512BW" },
   { "AVX512_VNNI",
     "AVX512F" },
   { "AVX512_BITALG",
-    "AVX512F" },
+    "AVX512BW" },
   { "AVX512_VP2INTERSECT",
     "AVX512F" },
   { "AVX512_BF16",
-    "AVX512F" },
+    "AVX512BW" },
   { "AVX512_FP16",
     "AVX512BW" },
   { "IAMCU",
index 29343b9a8a4d09b24bf74cddc257ffc36f6b0a5a..1dc8df0f0fbf6ad406e5dee45e6e35836e5b13b4 100644 (file)
 #define CPU_AVX512VBMI_FLAGS \
   { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, \
       0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, \
-      0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
 #define CPU_AVX512_VBMI2_FLAGS \
   { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, \
       0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, \
-      0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
 #define CPU_AVX512_BITALG_FLAGS \
   { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, \
       0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, \
-      0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
 #define CPU_AVX512_BF16_FLAGS \
   { { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, \
       0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, \
-      0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
   { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, \
+      0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }