S/390: Add support for IBM z13.
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>
Fri, 16 Jan 2015 11:19:21 +0000 (12:19 +0100)
committerAndreas Krebbel <krebbel@linux.vnet.ibm.com>
Fri, 16 Jan 2015 11:28:58 +0000 (12:28 +0100)
commit1e2e8c529c1cf4fcc8cbae382aa0a653d0b65da6
tree2cc295f864977f3b461a8f8fa80af608dcb8a769
parent9f2850baa3ce341f0ba42bd9519cb3c1bf1287c7
S/390: Add support for IBM z13.

- 32 128 bit vector registers (overlapping with the existing 16 64 bit
  floating point registers)
- vector double instructions
- vector integer instructions
- scalar vector instructions (allowing to have more floating point
  registers for scalar operations)
- vector string instructions

gas/ChangeLog:

* config/tc-s390.c (struct pd_reg): Remove.
(pre_defined_registers): Remove.
(REG_NAME_CNT): Remove.
(reg_name_search): Calculate the register number instead of doing
a lookup.
(register_name, tc_s390_regname_to_dw2regnum): Adopt to the new
reg_name_search signature.
(s390_parse_cpu): Support the new arch string z13.
(s390_insert_operand): Support for vector registers with the extra
field for the fifth bit of each vector register operand.
(md_gather_operand): Adjust to the new handling of optional
parameters.

* doc/as.texinfo: Document the z13 cpu string.

gas/testsuite/ChangeLog:

* gas/s390/esa-g5.d: Add a variant without the optional operand.
* gas/s390/esa-g5.s: Likewise.
* gas/s390/esa-z9-109.d: Likewise.
* gas/s390/esa-z9-109.s: Likewise.
* gas/s390/zarch-z9-109.d: Likewise.
* gas/s390/zarch-z9-109.s: Likewise.
* gas/s390/zarch-z10.d: For variants with a zero optional argument
it is not dumped by objdump anymore.
* gas/s390/zarch-zEC12.d: Likewise.

* gas/s390/zarch-z13.d: New file.
* gas/s390/zarch-z13.s: New file.
* gas/s390/s390.exp: Run the test for the z13 files.

include/opcode/ChangeLog:

* s390.h (s390_opcode_cpu_val): Add S390_OPCODE_Z13.

ld/testsuite/ChangeLog:

* ld-s390/tlsbin.dd: The nopr register operand is optional and not
printed if 0 anymore.

opcodes/ChangeLog:

* s390-dis.c (s390_extract_operand): Support vector register
operands.
(s390_print_insn_with_opcode): Support new operands types and add
new handling of optional operands.
* s390-mkopc.c (s390_opcode_mode_val, s390_opcode_cpu_val): Remove
and include opcode/s390.h instead.
(struct op_struct): New field `flags'.
(insertOpcode, insertExpandedMnemonic): New parameter `flags'.
(dumpTable): Dump flags.
(main): Parse flags from the s390-opc.txt file.  Add z13 as cpu
string.
* s390-opc.c: Add new operands types, instruction formats, and
instruction masks.
(s390_opformats): Add new formats for .insn.
* s390-opc.txt: Add new instructions.
25 files changed:
gas/ChangeLog
gas/config/tc-s390.c
gas/doc/as.texinfo
gas/doc/c-s390.texi
gas/testsuite/ChangeLog
gas/testsuite/gas/s390/esa-g5.d
gas/testsuite/gas/s390/esa-g5.s
gas/testsuite/gas/s390/esa-z9-109.d
gas/testsuite/gas/s390/esa-z9-109.s
gas/testsuite/gas/s390/s390.exp
gas/testsuite/gas/s390/zarch-z10.d
gas/testsuite/gas/s390/zarch-z13.d [new file with mode: 0644]
gas/testsuite/gas/s390/zarch-z13.s [new file with mode: 0644]
gas/testsuite/gas/s390/zarch-z9-109.d
gas/testsuite/gas/s390/zarch-z9-109.s
gas/testsuite/gas/s390/zarch-zEC12.d
include/opcode/ChangeLog
include/opcode/s390.h
ld/testsuite/ChangeLog
ld/testsuite/ld-s390/tlsbin.dd
opcodes/ChangeLog
opcodes/s390-dis.c
opcodes/s390-mkopc.c
opcodes/s390-opc.c
opcodes/s390-opc.txt