x86: correct operand type checks

Again these look to be typos: No template currently allows for any two
(or all three) of RegXMM, RegYMM, and RegZMM in a single operand. Quite
clearly ! are missing, after the addition of which the checks for the
first and (if present) second operands also fully match up.
This commit is contained in:
Jan Beulich 2017-12-15 09:14:52 +01:00 committed by Jan Beulich
parent 93b71a2666
commit 141975a1e5
2 changed files with 9 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2017-12-15 Jan Beulich <jbeulich@suse.com>
* config/tc-i386.c (match_template): Add missing ! to
reg{x,y,z}mm checks in q- and l-suffix handling.
2017-12-15 Jan Beulich <jbeulich@suse.com>
* config/tc-i386.c (build_modrm_byte): Add missing ! to reg64

View File

@ -4968,9 +4968,9 @@ match_template (char mnem_suffix)
&& !operand_types[0].bitfield.regymm
&& !operand_types[0].bitfield.regzmm)
|| (!operand_types[t->operands > 1].bitfield.regmmx
&& operand_types[t->operands > 1].bitfield.regxmm
&& operand_types[t->operands > 1].bitfield.regymm
&& operand_types[t->operands > 1].bitfield.regzmm))
&& !operand_types[t->operands > 1].bitfield.regxmm
&& !operand_types[t->operands > 1].bitfield.regymm
&& !operand_types[t->operands > 1].bitfield.regzmm))
&& (t->base_opcode != 0x0fc7
|| t->extension_opcode != 1 /* cmpxchg8b */))
continue;
@ -4985,7 +4985,7 @@ match_template (char mnem_suffix)
&& ((!operand_types[0].bitfield.regmmx
&& !operand_types[0].bitfield.regxmm)
|| (!operand_types[t->operands > 1].bitfield.regmmx
&& operand_types[t->operands > 1].bitfield.regxmm)))
&& !operand_types[t->operands > 1].bitfield.regxmm)))
continue;
/* Do not verify operands when there are none. */