There were several cases where the registers in the REX encoded range
authorJan Beulich <jbeulich@novell.com>
Tue, 7 Aug 2012 16:51:34 +0000 (16:51 +0000)
committerJan Beulich <jbeulich@novell.com>
Tue, 7 Aug 2012 16:51:34 +0000 (16:51 +0000)
commit4c692bc7aa91109a1102fd0c6f3229e7efbe87d0
tree24ebc9515994d6053b89455ca2baedba0cb07593
parentdc1039df6354fe0931769191e1413a624ad5697d
There were several cases where the registers in the REX encoded range
got treated identically to the ones in the base range, due to not
paying attention to the fact that reg_entry's reg_num field doesn't
fully specify the register number (reg_flags also needs to be checked
for RegRex). This patch introduces and uses a new (inline) function to
obtain the full register number, and uses it to fix all those cases.

It additionally adds the missing operand checks for SVME instructions
(which match the monitor/mwait ones).

gas/
2012-08-07  Jan Beulich <jbeulich@suse.com>

* config/tc-i386.c (register_number): New function.
(build_vex_prefix, process_immext, process_operands,
build_modrm_byte, i386_index_check): Use it.

gas/testsuite/
2012-08-07  Jan Beulich <jbeulich@suse.com>

* gas/i386/x86-64-specific-reg.{s,l}: New.
* gas/i386/i386.exp: Run new test.

opcodes/
2012-08-07  Jan Beulich <jbeulich@suse.com>

* i386-opc.tbl: Remove "FIXME" comments from SVME instructions.
gas/ChangeLog
gas/config/tc-i386.c
gas/testsuite/ChangeLog
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/x86-64-specific-reg.l [new file with mode: 0644]
gas/testsuite/gas/i386/x86-64-specific-reg.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/i386-opc.tbl