diff options
author | Jan Beulich <jbeulich@suse.com> | 2024-05-24 11:50:38 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2024-05-24 11:50:38 +0200 |
commit | acd86c81f04405719471410302fe7f8e407d539c (patch) | |
tree | 5c8a85a65f8eeb250c7d9e7176dd0aa29d5ec90b /gas/testsuite | |
parent | db7814f3e5f0df1647d62d95f70285d41ec7585f (diff) | |
download | gdb-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.l | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/x86-64-inval-avx512f.s | 3 |
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 |