diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-10-20 15:57:20 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-10-20 15:57:44 -0700 |
commit | d038d596dc1d8e47ace22ab742cd40c2f22d659e (patch) | |
tree | ef7d0a88a2953976af3c84727dd7fe00e6291d07 | |
parent | 3a757a09fe08e68f8d4196a8894f3096bb679c3e (diff) | |
download | riscv-gnu-toolchain-d038d596dc1d8e47ace22ab742cd40c2f22d659e.zip riscv-gnu-toolchain-d038d596dc1d8e47ace22ab742cd40c2f22d659e.tar.gz riscv-gnu-toolchain-d038d596dc1d8e47ace22ab742cd40c2f22d659e.tar.bz2 |
Update to hopefully-final RVC 1.9 encoding
Sorry, Sven... :-)
-rw-r--r-- | binutils/include/opcode/riscv-opc.h | 26 | ||||
-rw-r--r-- | binutils/opcodes/riscv-opc.c | 4 |
2 files changed, 10 insertions, 20 deletions
diff --git a/binutils/include/opcode/riscv-opc.h b/binutils/include/opcode/riscv-opc.h index 1cca6d7..37c43a3 100644 --- a/binutils/include/opcode/riscv-opc.h +++ b/binutils/include/opcode/riscv-opc.h @@ -393,22 +393,18 @@ #define MASK_C_SRAI 0xec03 #define MATCH_C_ANDI 0x8801 #define MASK_C_ANDI 0xec03 -#define MATCH_C_ADDW 0x8c01 -#define MASK_C_ADDW 0xfc63 -#define MATCH_C_SLL 0x8c21 -#define MASK_C_SLL 0xfc63 -#define MATCH_C_SUBW 0x8c41 -#define MASK_C_SUBW 0xfc63 -#define MATCH_C_SUB 0x8c61 +#define MATCH_C_SUB 0x8c01 #define MASK_C_SUB 0xfc63 -#define MATCH_C_XOR 0x9c01 +#define MATCH_C_XOR 0x8c21 #define MASK_C_XOR 0xfc63 -#define MATCH_C_SRL 0x9c21 -#define MASK_C_SRL 0xfc63 -#define MATCH_C_OR 0x9c41 +#define MATCH_C_OR 0x8c41 #define MASK_C_OR 0xfc63 -#define MATCH_C_AND 0x9c61 +#define MATCH_C_AND 0x8c61 #define MASK_C_AND 0xfc63 +#define MATCH_C_SUBW 0x9c01 +#define MASK_C_SUBW 0xfc63 +#define MATCH_C_ADDW 0x9c21 +#define MASK_C_ADDW 0xfc63 #define MATCH_C_J 0xa001 #define MASK_C_J 0xe003 #define MATCH_C_BEQZ 0xc001 @@ -1019,14 +1015,12 @@ DECLARE_INSN(c_lui, MATCH_C_LUI, MASK_C_LUI) DECLARE_INSN(c_srli, MATCH_C_SRLI, MASK_C_SRLI) DECLARE_INSN(c_srai, MATCH_C_SRAI, MASK_C_SRAI) DECLARE_INSN(c_andi, MATCH_C_ANDI, MASK_C_ANDI) -DECLARE_INSN(c_addw, MATCH_C_ADDW, MASK_C_ADDW) -DECLARE_INSN(c_sll, MATCH_C_SLL, MASK_C_SLL) -DECLARE_INSN(c_subw, MATCH_C_SUBW, MASK_C_SUBW) DECLARE_INSN(c_sub, MATCH_C_SUB, MASK_C_SUB) DECLARE_INSN(c_xor, MATCH_C_XOR, MASK_C_XOR) -DECLARE_INSN(c_srl, MATCH_C_SRL, MASK_C_SRL) DECLARE_INSN(c_or, MATCH_C_OR, MASK_C_OR) DECLARE_INSN(c_and, MATCH_C_AND, MASK_C_AND) +DECLARE_INSN(c_subw, MATCH_C_SUBW, MASK_C_SUBW) +DECLARE_INSN(c_addw, MATCH_C_ADDW, MASK_C_ADDW) DECLARE_INSN(c_j, MATCH_C_J, MASK_C_J) DECLARE_INSN(c_beqz, MATCH_C_BEQZ, MASK_C_BEQZ) DECLARE_INSN(c_bnez, MATCH_C_BNEZ, MASK_C_BNEZ) diff --git a/binutils/opcodes/riscv-opc.c b/binutils/opcodes/riscv-opc.c index 40697ed..6956509 100644 --- a/binutils/opcodes/riscv-opc.c +++ b/binutils/opcodes/riscv-opc.c @@ -207,13 +207,11 @@ const struct riscv_opcode riscv_builtin_opcodes[] = {"slli", "C", "d,CU,C>", MATCH_C_SLLI, MASK_C_SLLI, match_rd_nonzero, INSN_ALIAS }, {"slli", "I", "d,s,>", MATCH_SLLI, MASK_SLLI, match_opcode, WR_xd|RD_xs1 }, {"sll", "C", "d,CU,C>", MATCH_C_SLLI, MASK_C_SLLI, match_rd_nonzero, INSN_ALIAS }, -{"sll", "C", "Cs,Cw,Ct", MATCH_C_SLL, MASK_C_SLL, match_opcode, INSN_ALIAS }, {"sll", "I", "d,s,t", MATCH_SLL, MASK_SLL, match_opcode, WR_xd|RD_xs1|RD_xs2 }, {"sll", "I", "d,s,>", MATCH_SLLI, MASK_SLLI, match_opcode, INSN_ALIAS|WR_xd|RD_xs1 }, {"srli", "C", "Cs,Cw,C>", MATCH_C_SRLI, MASK_C_SRLI, match_rd_nonzero, INSN_ALIAS }, {"srli", "I", "d,s,>", MATCH_SRLI, MASK_SRLI, match_opcode, WR_xd|RD_xs1 }, {"srl", "C", "Cs,Cw,C>", MATCH_C_SRLI, MASK_C_SRLI, match_rd_nonzero, INSN_ALIAS }, -{"srl", "C", "Cs,Cw,Ct", MATCH_C_SRL, MASK_C_SRL, match_opcode, INSN_ALIAS }, {"srl", "I", "d,s,t", MATCH_SRL, MASK_SRL, match_opcode, WR_xd|RD_xs1|RD_xs2 }, {"srl", "I", "d,s,>", MATCH_SRLI, MASK_SRLI, match_opcode, INSN_ALIAS|WR_xd|RD_xs1 }, {"srai", "C", "Cs,Cw,C>", MATCH_C_SRAI, MASK_C_SRAI, match_rd_nonzero, INSN_ALIAS }, @@ -572,8 +570,6 @@ const struct riscv_opcode riscv_builtin_opcodes[] = {"c.and", "C", "Cs,Ct", MATCH_C_AND, MASK_C_AND, match_opcode, 0 }, {"c.or", "C", "Cs,Ct", MATCH_C_OR, MASK_C_OR, match_opcode, 0 }, {"c.xor", "C", "Cs,Ct", MATCH_C_XOR, MASK_C_XOR, match_opcode, 0 }, -{"c.sll", "C", "Cs,Ct", MATCH_C_SLL, MASK_C_SLL, match_opcode, 0 }, -{"c.srl", "C", "Cs,Ct", MATCH_C_SRL, MASK_C_SRL, match_opcode, 0 }, {"c.slli", "C", "d,C>", MATCH_C_SLLI, MASK_C_SLLI, match_rd_nonzero, 0 }, {"c.srli", "C", "Cs,C>", MATCH_C_SRLI, MASK_C_SRLI, match_opcode, 0 }, {"c.srai", "C", "Cs,C>", MATCH_C_SRAI, MASK_C_SRAI, match_opcode, 0 }, |