aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-i386.c
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2018-07-24 09:46:27 +0200
committerJan Beulich <jbeulich@suse.com>2018-07-24 09:46:27 +0200
commit4174bfff8a88f21659446cf631dbbbad615b4a9e (patch)
tree8fe87c6be21df82ff9d8912422a4775f85837b06 /gas/config/tc-i386.c
parentf47194a9cde616ed1c207d618d4827d1216ef650 (diff)
downloadfsf-binutils-gdb-4174bfff8a88f21659446cf631dbbbad615b4a9e.zip
fsf-binutils-gdb-4174bfff8a88f21659446cf631dbbbad615b4a9e.tar.gz
fsf-binutils-gdb-4174bfff8a88f21659446cf631dbbbad615b4a9e.tar.bz2
x86-64: correct AVX512F vcvtsi2s{d,s} handling
Just like for their AVX counterparts and CVTSI2S{D,S}, a memory source here is ambiguous and hence - in source files should be qualified with a suitable suffix or operand size specifier (not doing so is an error in Intel mode, and will gain a diagnostic in AT&T mode in the future), - in disassembly should be properly suffixed (the Intel operand size specifiers were emitted correctly already).
Diffstat (limited to 'gas/config/tc-i386.c')
-rw-r--r--gas/config/tc-i386.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 8768d68..81643a7 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -5256,14 +5256,17 @@ check_VecOperands (const insn_template *t)
for (op = 0; op < i.operands; op++)
if (operand_type_check (i.types[op], anymem))
{
- if (t->operand_types[op].bitfield.xmmword
- + t->operand_types[op].bitfield.ymmword
- + t->operand_types[op].bitfield.zmmword <= 1)
+ if (t->opcode_modifier.evex == EVEXLIG)
+ i.memshift = 2 + (i.suffix == QWORD_MNEM_SUFFIX);
+ else if (t->operand_types[op].bitfield.xmmword
+ + t->operand_types[op].bitfield.ymmword
+ + t->operand_types[op].bitfield.zmmword <= 1)
type = &t->operand_types[op];
else if (!i.types[op].bitfield.unspecified)
type = &i.types[op];
}
- else if (i.types[op].bitfield.regsimd)
+ else if (i.types[op].bitfield.regsimd
+ && t->opcode_modifier.evex != EVEXLIG)
{
if (i.types[op].bitfield.zmmword)
i.memshift = 6;