x86: improve match_template()'s diagnostics
authorJan Beulich <jbeulich@suse.com>
Fri, 30 Sep 2022 08:13:39 +0000 (10:13 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 30 Sep 2022 08:13:39 +0000 (10:13 +0200)
commit7b94647ad00bb096348ea074fa2f19e1873eb0a7
tree56bb9c85225573b14a704e6f7d9b6f01a1f27789
parent1cb0ab18ad24ddcedc57b40901153c36e97d6e2e
x86: improve match_template()'s diagnostics

At the example of

extractps $0, %xmm0, %xmm0
insertps $0, %xmm0, %eax

(both having respectively the same mistake of using the wrong kind of
destination register) it is easy to see that current behavior is far
from ideal: The former results in "unsupported instruction" for 32-bit
code simply because the 2nd template we have is a Cpu64 one. Instead we
should aim at emitting the "best" possible error, which will typically
be the one where we passed the largest number of checks. Generalize the
original "specific_error" approach by making it apply to the entire
matching loop, utilizing that line numbers increase as we pass further
checks.
gas/config/tc-i386.c
gas/testsuite/gas/i386/inval-tls.l
gas/testsuite/gas/i386/noavx512-1.l
gas/testsuite/gas/i386/noavx512-2.l
gas/testsuite/gas/i386/x86-64-branch-4.l
gas/testsuite/gas/i386/x86-64-branch-5.l
gas/testsuite/gas/i386/x86-64-inval-tls.l