x86: fold SReg{2,3}
authorJan Beulich <jbeulich@suse.com>
Tue, 16 Jul 2019 07:30:29 +0000 (09:30 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 16 Jul 2019 07:30:29 +0000 (09:30 +0200)
commit21df382b918888de64749e977f185c4e10a5b838
tree0304ccc5838584e7f3cadb92a206e4a2b616fed8
parent206e6c58a769f9ec63827b8ca3952b0cd8c828ba
x86: fold SReg{2,3}

They're the only exception to there generally being no mix of register
kinds possible in an insn operand template, and there being two bits per
operand for their representation is also quite wasteful, considering the
low number of uses.  Fold both bits and deal with the little bit of
fallout.

Also take the liberty and drop dead code trying to set REX_B: No segment
register has RegRex set on it.

Additionally I was quite surprised that PUSH/POP with the permitted
segment registers is not covered by the test cases.  Add the missing
pieces.
15 files changed:
gas/ChangeLog
gas/config/tc-i386-intel.c
gas/config/tc-i386.c
gas/testsuite/gas/i386/ilp32/x86-64-opcode.d
gas/testsuite/gas/i386/x86-64-opcode.d
gas/testsuite/gas/i386/x86-64-opcode.s
include/ChangeLog
include/opcode/i386.h
opcodes/ChangeLog
opcodes/i386-gen.c
opcodes/i386-init.h
opcodes/i386-opc.h
opcodes/i386-opc.tbl
opcodes/i386-reg.tbl
opcodes/i386-tbl.h