diff options
Diffstat (limited to 'gas/config/tc-i386.c')
-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 98c0bf0..66a2e0f 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -6327,7 +6327,7 @@ check_VecOperands (const insn_template *t) i.memshift = t->opcode_modifier.disp8memshift; else { - const i386_operand_type *type = NULL; + const i386_operand_type *type = NULL, *fallback = NULL; i.memshift = 0; for (op = 0; op < i.operands; op++) @@ -6341,6 +6341,8 @@ check_VecOperands (const insn_template *t) type = &t->operand_types[op]; else if (!i.types[op].bitfield.unspecified) type = &i.types[op]; + else /* Ambiguities get resolved elsewhere. */ + fallback = &t->operand_types[op]; } else if (i.types[op].bitfield.class == RegSIMD && t->opcode_modifier.evex != EVEXLIG) @@ -6353,6 +6355,8 @@ check_VecOperands (const insn_template *t) i.memshift = 4; } + if (!type && !i.memshift) + type = fallback; if (type) { if (type->bitfield.zmmword) |