From 1db5a7fe0be94e839648079f6a7fa24f44310275 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Wed, 20 Apr 2022 16:56:05 +0200 Subject: [PATCH] x86: reject all invalid SAE variants So far an SAE-only specifier was accepted for static-rounding insns, while SAE-only insns didn't accept static rounding specifiers. If anything it would make sense the other way around, allowing SAE-only insns to have the (ignored) rounding mode specified individually rather than globally via -mevexrcig=. But for now make things match the SDM. --- gas/config/tc-i386.c | 2 +- gas/testsuite/gas/i386/inval-avx512f.l | 7 +++++++ gas/testsuite/gas/i386/inval-avx512f.s | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index b8e3c24c25d..61b9af1c24b 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -6272,7 +6272,7 @@ check_VecOperands (const insn_template *t) if (i.rounding.type != rc_none) { if (!t->opcode_modifier.sae - || (i.rounding.type != saeonly && !t->opcode_modifier.staticrounding)) + || ((i.rounding.type != saeonly) != t->opcode_modifier.staticrounding)) { i.error = unsupported_rc_sae; return 1; diff --git a/gas/testsuite/gas/i386/inval-avx512f.l b/gas/testsuite/gas/i386/inval-avx512f.l index d45ae250ba0..d46e61a9a9a 100644 --- a/gas/testsuite/gas/i386/inval-avx512f.l +++ b/gas/testsuite/gas/i386/inval-avx512f.l @@ -220,6 +220,8 @@ .*:319: Error: .*unsupported broadcast for `vcvtneps2bf16' .*:321: Error: .*vaddps.* .*:322: Error: .*vcmpss.* +.*:324: Error: .*vaddss.* +.*:325: Error: .*vcmpps.* GAS LISTING .* @@ -574,4 +576,9 @@ GAS LISTING .* [ ]*320[ ]* [ ]*321[ ]+vaddps \$0xcc, %zmm0, %zmm0, %zmm0 [ ]*322[ ]+vcmpss \$0, \$0xcc, %xmm0, %xmm0, %k0 +[ ]*323[ ]* + GAS LISTING .* +#... +[ ]*324[ ]+vaddss \{sae\}, %xmm0, %xmm0, %xmm0 +[ ]*325[ ]+vcmpps \$0, \{rn-sae\}, %zmm0, %zmm0, %k0 #pass diff --git a/gas/testsuite/gas/i386/inval-avx512f.s b/gas/testsuite/gas/i386/inval-avx512f.s index 841992bbd79..d9a85e005b3 100644 --- a/gas/testsuite/gas/i386/inval-avx512f.s +++ b/gas/testsuite/gas/i386/inval-avx512f.s @@ -321,4 +321,7 @@ _start: vaddps $0xcc, %zmm0, %zmm0, %zmm0 vcmpss $0, $0xcc, %xmm0, %xmm0, %k0 + vaddss {sae}, %xmm0, %xmm0, %xmm0 + vcmpps $0, {rn-sae}, %zmm0, %zmm0, %k0 + .p2align 4 -- 2.30.2