aboutsummaryrefslogtreecommitdiff
path: root/gas/testsuite
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2024-05-24 11:50:38 +0200
committerJan Beulich <jbeulich@suse.com>2024-05-24 11:50:38 +0200
commitacd86c81f04405719471410302fe7f8e407d539c (patch)
tree5c8a85a65f8eeb250c7d9e7176dd0aa29d5ec90b /gas/testsuite
parentdb7814f3e5f0df1647d62d95f70285d41ec7585f (diff)
downloadgdb-acd86c81f04405719471410302fe7f8e407d539c.zip
gdb-acd86c81f04405719471410302fe7f8e407d539c.tar.gz
gdb-acd86c81f04405719471410302fe7f8e407d539c.tar.bz2
x86: correct VCVT{,U}SI2SD
Properly reject inappropriate suffixes (No_lSuf / No_qSuf mistakenly omitted by cf665fee1d6c ["x86: re-work AVX512 embedded rounding / SAE"]), to avoid emitting bad or arbitrarily guessed instructions. Interestingly check_{long,qword}_suffix() don't help here, which perhaps is another indication that the way they work right now isn't quite appropriate. Sadly correcting just the templates breaks operand ambiguity detection, since so far that worked from a single template permitting more than one suffix. Here we have ambiguity though which can now be noticed only when taking all (matching) templates together. Therefore we need to determine further matching templates (see code comments for constraints), to then accumulate permitted suffixes across all of them.
Diffstat (limited to 'gas/testsuite')
-rw-r--r--gas/testsuite/gas/i386/x86-64-inval-avx512f.l6
-rw-r--r--gas/testsuite/gas/i386/x86-64-inval-avx512f.s3
2 files changed, 9 insertions, 0 deletions
diff --git a/gas/testsuite/gas/i386/x86-64-inval-avx512f.l b/gas/testsuite/gas/i386/x86-64-inval-avx512f.l
index 634683f..8eb8b7e 100644
--- a/gas/testsuite/gas/i386/x86-64-inval-avx512f.l
+++ b/gas/testsuite/gas/i386/x86-64-inval-avx512f.l
@@ -41,6 +41,8 @@
.*:58: Error: .*
.*:61: Error: .*unsupported broadcast for `vdpbf16ps'
.*:62: Error: .*unsupported broadcast for `vcvtne2ps2bf16'
+.*:64: Error: .* `vcvtusi2sd'
+.*:65: Error: .* `vcvtusi2sd'
GAS LISTING .*
@@ -107,3 +109,7 @@ GAS LISTING .*
[ ]*60[ ]+\.att_syntax prefix
[ ]*61[ ]+vdpbf16ps 8\(%rax\)\{1to8\}, %zmm2, %zmm2
[ ]*62[ ]+vcvtne2ps2bf16 8\(%rax\)\{1to8\}, %zmm2, %zmm2
+[ ]*63[ ]*
+[ ]*64[ ]+vcvtusi2sdq %eax, %xmm0, %xmm0
+[ ]*65[ ]+vcvtusi2sdl %rax, \{rn-sae\}, %xmm0, %xmm0
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-inval-avx512f.s b/gas/testsuite/gas/i386/x86-64-inval-avx512f.s
index 934e906..731f2ca 100644
--- a/gas/testsuite/gas/i386/x86-64-inval-avx512f.s
+++ b/gas/testsuite/gas/i386/x86-64-inval-avx512f.s
@@ -60,3 +60,6 @@ _start:
.att_syntax prefix
vdpbf16ps 8(%rax){1to8}, %zmm2, %zmm2
vcvtne2ps2bf16 8(%rax){1to8}, %zmm2, %zmm2
+
+ vcvtusi2sdq %eax, %xmm0, %xmm0
+ vcvtusi2sdl %rax, {rn-sae}, %xmm0, %xmm0