mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 22:07:58 +08:00
x86/Intel: improve diagnostics
The diagnostics issued by check_*_reg() are pretty AT&T-centric. Re-use logic already used for SIMD memory operand size checking also for ones where GPRs would alternatively also be allowed. (There's certainly room for further improvement here.)
This commit is contained in:
@ -1,3 +1,9 @@
|
||||
2020-02-12 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* config/tc-i386.c (operand_type_register_match): Also fall
|
||||
through initial two if()-s when the template allows for a GPR
|
||||
operand. Adjust comment.
|
||||
|
||||
2020-02-11 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
(struct _i386_insn): New field "short_form".
|
||||
|
@ -2248,8 +2248,7 @@ mismatch:
|
||||
|
||||
/* If given types g0 and g1 are registers they must be of the same type
|
||||
unless the expected operand type register overlap is null.
|
||||
Memory operand size of certain SIMD instructions is also being checked
|
||||
here. */
|
||||
Some Intel syntax memory operand size checking also happens here. */
|
||||
|
||||
static INLINE int
|
||||
operand_type_register_match (i386_operand_type g0,
|
||||
@ -2261,14 +2260,16 @@ operand_type_register_match (i386_operand_type g0,
|
||||
&& g0.bitfield.class != RegSIMD
|
||||
&& (!operand_type_check (g0, anymem)
|
||||
|| g0.bitfield.unspecified
|
||||
|| t0.bitfield.class != RegSIMD))
|
||||
|| (t0.bitfield.class != Reg
|
||||
&& t0.bitfield.class != RegSIMD)))
|
||||
return 1;
|
||||
|
||||
if (g1.bitfield.class != Reg
|
||||
&& g1.bitfield.class != RegSIMD
|
||||
&& (!operand_type_check (g1, anymem)
|
||||
|| g1.bitfield.unspecified
|
||||
|| t1.bitfield.class != RegSIMD))
|
||||
|| (t1.bitfield.class != Reg
|
||||
&& t1.bitfield.class != RegSIMD)))
|
||||
return 1;
|
||||
|
||||
if (g0.bitfield.byte == g1.bitfield.byte
|
||||
|
Reference in New Issue
Block a user