diff options
author | Jan Beulich <jbeulich@novell.com> | 2017-12-15 09:14:52 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2017-12-15 09:14:52 +0100 |
commit | 141975a1e53798a48917271295962fb1a7e967d0 (patch) | |
tree | b827d40cf14e2d1b8f8383247b00e1afae0127bd | |
parent | 93b71a266695669cb9aa8ddf2717a1ccd53c925d (diff) | |
download | gdb-141975a1e53798a48917271295962fb1a7e967d0.zip gdb-141975a1e53798a48917271295962fb1a7e967d0.tar.gz gdb-141975a1e53798a48917271295962fb1a7e967d0.tar.bz2 |
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.
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 8 |
2 files changed, 9 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 96ceb58..3e00c76 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,10 @@ 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 check leading to abort(). diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 36e5b19..5c71bb6 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -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. */ |