x86: ignore high register select bit(s) in 32- and 16-bit modes
authorJan Beulich <jbeulich@novell.com>
Thu, 16 Nov 2017 12:56:45 +0000 (13:56 +0100)
committerJan Beulich <jbeulich@suse.com>
Thu, 16 Nov 2017 12:56:45 +0000 (13:56 +0100)
commit5f847646eeb0107cb8c5e44c8bca3a4c88c91673
tree6de7d77fa08efc78ae400c03f4243bb207014fc1
parent968a13f8362072b5f7eae8584d490b53d7f97ca5
x86: ignore high register select bit(s) in 32- and 16-bit modes

While commits 9889cbb14e ("Check invalid mask registers") and
abfcb414b9 ("X86: Ignore REX_B bit for 32-bit XOP instructions") went a
bit into the right direction, this wasn't quite enough:
- VEX.vvvv has its high bit ignored
- EVEX.vvvv has its high bit ignored together with EVEX.v'
- the high bits of {,E}VEX.vvvv should not be prematurely zapped, to
  allow proper checking of them when the fields has to hold al ones
- when the high bits of an immediate specify a register, bit 7 is
  ignored
gas/ChangeLog
gas/testsuite/gas/i386/noextreg.d
gas/testsuite/gas/i386/noextreg.s
opcodes/ChangeLog
opcodes/i386-dis.c