From: Jan Beulich Date: Thu, 22 Dec 2022 08:34:50 +0000 (+0100) Subject: x86: correct dependencies of a few AVX512 sub-features X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9a019125a64b69a37dc4c11355078c3df5a3e064;p=binutils-gdb.git 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. --- diff --git a/gas/testsuite/gas/i386/noavx512-1.l b/gas/testsuite/gas/i386/noavx512-1.l index 8d6af4507a9..86e852731e1 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 ee6cecd2d4d..46d9f6f5823 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 29343b9a8a4..1dc8df0f0fb 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 } }