x86/Intel: fix operand checking for MOVSD
authorJan Beulich <jbeulich@novell.com>
Fri, 1 Jul 2016 06:56:13 +0000 (08:56 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 1 Jul 2016 06:56:13 +0000 (08:56 +0200)
commit8325cc6398187c12e0fe04a68a21e4eb5f44fa20
tree971666a5509602274df0b1827230a3c533d018ee
parenteefbbb8cbe2674ce4e70816ba4d80a848ab7e574
x86/Intel: fix operand checking for MOVSD

The dual purpose mnemonic (string move vs scalar double move) breaks
the assumption that the isstring flag would be set on both the first
and last entry in the current set of templates, which results in bogus
or missing diagnostics for the string move variant of the mnemonic.
Short of mostly rewriting i386_index_check() and its interaction with
the rest of the code, simply shrink the template set to just string
instructions when encountering the second memory operand, and run
i386_index_check() a second time for the first memory operand after
that reduction.
gas/ChangeLog
gas/config/tc-i386-intel.c
gas/config/tc-i386.c
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/intel-movs.s [new file with mode: 0644]
gas/testsuite/gas/i386/intel-movs32.d [new file with mode: 0644]
gas/testsuite/gas/i386/intel-movs64.d [new file with mode: 0644]
opcodes/ChangeLog
opcodes/i386-opc.tbl
opcodes/i386-tbl.h