x86: re-work insn/suffix recognition
authorJan Beulich <jbeulich@suse.com>
Mon, 12 Dec 2022 12:51:46 +0000 (13:51 +0100)
committerJan Beulich <jbeulich@suse.com>
Mon, 12 Dec 2022 12:51:46 +0000 (13:51 +0100)
commit04784e33fabb45c4de7a901587f468d4bc169649
tree1078958623209c3e73645c9f3721e825b012b6a5
parent5317ad2ccc3d0099551140a20c1b12fe22030736
x86: re-work insn/suffix recognition

Having templates with a suffix explicitly present has always been
quirky. Introduce a 2nd matching pass in case the 1st one couldn't find
a suitable template _and_ didn't itself already need to trim off a
suffix to find a match at all. This requires error reporting adjustments
(albeit luckily fewer than I was afraid might be necessary), as errors
previously reported during matching now need deferring until after the
2nd pass (because, obviously, we must not emit any error if the 2nd pass
succeeds). While also related to PR gas/29524, it was requested that
move-with-sign-extend be left as broken as it always was.

PR gas/29525
Note that with the dropped CMPSD and MOVSD Intel Syntax string insn
templates taking operands, mixed IsString/non-IsString template groups
(with memory operands) cannot occur anymore. With that
maybe_adjust_templates() becomes unnecessary (and is hence being
removed).

PR gas/29526
Note further that while the additions to the intel16 testcase aren't
really proper Intel syntax, we've been permitting all of those except
for the MOVD variant. The test therefore is to avoid re-introducing such
an inconsistency.
gas/config/tc-i386-intel.c
gas/config/tc-i386.c
gas/testsuite/gas/i386/code16.d
gas/testsuite/gas/i386/code16.e [new file with mode: 0644]
gas/testsuite/gas/i386/code16.s
gas/testsuite/gas/i386/intel16.d
gas/testsuite/gas/i386/intel16.s
opcodes/i386-opc.tbl
opcodes/i386-tbl.h