aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2015-10-20 15:57:20 -0700
committerAndrew Waterman <waterman@cs.berkeley.edu>2015-10-20 15:57:44 -0700
commitd038d596dc1d8e47ace22ab742cd40c2f22d659e (patch)
treeef7d0a88a2953976af3c84727dd7fe00e6291d07 /binutils
parent3a757a09fe08e68f8d4196a8894f3096bb679c3e (diff)
downloadriscv-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... :-)
Diffstat (limited to 'binutils')
-rw-r--r--binutils/include/opcode/riscv-opc.h26
-rw-r--r--binutils/opcodes/riscv-opc.c4
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 },