diff options
author | Jan Beulich <jbeulich@suse.com> | 2022-12-22 09:34:50 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2022-12-22 09:34:50 +0100 |
commit | 9a019125a64b69a37dc4c11355078c3df5a3e064 (patch) | |
tree | 9a7af319e51a9af8031154e13a97a2b32b799bbc | |
parent | b236b82a1ae64299823615fce995a51ae944e7dc (diff) | |
download | binutils-9a019125a64b69a37dc4c11355078c3df5a3e064.zip binutils-9a019125a64b69a37dc4c11355078c3df5a3e064.tar.gz binutils-9a019125a64b69a37dc4c11355078c3df5a3e064.tar.bz2 |
x86: correct dependencies of a few AVX512 sub-features
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.
-rw-r--r-- | gas/testsuite/gas/i386/noavx512-1.l | 12 | ||||
-rw-r--r-- | opcodes/i386-gen.c | 8 | ||||
-rw-r--r-- | opcodes/i386-init.h | 12 |
3 files changed, 16 insertions, 16 deletions
diff --git a/gas/testsuite/gas/i386/noavx512-1.l b/gas/testsuite/gas/i386/noavx512-1.l index 8d6af45..86e8527 100644 --- a/gas/testsuite/gas/i386/noavx512-1.l +++ b/gas/testsuite/gas/i386/noavx512-1.l @@ -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.* @@ -120,12 +123,9 @@ [ ]*[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 diff --git a/opcodes/i386-gen.c b/opcodes/i386-gen.c index ee6cecd..46d9f6f 100644 --- a/opcodes/i386-gen.c +++ b/opcodes/i386-gen.c @@ -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", diff --git a/opcodes/i386-init.h b/opcodes/i386-init.h index 29343b9..1dc8df0 100644 --- a/opcodes/i386-init.h +++ b/opcodes/i386-init.h @@ -723,7 +723,7 @@ #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, \ @@ -759,7 +759,7 @@ #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, \ @@ -777,7 +777,7 @@ #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, \ @@ -786,7 +786,7 @@ #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, \ @@ -1678,8 +1678,8 @@ { { 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 } } |