diff options
author | Jan Beulich <jbeulich@novell.com> | 2018-07-24 09:46:27 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2018-07-24 09:46:27 +0200 |
commit | 4174bfff8a88f21659446cf631dbbbad615b4a9e (patch) | |
tree | 8fe87c6be21df82ff9d8912422a4775f85837b06 /gas/config/tc-i386.c | |
parent | f47194a9cde616ed1c207d618d4827d1216ef650 (diff) | |
download | fsf-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.c | 11 |
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; |