aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2022-12-12 14:01:02 +0100
committerJan Beulich <jbeulich@suse.com>2022-12-12 14:01:02 +0100
commita28fedbc3f582ce7c8bad2eb017b1dc072bb1da7 (patch)
treea43cd6d934a4396e597ee88d3db98fb190ae34b9 /gas/config
parent77a19f0e19391dd243f8090a613324c8836e1f8a (diff)
downloadgdb-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.c6
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