mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-15 05:01:13 +08:00
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.
This commit is contained in:
@ -1,3 +1,7 @@
|
||||
2015-01-16 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
|
||||
|
||||
* s390.h (s390_opcode_cpu_val): Add S390_OPCODE_Z13.
|
||||
|
||||
2015-01-01 Alan Modra <amodra@gmail.com>
|
||||
|
||||
Update year range in copyright notice of all files.
|
||||
|
@ -41,9 +41,13 @@ enum s390_opcode_cpu_val
|
||||
S390_OPCODE_Z10,
|
||||
S390_OPCODE_Z196,
|
||||
S390_OPCODE_ZEC12,
|
||||
S390_OPCODE_Z13,
|
||||
S390_OPCODE_MAXCPU
|
||||
};
|
||||
|
||||
/* Instruction specific flags. */
|
||||
#define S390_INSTR_FLAG_OPTPARM 0x1
|
||||
|
||||
/* The opcode table is an array of struct s390_opcode. */
|
||||
|
||||
struct s390_opcode
|
||||
@ -74,6 +78,9 @@ struct s390_opcode
|
||||
|
||||
/* First cpu this opcode is available for. */
|
||||
enum s390_opcode_cpu_val min_cpu;
|
||||
|
||||
/* Instruction specific flags. */
|
||||
unsigned int flags;
|
||||
};
|
||||
|
||||
/* The table itself is sorted by major opcode number, and is otherwise
|
||||
@ -86,7 +93,7 @@ extern const int s390_num_opcodes;
|
||||
extern const struct s390_opcode s390_opformats[];
|
||||
extern const int s390_num_opformats;
|
||||
|
||||
/* Values defined for the flags field of a struct powerpc_opcode. */
|
||||
/* Values defined for the flags field of a struct s390_opcode. */
|
||||
|
||||
/* The operands table is an array of struct s390_operand. */
|
||||
|
||||
@ -103,7 +110,7 @@ struct s390_operand
|
||||
};
|
||||
|
||||
/* Elements in the table are retrieved by indexing with values from
|
||||
the operands field of the powerpc_opcodes table. */
|
||||
the operands field of the s390_opcodes table. */
|
||||
|
||||
extern const struct s390_operand s390_operands[];
|
||||
|
||||
@ -151,4 +158,14 @@ extern const struct s390_operand s390_operands[];
|
||||
/* The operand needs to be a valid GP or FP register pair. */
|
||||
#define S390_OPERAND_REG_PAIR 0x800
|
||||
|
||||
#endif /* S390_H */
|
||||
/* This operand names a vector register. The disassembler uses this
|
||||
to print register names with a leading 'v'. */
|
||||
#define S390_OPERAND_VR 0x1000
|
||||
|
||||
#define S390_OPERAND_CP16 0x2000
|
||||
|
||||
#define S390_OPERAND_OR1 0x4000
|
||||
#define S390_OPERAND_OR2 0x8000
|
||||
#define S390_OPERAND_OR8 0x10000
|
||||
|
||||
#endif /* S390_H */
|
||||
|
Reference in New Issue
Block a user