diff options
author | Jan Beulich <jbeulich@suse.com> | 2022-12-12 14:01:02 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2022-12-12 14:01:02 +0100 |
commit | a28fedbc3f582ce7c8bad2eb017b1dc072bb1da7 (patch) | |
tree | a43cd6d934a4396e597ee88d3db98fb190ae34b9 /gas/config | |
parent | 77a19f0e19391dd243f8090a613324c8836e1f8a (diff) | |
download | gdb-a28fedbc3f582ce7c8bad2eb017b1dc072bb1da7.zip gdb-a28fedbc3f582ce7c8bad2eb017b1dc072bb1da7.tar.gz gdb-a28fedbc3f582ce7c8bad2eb017b1dc072bb1da7.tar.bz2 |
x86: further re-work insn/suffix recognition to also cover MOVSX
PR gas/29524
Having templates with a suffix explicitly present has always been
quirky. After prior adjustment all that's left to also eliminate the
anomaly from move-with-sign-extend is to consolidate the insn templates
and to make may_need_pass2() cope (plus extend testsuite coverage).
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-i386.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 6e14804..ffe97d9 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -4860,7 +4860,11 @@ static INLINE bool may_need_pass2 (const insn_template *t) { return t->opcode_modifier.sse2avx /* Note that all SSE2AVX templates have at least one operand. */ - && t->operand_types[t->operands - 1].bitfield.class == RegSIMD; + ? t->operand_types[t->operands - 1].bitfield.class == RegSIMD + : (t->opcode_modifier.opcodespace == SPACE_0F + && (t->base_opcode | 1) == 0xbf) + || (t->opcode_modifier.opcodespace == SPACE_BASE + && t->base_opcode == 0x63); } /* This is the guts of the machine-dependent assembler. LINE points to a |