Rizin
unix-like reverse engineering framework and cli tools
riscv-opc.c
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: 2011-2015 Free Software Foundation, Inc.
2 // SPDX-License-Identifier: GPL-3.0-or-later
3 
4 /* RISC-V opcode list
5  Copyright 2011-2015 Free Software Foundation, Inc.
6 
7  Contributed by Andrew Waterman (waterman@cs.berkeley.edu) at UC Berkeley.
8  Based on MIPS target.
9 
10  This file is part of the GNU opcodes library.
11 
12  This library is free software; you can redistribute it and/or modify
13  it under the terms of the GNU General Public License as published by
14  the Free Software Foundation; either version 3, or (at your option)
15  any later version.
16 
17  It is distributed in the hope that it will be useful, but WITHOUT
18  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
19  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
20  License for more details.
21 
22  You should have received a copy of the GNU General Public License
23  along with this program; see the file COPYING3. If not,
24  see <http://www.gnu.org/licenses/>. */
25 
26 #include "riscv.h"
27 #include <stdio.h>
28 
29 /* Register names used by gas and objdump. */
30 
31 static const char * const riscv_gpr_names_numeric[NGPR] =
32 {
33  "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7",
34  "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15",
35  "x16", "x17", "x18", "x19", "x20", "x21", "x22", "x23",
36  "x24", "x25", "x26", "x27", "x28", "x29", "x30", "x31"
37 };
38 
39 static const char * const riscv_gpr_names_abi[NGPR] = {
40  "zero", "ra", "sp", "gp", "tp", "t0", "t1", "t2",
41  "s0", "s1", "a0", "a1", "a2", "a3", "a4", "a5",
42  "a6", "a7", "s2", "s3", "s4", "s5", "s6", "s7",
43  "s8", "s9", "s10", "s11", "t3", "t4", "t5", "t6"
44 };
45 
46 static const char * const riscv_fpr_names_numeric[NFPR] =
47 {
48  "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
49  "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
50  "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
51  "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"
52 };
53 
54 static const char * const riscv_fpr_names_abi[NFPR] = {
55  "ft0", "ft1", "ft2", "ft3", "ft4", "ft5", "ft6", "ft7",
56  "fs0", "fs1", "fa0", "fa1", "fa2", "fa3", "fa4", "fa5",
57  "fa6", "fa7", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7",
58  "fs8", "fs9", "fs10", "fs11", "ft8", "ft9", "ft10", "ft11"
59 };
60 
61 /* The order of overloaded instructions matters. Label arguments and
62  register arguments look the same. Instructions that can have either
63  for arguments must apear in the correct order in this table for the
64  assembler to pick the right one. In other words, entries with
65  immediate operands must apear after the same instruction with
66  registers.
67 
68  Because of the lookup algorithm used, entries with the same opcode
69  name must be contiguous. */
70 
71 #define MASK_RS1 (OP_MASK_RS1 << OP_SH_RS1)
72 #define MASK_RS2 (OP_MASK_RS2 << OP_SH_RS2)
73 #define MASK_RD (OP_MASK_RD << OP_SH_RD)
74 #define MASK_CRS2 (OP_MASK_CRS2 << OP_SH_CRS2)
75 #define MASK_IMM ENCODE_ITYPE_IMM (-1U)
76 #define MASK_RVC_IMM ENCODE_RVC_IMM (-1U)
77 #define MASK_UIMM ENCODE_UTYPE_IMM (-1U)
78 #define MASK_RM (OP_MASK_RM << OP_SH_RM)
79 #define MASK_PRED (OP_MASK_PRED << OP_SH_PRED)
80 #define MASK_SUCC (OP_MASK_SUCC << OP_SH_SUCC)
81 #define MASK_AQ (OP_MASK_AQ << OP_SH_AQ)
82 #define MASK_RL (OP_MASK_RL << OP_SH_RL)
83 #define MASK_AQRL (MASK_AQ | MASK_RL)
84 
85 static int match_opcode(const struct riscv_opcode *op, insn_t insn)
86 {
87  return ((insn ^ op->match) & op->mask) == 0;
88 }
89 
90 static int match_never(const struct riscv_opcode *op, insn_t insn)
91 {
92  return 0;
93 }
94 
95 static int match_rs1_eq_rs2(const struct riscv_opcode *op, insn_t insn)
96 {
97  int rs1 = (insn & MASK_RS1) >> OP_SH_RS1;
98  int rs2 = (insn & MASK_RS2) >> OP_SH_RS2;
99  return match_opcode (op, insn) && rs1 == rs2;
100 }
101 
102 static int match_rd_nonzero(const struct riscv_opcode *op, insn_t insn)
103 {
104  return match_opcode (op, insn) && ((insn & MASK_RD) != 0);
105 }
106 
107 static int match_c_add(const struct riscv_opcode *op, insn_t insn)
108 {
109  return match_rd_nonzero (op, insn) && ((insn & MASK_CRS2) != 0);
110 }
111 
112 static int match_c_lui(const struct riscv_opcode *op, insn_t insn)
113 {
114  return match_rd_nonzero (op, insn) && (((insn & MASK_RD) >> OP_SH_RD) != 2);
115 }
116 
117 static const struct riscv_opcode riscv_builtin_opcodes[] =
118 {
119 /* name, isa, operands, match, mask, match_func, pinfo. */
120 {"illegal", "C", "", 0, 0xffffU, match_opcode, 0 },
121 {"unimp", "I", "", MATCH_CSRRW | (CSR_CYCLE << OP_SH_CSR), 0xffffffffU, match_opcode, 0 }, /* csrw cycle, x0 */
122 {"ebreak", "C", "", MATCH_C_EBREAK, MASK_C_EBREAK, match_opcode, INSN_ALIAS },
123 {"ebreak", "I", "", MATCH_EBREAK, MASK_EBREAK, match_opcode, 0 },
124 {"sbreak", "C", "", MATCH_C_EBREAK, MASK_C_EBREAK, match_opcode, INSN_ALIAS },
125 {"sbreak", "I", "", MATCH_EBREAK, MASK_EBREAK, match_opcode, INSN_ALIAS },
126 {"ret", "C", "", MATCH_C_JR | (X_RA << OP_SH_RD), MASK_C_JR | MASK_RD, match_opcode, INSN_ALIAS },
128 {"jr", "C", "d", MATCH_C_JR, MASK_C_JR, match_rd_nonzero, INSN_ALIAS },
129 {"jr", "I", "s", MATCH_JALR, MASK_JALR | MASK_RD | MASK_IMM, match_opcode, INSN_ALIAS },
130 {"jr", "I", "o(s)", MATCH_JALR, MASK_JALR | MASK_RD, match_opcode, INSN_ALIAS },
131 {"jr", "I", "s,j", MATCH_JALR, MASK_JALR | MASK_RD, match_opcode, INSN_ALIAS },
132 {"jalr", "C", "d", MATCH_C_JALR, MASK_C_JALR, match_rd_nonzero, INSN_ALIAS },
133 {"jalr", "I", "s", MATCH_JALR | (X_RA << OP_SH_RD), MASK_JALR | MASK_RD | MASK_IMM, match_opcode, INSN_ALIAS },
134 {"jalr", "I", "o(s)", MATCH_JALR | (X_RA << OP_SH_RD), MASK_JALR | MASK_RD, match_opcode, INSN_ALIAS },
135 {"jalr", "I", "s,j", MATCH_JALR | (X_RA << OP_SH_RD), MASK_JALR | MASK_RD, match_opcode, INSN_ALIAS },
136 {"jalr", "I", "d,s", MATCH_JALR, MASK_JALR | MASK_IMM, match_opcode, INSN_ALIAS },
137 {"jalr", "I", "d,o(s)", MATCH_JALR, MASK_JALR, match_opcode, 0 },
138 {"jalr", "I", "d,s,j", MATCH_JALR, MASK_JALR, match_opcode, 0 },
139 {"j", "C", "Ca", MATCH_C_J, MASK_C_J, match_opcode, INSN_ALIAS },
140 {"j", "I", "a", MATCH_JAL, MASK_JAL | MASK_RD, match_opcode, INSN_ALIAS },
141 {"jal", "I", "d,a", MATCH_JAL, MASK_JAL, match_opcode, 0 },
142 {"jal", "32C", "Ca", MATCH_C_JAL, MASK_C_JAL, match_opcode, INSN_ALIAS },
143 {"jal", "I", "a", MATCH_JAL | (X_RA << OP_SH_RD), MASK_JAL | MASK_RD, match_opcode, INSN_ALIAS },
144 {"call", "I", "d,c", (X_T1 << OP_SH_RS1), (int) M_CALL, match_never, INSN_MACRO },
145 {"call", "I", "c", (X_T1 << OP_SH_RS1) | (X_RA << OP_SH_RD), (int) M_CALL, match_never, INSN_MACRO },
146 {"tail", "I", "c", (X_T1 << OP_SH_RS1), (int) M_CALL, match_never, INSN_MACRO },
147 {"jump", "I", "c,s", 0, (int) M_CALL, match_never, INSN_MACRO },
148 {"nop", "C", "", MATCH_C_ADDI, 0xffff, match_opcode, INSN_ALIAS },
150 {"lui", "C", "d,Cu", MATCH_C_LUI, MASK_C_LUI, match_c_lui, INSN_ALIAS },
151 {"lui", "I", "d,u", MATCH_LUI, MASK_LUI, match_opcode, 0 },
152 {"li", "C", "d,Cv", MATCH_C_LUI, MASK_C_LUI, match_c_lui, INSN_ALIAS },
153 {"li", "C", "d,Cj", MATCH_C_LI, MASK_C_LI, match_rd_nonzero, INSN_ALIAS },
155 {"li", "I", "d,j", MATCH_ADDI, MASK_ADDI | MASK_RS1, match_opcode, INSN_ALIAS }, /* addi */
156 {"li", "I", "d,I", 0, (int) M_LI, match_never, INSN_MACRO },
157 {"mv", "C", "d,CV", MATCH_C_MV, MASK_C_MV, match_c_add, INSN_ALIAS },
158 {"mv", "I", "d,s", MATCH_ADDI, MASK_ADDI | MASK_IMM, match_opcode, INSN_ALIAS },
159 {"move", "C", "d,CV", MATCH_C_MV, MASK_C_MV, match_c_add, INSN_ALIAS },
160 {"move", "I", "d,s", MATCH_ADDI, MASK_ADDI | MASK_IMM, match_opcode, INSN_ALIAS },
161 {"andi", "C", "Cs,Cw,Cj", MATCH_C_ANDI, MASK_C_ANDI, match_opcode, INSN_ALIAS },
162 {"andi", "I", "d,s,j", MATCH_ANDI, MASK_ANDI, match_opcode, 0 },
163 {"and", "C", "Cs,Cw,Ct", MATCH_C_AND, MASK_C_AND, match_opcode, INSN_ALIAS },
164 {"and", "C", "Cs,Ct,Cw", MATCH_C_AND, MASK_C_AND, match_opcode, INSN_ALIAS },
165 {"and", "C", "Cs,Cw,Cj", MATCH_C_ANDI, MASK_C_ANDI, match_opcode, INSN_ALIAS },
166 {"and", "I", "d,s,t", MATCH_AND, MASK_AND, match_opcode, 0 },
167 {"and", "I", "d,s,j", MATCH_ANDI, MASK_ANDI, match_opcode, INSN_ALIAS },
168 {"beqz", "C", "Cs,Cp", MATCH_C_BEQZ, MASK_C_BEQZ, match_opcode, INSN_ALIAS },
169 {"beqz", "I", "s,p", MATCH_BEQ, MASK_BEQ | MASK_RS2, match_opcode, INSN_ALIAS },
170 {"beq", "I", "s,t,p", MATCH_BEQ, MASK_BEQ, match_opcode, 0 },
171 {"blez", "I", "t,p", MATCH_BGE, MASK_BGE | MASK_RS1, match_opcode, INSN_ALIAS },
172 {"bgez", "I", "s,p", MATCH_BGE, MASK_BGE | MASK_RS2, match_opcode, INSN_ALIAS },
173 {"ble", "I", "t,s,p", MATCH_BGE, MASK_BGE, match_opcode, INSN_ALIAS },
174 {"bleu", "I", "t,s,p", MATCH_BGEU, MASK_BGEU, match_opcode, INSN_ALIAS },
175 {"bge", "I", "s,t,p", MATCH_BGE, MASK_BGE, match_opcode, 0 },
176 {"bgeu", "I", "s,t,p", MATCH_BGEU, MASK_BGEU, match_opcode, 0 },
177 {"bltz", "I", "s,p", MATCH_BLT, MASK_BLT | MASK_RS2, match_opcode, INSN_ALIAS },
178 {"bgtz", "I", "t,p", MATCH_BLT, MASK_BLT | MASK_RS1, match_opcode, INSN_ALIAS },
179 {"blt", "I", "s,t,p", MATCH_BLT, MASK_BLT, match_opcode, 0 },
180 {"bltu", "I", "s,t,p", MATCH_BLTU, MASK_BLTU, match_opcode, 0 },
181 {"bgt", "I", "t,s,p", MATCH_BLT, MASK_BLT, match_opcode, INSN_ALIAS },
182 {"bgtu", "I", "t,s,p", MATCH_BLTU, MASK_BLTU, match_opcode, INSN_ALIAS },
183 {"bnez", "C", "Cs,Cp", MATCH_C_BNEZ, MASK_C_BNEZ, match_opcode, INSN_ALIAS },
184 {"bnez", "I", "s,p", MATCH_BNE, MASK_BNE | MASK_RS2, match_opcode, INSN_ALIAS },
185 {"bne", "I", "s,t,p", MATCH_BNE, MASK_BNE, match_opcode, 0 },
186 {"addi", "C", "Ct,Cc,CK", MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN, match_opcode, INSN_ALIAS },
187 {"addi", "C", "d,CU,Cj", MATCH_C_ADDI, MASK_C_ADDI, match_rd_nonzero, INSN_ALIAS },
188 {"addi", "C", "Cc,Cc,CL", MATCH_C_ADDI16SP, MASK_C_ADDI16SP, match_opcode, INSN_ALIAS },
189 {"addi", "I", "d,s,j", MATCH_ADDI, MASK_ADDI, match_opcode, 0 },
190 {"add", "C", "d,CU,CV", MATCH_C_ADD, MASK_C_ADD, match_c_add, INSN_ALIAS },
191 {"add", "C", "d,CV,CU", MATCH_C_ADD, MASK_C_ADD, match_c_add, INSN_ALIAS },
192 {"add", "C", "d,CU,Cj", MATCH_C_ADDI, MASK_C_ADDI, match_rd_nonzero, INSN_ALIAS },
193 {"add", "C", "Ct,Cc,CK", MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN, match_opcode, INSN_ALIAS },
194 {"add", "C", "Cc,Cc,CL", MATCH_C_ADDI16SP, MASK_C_ADDI16SP, match_opcode, INSN_ALIAS },
195 {"add", "I", "d,s,t", MATCH_ADD, MASK_ADD, match_opcode, 0 },
196 {"add", "I", "d,s,t,0",MATCH_ADD, MASK_ADD, match_opcode, 0 },
197 {"add", "I", "d,s,j", MATCH_ADDI, MASK_ADDI, match_opcode, INSN_ALIAS },
198 {"la", "I", "d,A", 0, (int) M_LA, match_never, INSN_MACRO },
199 {"lla", "I", "d,A", 0, (int) M_LLA, match_never, INSN_MACRO },
200 {"la.tls.gd", "I", "d,A", 0, (int) M_LA_TLS_GD, match_never, INSN_MACRO },
201 {"la.tls.ie", "I", "d,A", 0, (int) M_LA_TLS_IE, match_never, INSN_MACRO },
202 {"neg", "I", "d,t", MATCH_SUB, MASK_SUB | MASK_RS1, match_opcode, INSN_ALIAS }, /* sub 0 */
203 {"slli", "C", "d,CU,C>", MATCH_C_SLLI, MASK_C_SLLI, match_rd_nonzero, INSN_ALIAS },
204 {"slli", "I", "d,s,>", MATCH_SLLI, MASK_SLLI, match_opcode, 0 },
205 {"sll", "C", "d,CU,C>", MATCH_C_SLLI, MASK_C_SLLI, match_rd_nonzero, INSN_ALIAS },
206 {"sll", "I", "d,s,t", MATCH_SLL, MASK_SLL, match_opcode, 0 },
207 {"sll", "I", "d,s,>", MATCH_SLLI, MASK_SLLI, match_opcode, INSN_ALIAS },
208 {"srli", "C", "Cs,Cw,C>", MATCH_C_SRLI, MASK_C_SRLI, match_rd_nonzero, INSN_ALIAS },
209 {"srli", "I", "d,s,>", MATCH_SRLI, MASK_SRLI, match_opcode, 0 },
210 {"srl", "C", "Cs,Cw,C>", MATCH_C_SRLI, MASK_C_SRLI, match_rd_nonzero, INSN_ALIAS },
211 {"srl", "I", "d,s,t", MATCH_SRL, MASK_SRL, match_opcode, 0 },
212 {"srl", "I", "d,s,>", MATCH_SRLI, MASK_SRLI, match_opcode, INSN_ALIAS },
213 {"srai", "C", "Cs,Cw,C>", MATCH_C_SRAI, MASK_C_SRAI, match_rd_nonzero, INSN_ALIAS },
214 {"srai", "I", "d,s,>", MATCH_SRAI, MASK_SRAI, match_opcode, 0 },
215 {"sra", "C", "Cs,Cw,C>", MATCH_C_SRAI, MASK_C_SRAI, match_rd_nonzero, INSN_ALIAS },
216 {"sra", "I", "d,s,t", MATCH_SRA, MASK_SRA, match_opcode, 0 },
217 {"sra", "I", "d,s,>", MATCH_SRAI, MASK_SRAI, match_opcode, INSN_ALIAS },
218 {"sub", "C", "Cs,Cw,Ct", MATCH_C_SUB, MASK_C_SUB, match_opcode, INSN_ALIAS },
219 {"sub", "I", "d,s,t", MATCH_SUB, MASK_SUB, match_opcode, 0 },
220 {"lb", "I", "d,o(s)", MATCH_LB, MASK_LB, match_opcode, 0 },
221 {"lb", "I", "d,A", 0, (int) M_LB, match_never, INSN_MACRO },
222 {"lbu", "I", "d,o(s)", MATCH_LBU, MASK_LBU, match_opcode, 0 },
223 {"lbu", "I", "d,A", 0, (int) M_LBU, match_never, INSN_MACRO },
224 {"lh", "I", "d,o(s)", MATCH_LH, MASK_LH, match_opcode, 0 },
225 {"lh", "I", "d,A", 0, (int) M_LH, match_never, INSN_MACRO },
226 {"lhu", "I", "d,o(s)", MATCH_LHU, MASK_LHU, match_opcode, 0 },
227 {"lhu", "I", "d,A", 0, (int) M_LHU, match_never, INSN_MACRO },
228 {"lw", "C", "d,Cm(Cc)", MATCH_C_LWSP, MASK_C_LWSP, match_rd_nonzero, INSN_ALIAS },
229 {"lw", "C", "Ct,Ck(Cs)", MATCH_C_LW, MASK_C_LW, match_opcode, INSN_ALIAS },
230 {"lw", "I", "d,o(s)", MATCH_LW, MASK_LW, match_opcode, 0 },
231 {"lw", "I", "d,A", 0, (int) M_LW, match_never, INSN_MACRO },
232 {"not", "I", "d,s", MATCH_XORI | MASK_IMM, MASK_XORI | MASK_IMM, match_opcode, INSN_ALIAS },
233 {"ori", "I", "d,s,j", MATCH_ORI, MASK_ORI, match_opcode, 0 },
234 {"or", "C", "Cs,Cw,Ct", MATCH_C_OR, MASK_C_OR, match_opcode, INSN_ALIAS },
235 {"or", "C", "Cs,Ct,Cw", MATCH_C_OR, MASK_C_OR, match_opcode, INSN_ALIAS },
236 {"or", "I", "d,s,t", MATCH_OR, MASK_OR, match_opcode, 0 },
237 {"or", "I", "d,s,j", MATCH_ORI, MASK_ORI, match_opcode, INSN_ALIAS },
238 {"auipc", "I", "d,u", MATCH_AUIPC, MASK_AUIPC, match_opcode, 0 },
239 {"seqz", "I", "d,s", MATCH_SLTIU | ENCODE_ITYPE_IMM (1), MASK_SLTIU | MASK_IMM, match_opcode, INSN_ALIAS },
240 {"snez", "I", "d,t", MATCH_SLTU, MASK_SLTU | MASK_RS1, match_opcode, INSN_ALIAS },
241 {"sltz", "I", "d,s", MATCH_SLT, MASK_SLT | MASK_RS2, match_opcode, INSN_ALIAS },
242 {"sgtz", "I", "d,t", MATCH_SLT, MASK_SLT | MASK_RS1, match_opcode, INSN_ALIAS },
243 {"slti", "I", "d,s,j", MATCH_SLTI, MASK_SLTI, match_opcode, INSN_ALIAS },
244 {"slt", "I", "d,s,t", MATCH_SLT, MASK_SLT, match_opcode, 0 },
245 {"slt", "I", "d,s,j", MATCH_SLTI, MASK_SLTI, match_opcode, 0 },
246 {"sltiu", "I", "d,s,j", MATCH_SLTIU, MASK_SLTIU, match_opcode, 0 },
247 {"sltu", "I", "d,s,t", MATCH_SLTU, MASK_SLTU, match_opcode, 0 },
248 {"sltu", "I", "d,s,j", MATCH_SLTIU, MASK_SLTIU, match_opcode, INSN_ALIAS },
249 {"sgt", "I", "d,t,s", MATCH_SLT, MASK_SLT, match_opcode, INSN_ALIAS },
250 {"sgtu", "I", "d,t,s", MATCH_SLTU, MASK_SLTU, match_opcode, INSN_ALIAS },
251 {"sb", "I", "t,q(s)", MATCH_SB, MASK_SB, match_opcode, 0 },
252 {"sb", "I", "t,A,s", 0, (int) M_SB, match_never, INSN_MACRO },
253 {"sh", "I", "t,q(s)", MATCH_SH, MASK_SH, match_opcode, 0 },
254 {"sh", "I", "t,A,s", 0, (int) M_SH, match_never, INSN_MACRO },
255 {"sw", "C", "CV,CM(Cc)", MATCH_C_SWSP, MASK_C_SWSP, match_opcode, INSN_ALIAS },
256 {"sw", "C", "Ct,Ck(Cs)", MATCH_C_SW, MASK_C_SW, match_opcode, INSN_ALIAS },
257 {"sw", "I", "t,q(s)", MATCH_SW, MASK_SW, match_opcode, 0 },
258 {"sw", "I", "t,A,s", 0, (int) M_SW, match_never, INSN_MACRO },
260 {"fence", "I", "P,Q", MATCH_FENCE, MASK_FENCE | MASK_RD | MASK_RS1 | (MASK_IMM & ~MASK_PRED & ~MASK_SUCC), match_opcode, 0 },
261 {"fence.i", "I", "", MATCH_FENCE_I, MASK_FENCE | MASK_RD | MASK_RS1 | MASK_IMM, match_opcode, 0 },
262 {"rdcycle", "I", "d", MATCH_RDCYCLE, MASK_RDCYCLE, match_opcode, INSN_ALIAS },
263 {"rdinstret", "I", "d", MATCH_RDINSTRET, MASK_RDINSTRET, match_opcode, INSN_ALIAS },
264 {"rdtime", "I", "d", MATCH_RDTIME, MASK_RDTIME, match_opcode, INSN_ALIAS },
265 {"rdcycleh", "32I", "d", MATCH_RDCYCLEH, MASK_RDCYCLEH, match_opcode, INSN_ALIAS },
266 {"rdinstreth","32I", "d", MATCH_RDINSTRETH, MASK_RDINSTRETH, match_opcode, INSN_ALIAS },
267 {"rdtimeh", "32I", "d", MATCH_RDTIMEH, MASK_RDTIMEH, match_opcode, INSN_ALIAS },
268 {"ecall", "I", "", MATCH_SCALL, MASK_SCALL, match_opcode, 0 },
269 {"scall", "I", "", MATCH_SCALL, MASK_SCALL, match_opcode, 0 },
270 {"xori", "I", "d,s,j", MATCH_XORI, MASK_XORI, match_opcode, 0 },
271 {"xor", "C", "Cs,Cw,Ct", MATCH_C_XOR, MASK_C_XOR, match_opcode, INSN_ALIAS },
272 {"xor", "C", "Cs,Ct,Cw", MATCH_C_XOR, MASK_C_XOR, match_opcode, INSN_ALIAS },
273 {"xor", "I", "d,s,t", MATCH_XOR, MASK_XOR, match_opcode, 0 },
274 {"xor", "I", "d,s,j", MATCH_XORI, MASK_XORI, match_opcode, INSN_ALIAS },
275 {"lwu", "64I", "d,o(s)", MATCH_LWU, MASK_LWU, match_opcode, 0 },
276 {"lwu", "64I", "d,A", 0, (int) M_LWU, match_never, INSN_MACRO },
277 {"ld", "64C", "d,Cn(Cc)", MATCH_C_LDSP, MASK_C_LDSP, match_rd_nonzero, INSN_ALIAS },
278 {"ld", "64C", "Ct,Cl(Cs)", MATCH_C_LD, MASK_C_LD, match_opcode, INSN_ALIAS },
279 {"ld", "64I", "d,o(s)", MATCH_LD, MASK_LD, match_opcode, 0 },
280 {"ld", "64I", "d,A", 0, (int) M_LD, match_never, INSN_MACRO },
281 {"sd", "64C", "CV,CN(Cc)", MATCH_C_SDSP, MASK_C_SDSP, match_opcode, INSN_ALIAS },
282 {"sd", "64C", "Ct,Cl(Cs)", MATCH_C_SD, MASK_C_SD, match_opcode, INSN_ALIAS },
283 {"sd", "64I", "t,q(s)", MATCH_SD, MASK_SD, match_opcode, 0 },
284 {"sd", "64I", "t,A,s", 0, (int) M_SD, match_never, INSN_MACRO },
285 {"sext.w", "64C", "d,CU", MATCH_C_ADDIW, MASK_C_ADDIW | MASK_RVC_IMM, match_rd_nonzero, INSN_ALIAS },
286 {"sext.w", "64I", "d,s", MATCH_ADDIW, MASK_ADDIW | MASK_IMM, match_opcode, INSN_ALIAS },
287 {"addiw", "64C", "d,CU,Cj", MATCH_C_ADDIW, MASK_C_ADDIW, match_rd_nonzero, INSN_ALIAS },
288 {"addiw", "64I", "d,s,j", MATCH_ADDIW, MASK_ADDIW, match_opcode, 0 },
289 {"addw", "64C", "Cs,Cw,Ct", MATCH_C_ADDW, MASK_C_ADDW, match_opcode, INSN_ALIAS },
290 {"addw", "64C", "Cs,Ct,Cw", MATCH_C_ADDW, MASK_C_ADDW, match_opcode, INSN_ALIAS },
291 {"addw", "64C", "d,CU,Cj", MATCH_C_ADDIW, MASK_C_ADDIW, match_rd_nonzero, INSN_ALIAS },
292 {"addw", "64I", "d,s,t", MATCH_ADDW, MASK_ADDW, match_opcode, 0 },
293 {"addw", "64I", "d,s,j", MATCH_ADDIW, MASK_ADDIW, match_opcode, INSN_ALIAS },
294 {"negw", "64I", "d,t", MATCH_SUBW, MASK_SUBW | MASK_RS1, match_opcode, INSN_ALIAS }, /* sub 0 */
295 {"slliw", "64I", "d,s,<", MATCH_SLLIW, MASK_SLLIW, match_opcode, 0 },
296 {"sllw", "64I", "d,s,t", MATCH_SLLW, MASK_SLLW, match_opcode, 0 },
297 {"sllw", "64I", "d,s,<", MATCH_SLLIW, MASK_SLLIW, match_opcode, INSN_ALIAS },
298 {"srliw", "64I", "d,s,<", MATCH_SRLIW, MASK_SRLIW, match_opcode, 0 },
299 {"srlw", "64I", "d,s,t", MATCH_SRLW, MASK_SRLW, match_opcode, 0 },
300 {"srlw", "64I", "d,s,<", MATCH_SRLIW, MASK_SRLIW, match_opcode, INSN_ALIAS },
301 {"sraiw", "64I", "d,s,<", MATCH_SRAIW, MASK_SRAIW, match_opcode, 0 },
302 {"sraw", "64I", "d,s,t", MATCH_SRAW, MASK_SRAW, match_opcode, 0 },
303 {"sraw", "64I", "d,s,<", MATCH_SRAIW, MASK_SRAIW, match_opcode, INSN_ALIAS },
304 {"subw", "64C", "Cs,Cw,Ct", MATCH_C_SUBW, MASK_C_SUBW, match_opcode, INSN_ALIAS },
305 {"subw", "64I", "d,s,t", MATCH_SUBW, MASK_SUBW, match_opcode, 0 },
306 
307 /* Atomic memory operation instruction subset */
308 {"lr.w", "A", "d,0(s)", MATCH_LR_W, MASK_LR_W | MASK_AQRL, match_opcode, 0 },
309 {"sc.w", "A", "d,t,0(s)", MATCH_SC_W, MASK_SC_W | MASK_AQRL, match_opcode, 0 },
310 {"amoadd.w", "A", "d,t,0(s)", MATCH_AMOADD_W, MASK_AMOADD_W | MASK_AQRL, match_opcode, 0 },
311 {"amoswap.w", "A", "d,t,0(s)", MATCH_AMOSWAP_W, MASK_AMOSWAP_W | MASK_AQRL, match_opcode, 0 },
312 {"amoand.w", "A", "d,t,0(s)", MATCH_AMOAND_W, MASK_AMOAND_W | MASK_AQRL, match_opcode, 0 },
313 {"amoor.w", "A", "d,t,0(s)", MATCH_AMOOR_W, MASK_AMOOR_W | MASK_AQRL, match_opcode, 0 },
314 {"amoxor.w", "A", "d,t,0(s)", MATCH_AMOXOR_W, MASK_AMOXOR_W | MASK_AQRL, match_opcode, 0 },
315 {"amomax.w", "A", "d,t,0(s)", MATCH_AMOMAX_W, MASK_AMOMAX_W | MASK_AQRL, match_opcode, 0 },
316 {"amomaxu.w", "A", "d,t,0(s)", MATCH_AMOMAXU_W, MASK_AMOMAXU_W | MASK_AQRL, match_opcode, 0 },
317 {"amomin.w", "A", "d,t,0(s)", MATCH_AMOMIN_W, MASK_AMOMIN_W | MASK_AQRL, match_opcode, 0 },
318 {"amominu.w", "A", "d,t,0(s)", MATCH_AMOMINU_W, MASK_AMOMINU_W | MASK_AQRL, match_opcode, 0 },
319 {"lr.w.aq", "A", "d,0(s)", MATCH_LR_W | MASK_AQ, MASK_LR_W | MASK_AQRL, match_opcode, 0 },
320 {"sc.w.aq", "A", "d,t,0(s)", MATCH_SC_W | MASK_AQ, MASK_SC_W | MASK_AQRL, match_opcode, 0 },
321 {"amoadd.w.aq", "A", "d,t,0(s)", MATCH_AMOADD_W | MASK_AQ, MASK_AMOADD_W | MASK_AQRL, match_opcode, 0 },
322 {"amoswap.w.aq", "A", "d,t,0(s)", MATCH_AMOSWAP_W | MASK_AQ, MASK_AMOSWAP_W | MASK_AQRL, match_opcode, 0 },
323 {"amoand.w.aq", "A", "d,t,0(s)", MATCH_AMOAND_W | MASK_AQ, MASK_AMOAND_W | MASK_AQRL, match_opcode, 0 },
324 {"amoor.w.aq", "A", "d,t,0(s)", MATCH_AMOOR_W | MASK_AQ, MASK_AMOOR_W | MASK_AQRL, match_opcode, 0 },
325 {"amoxor.w.aq", "A", "d,t,0(s)", MATCH_AMOXOR_W | MASK_AQ, MASK_AMOXOR_W | MASK_AQRL, match_opcode, 0 },
326 {"amomax.w.aq", "A", "d,t,0(s)", MATCH_AMOMAX_W | MASK_AQ, MASK_AMOMAX_W | MASK_AQRL, match_opcode, 0 },
327 {"amomaxu.w.aq", "A", "d,t,0(s)", MATCH_AMOMAXU_W | MASK_AQ, MASK_AMOMAXU_W | MASK_AQRL, match_opcode, 0 },
328 {"amomin.w.aq", "A", "d,t,0(s)", MATCH_AMOMIN_W | MASK_AQ, MASK_AMOMIN_W | MASK_AQRL, match_opcode, 0 },
329 {"amominu.w.aq", "A", "d,t,0(s)", MATCH_AMOMINU_W | MASK_AQ, MASK_AMOMINU_W | MASK_AQRL, match_opcode, 0 },
330 {"lr.w.rl", "A", "d,0(s)", MATCH_LR_W | MASK_RL, MASK_LR_W | MASK_AQRL, match_opcode, 0 },
331 {"sc.w.rl", "A", "d,t,0(s)", MATCH_SC_W | MASK_RL, MASK_SC_W | MASK_AQRL, match_opcode, 0 },
332 {"amoadd.w.rl", "A", "d,t,0(s)", MATCH_AMOADD_W | MASK_RL, MASK_AMOADD_W | MASK_AQRL, match_opcode, 0 },
333 {"amoswap.w.rl", "A", "d,t,0(s)", MATCH_AMOSWAP_W | MASK_RL, MASK_AMOSWAP_W | MASK_AQRL, match_opcode, 0 },
334 {"amoand.w.rl", "A", "d,t,0(s)", MATCH_AMOAND_W | MASK_RL, MASK_AMOAND_W | MASK_AQRL, match_opcode, 0 },
335 {"amoor.w.rl", "A", "d,t,0(s)", MATCH_AMOOR_W | MASK_RL, MASK_AMOOR_W | MASK_AQRL, match_opcode, 0 },
336 {"amoxor.w.rl", "A", "d,t,0(s)", MATCH_AMOXOR_W | MASK_RL, MASK_AMOXOR_W | MASK_AQRL, match_opcode, 0 },
337 {"amomax.w.rl", "A", "d,t,0(s)", MATCH_AMOMAX_W | MASK_RL, MASK_AMOMAX_W | MASK_AQRL, match_opcode, 0 },
338 {"amomaxu.w.rl", "A", "d,t,0(s)", MATCH_AMOMAXU_W | MASK_RL, MASK_AMOMAXU_W | MASK_AQRL, match_opcode, 0 },
339 {"amomin.w.rl", "A", "d,t,0(s)", MATCH_AMOMIN_W | MASK_RL, MASK_AMOMIN_W | MASK_AQRL, match_opcode, 0 },
340 {"amominu.w.rl", "A", "d,t,0(s)", MATCH_AMOMINU_W | MASK_RL, MASK_AMOMINU_W | MASK_AQRL, match_opcode, 0 },
341 {"lr.w.aqrl", "A", "d,0(s)", MATCH_LR_W | MASK_AQRL, MASK_LR_W | MASK_AQRL, match_opcode, 0 },
342 {"sc.w.aqrl", "A", "d,t,0(s)", MATCH_SC_W | MASK_AQRL, MASK_SC_W | MASK_AQRL, match_opcode, 0 },
343 {"amoadd.w.aqrl", "A", "d,t,0(s)", MATCH_AMOADD_W | MASK_AQRL, MASK_AMOADD_W | MASK_AQRL, match_opcode, 0 },
344 {"amoswap.w.aqrl", "A", "d,t,0(s)", MATCH_AMOSWAP_W | MASK_AQRL, MASK_AMOSWAP_W | MASK_AQRL, match_opcode, 0 },
345 {"amoand.w.aqrl", "A", "d,t,0(s)", MATCH_AMOAND_W | MASK_AQRL, MASK_AMOAND_W | MASK_AQRL, match_opcode, 0 },
346 {"amoor.w.aqrl", "A", "d,t,0(s)", MATCH_AMOOR_W | MASK_AQRL, MASK_AMOOR_W | MASK_AQRL, match_opcode, 0 },
347 {"amoxor.w.aqrl", "A", "d,t,0(s)", MATCH_AMOXOR_W | MASK_AQRL, MASK_AMOXOR_W | MASK_AQRL, match_opcode, 0 },
348 {"amomax.w.aqrl", "A", "d,t,0(s)", MATCH_AMOMAX_W | MASK_AQRL, MASK_AMOMAX_W | MASK_AQRL, match_opcode, 0 },
349 {"amomaxu.w.aqrl", "A", "d,t,0(s)", MATCH_AMOMAXU_W | MASK_AQRL, MASK_AMOMAXU_W | MASK_AQRL, match_opcode, 0 },
350 {"amomin.w.aqrl", "A", "d,t,0(s)", MATCH_AMOMIN_W | MASK_AQRL, MASK_AMOMIN_W | MASK_AQRL, match_opcode, 0 },
351 {"amominu.w.aqrl", "A", "d,t,0(s)", MATCH_AMOMINU_W | MASK_AQRL, MASK_AMOMINU_W | MASK_AQRL, match_opcode, 0 },
352 {"lr.d", "64A", "d,0(s)", MATCH_LR_D, MASK_LR_D | MASK_AQRL, match_opcode, 0 },
353 {"sc.d", "64A", "d,t,0(s)", MATCH_SC_D, MASK_SC_D | MASK_AQRL, match_opcode, 0 },
354 {"amoadd.d", "64A", "d,t,0(s)", MATCH_AMOADD_D, MASK_AMOADD_D | MASK_AQRL, match_opcode, 0 },
355 {"amoswap.d", "64A", "d,t,0(s)", MATCH_AMOSWAP_D, MASK_AMOSWAP_D | MASK_AQRL, match_opcode, 0 },
356 {"amoand.d", "64A", "d,t,0(s)", MATCH_AMOAND_D, MASK_AMOAND_D | MASK_AQRL, match_opcode, 0 },
357 {"amoor.d", "64A", "d,t,0(s)", MATCH_AMOOR_D, MASK_AMOOR_D | MASK_AQRL, match_opcode, 0 },
358 {"amoxor.d", "64A", "d,t,0(s)", MATCH_AMOXOR_D, MASK_AMOXOR_D | MASK_AQRL, match_opcode, 0 },
359 {"amomax.d", "64A", "d,t,0(s)", MATCH_AMOMAX_D, MASK_AMOMAX_D | MASK_AQRL, match_opcode, 0 },
360 {"amomaxu.d", "64A", "d,t,0(s)", MATCH_AMOMAXU_D, MASK_AMOMAXU_D | MASK_AQRL, match_opcode, 0 },
361 {"amomin.d", "64A", "d,t,0(s)", MATCH_AMOMIN_D, MASK_AMOMIN_D | MASK_AQRL, match_opcode, 0 },
362 {"amominu.d", "64A", "d,t,0(s)", MATCH_AMOMINU_D, MASK_AMOMINU_D | MASK_AQRL, match_opcode, 0 },
363 {"lr.d.aq", "64A", "d,0(s)", MATCH_LR_D | MASK_AQ, MASK_LR_D | MASK_AQRL, match_opcode, 0 },
364 {"sc.d.aq", "64A", "d,t,0(s)", MATCH_SC_D | MASK_AQ, MASK_SC_D | MASK_AQRL, match_opcode, 0 },
365 {"amoadd.d.aq", "64A", "d,t,0(s)", MATCH_AMOADD_D | MASK_AQ, MASK_AMOADD_D | MASK_AQRL, match_opcode, 0 },
366 {"amoswap.d.aq", "64A", "d,t,0(s)", MATCH_AMOSWAP_D | MASK_AQ, MASK_AMOSWAP_D | MASK_AQRL, match_opcode, 0 },
367 {"amoand.d.aq", "64A", "d,t,0(s)", MATCH_AMOAND_D | MASK_AQ, MASK_AMOAND_D | MASK_AQRL, match_opcode, 0 },
368 {"amoor.d.aq", "64A", "d,t,0(s)", MATCH_AMOOR_D | MASK_AQ, MASK_AMOOR_D | MASK_AQRL, match_opcode, 0 },
369 {"amoxor.d.aq", "64A", "d,t,0(s)", MATCH_AMOXOR_D | MASK_AQ, MASK_AMOXOR_D | MASK_AQRL, match_opcode, 0 },
370 {"amomax.d.aq", "64A", "d,t,0(s)", MATCH_AMOMAX_D | MASK_AQ, MASK_AMOMAX_D | MASK_AQRL, match_opcode, 0 },
371 {"amomaxu.d.aq", "64A", "d,t,0(s)", MATCH_AMOMAXU_D | MASK_AQ, MASK_AMOMAXU_D | MASK_AQRL, match_opcode, 0 },
372 {"amomin.d.aq", "64A", "d,t,0(s)", MATCH_AMOMIN_D | MASK_AQ, MASK_AMOMIN_D | MASK_AQRL, match_opcode, 0 },
373 {"amominu.d.aq", "64A", "d,t,0(s)", MATCH_AMOMINU_D | MASK_AQ, MASK_AMOMINU_D | MASK_AQRL, match_opcode, 0 },
374 {"lr.d.rl", "64A", "d,0(s)", MATCH_LR_D | MASK_RL, MASK_LR_D | MASK_AQRL, match_opcode, 0 },
375 {"sc.d.rl", "64A", "d,t,0(s)", MATCH_SC_D | MASK_RL, MASK_SC_D | MASK_AQRL, match_opcode, 0 },
376 {"amoadd.d.rl", "64A", "d,t,0(s)", MATCH_AMOADD_D | MASK_RL, MASK_AMOADD_D | MASK_AQRL, match_opcode, 0 },
377 {"amoswap.d.rl", "64A", "d,t,0(s)", MATCH_AMOSWAP_D | MASK_RL, MASK_AMOSWAP_D | MASK_AQRL, match_opcode, 0 },
378 {"amoand.d.rl", "64A", "d,t,0(s)", MATCH_AMOAND_D | MASK_RL, MASK_AMOAND_D | MASK_AQRL, match_opcode, 0 },
379 {"amoor.d.rl", "64A", "d,t,0(s)", MATCH_AMOOR_D | MASK_RL, MASK_AMOOR_D | MASK_AQRL, match_opcode, 0 },
380 {"amoxor.d.rl", "64A", "d,t,0(s)", MATCH_AMOXOR_D | MASK_RL, MASK_AMOXOR_D | MASK_AQRL, match_opcode, 0 },
381 {"amomax.d.rl", "64A", "d,t,0(s)", MATCH_AMOMAX_D | MASK_RL, MASK_AMOMAX_D | MASK_AQRL, match_opcode, 0 },
382 {"amomaxu.d.rl", "64A", "d,t,0(s)", MATCH_AMOMAXU_D | MASK_RL, MASK_AMOMAXU_D | MASK_AQRL, match_opcode, 0 },
383 {"amomin.d.rl", "64A", "d,t,0(s)", MATCH_AMOMIN_D | MASK_RL, MASK_AMOMIN_D | MASK_AQRL, match_opcode, 0 },
384 {"amominu.d.rl", "64A", "d,t,0(s)", MATCH_AMOMINU_D | MASK_RL, MASK_AMOMINU_D | MASK_AQRL, match_opcode, 0 },
385 {"lr.d.aqrl", "64A", "d,0(s)", MATCH_LR_D | MASK_AQRL, MASK_LR_D | MASK_AQRL, match_opcode, 0 },
386 {"sc.d.aqrl", "64A", "d,t,0(s)", MATCH_SC_D | MASK_AQRL, MASK_SC_D | MASK_AQRL, match_opcode, 0 },
387 {"amoadd.d.aqrl", "64A", "d,t,0(s)", MATCH_AMOADD_D | MASK_AQRL, MASK_AMOADD_D | MASK_AQRL, match_opcode, 0 },
388 {"amoswap.d.aqrl", "64A", "d,t,0(s)", MATCH_AMOSWAP_D | MASK_AQRL, MASK_AMOSWAP_D | MASK_AQRL, match_opcode, 0 },
389 {"amoand.d.aqrl", "64A", "d,t,0(s)", MATCH_AMOAND_D | MASK_AQRL, MASK_AMOAND_D | MASK_AQRL, match_opcode, 0 },
390 {"amoor.d.aqrl", "64A", "d,t,0(s)", MATCH_AMOOR_D | MASK_AQRL, MASK_AMOOR_D | MASK_AQRL, match_opcode, 0 },
391 {"amoxor.d.aqrl", "64A", "d,t,0(s)", MATCH_AMOXOR_D | MASK_AQRL, MASK_AMOXOR_D | MASK_AQRL, match_opcode, 0 },
392 {"amomax.d.aqrl", "64A", "d,t,0(s)", MATCH_AMOMAX_D | MASK_AQRL, MASK_AMOMAX_D | MASK_AQRL, match_opcode, 0 },
393 {"amomaxu.d.aqrl", "64A", "d,t,0(s)", MATCH_AMOMAXU_D | MASK_AQRL, MASK_AMOMAXU_D | MASK_AQRL, match_opcode, 0 },
394 {"amomin.d.aqrl", "64A", "d,t,0(s)", MATCH_AMOMIN_D | MASK_AQRL, MASK_AMOMIN_D | MASK_AQRL, match_opcode, 0 },
395 {"amominu.d.aqrl", "64A", "d,t,0(s)", MATCH_AMOMINU_D | MASK_AQRL, MASK_AMOMINU_D | MASK_AQRL, match_opcode, 0 },
396 
397 /* Multiply/Divide instruction subset */
398 {"mul", "M", "d,s,t", MATCH_MUL, MASK_MUL, match_opcode, 0 },
399 {"mulh", "M", "d,s,t", MATCH_MULH, MASK_MULH, match_opcode, 0 },
400 {"mulhu", "M", "d,s,t", MATCH_MULHU, MASK_MULHU, match_opcode, 0 },
401 {"mulhsu", "M", "d,s,t", MATCH_MULHSU, MASK_MULHSU, match_opcode, 0 },
402 {"div", "M", "d,s,t", MATCH_DIV, MASK_DIV, match_opcode, 0 },
403 {"divu", "M", "d,s,t", MATCH_DIVU, MASK_DIVU, match_opcode, 0 },
404 {"rem", "M", "d,s,t", MATCH_REM, MASK_REM, match_opcode, 0 },
405 {"remu", "M", "d,s,t", MATCH_REMU, MASK_REMU, match_opcode, 0 },
406 {"mulw", "64M", "d,s,t", MATCH_MULW, MASK_MULW, match_opcode, 0 },
407 {"divw", "64M", "d,s,t", MATCH_DIVW, MASK_DIVW, match_opcode, 0 },
408 {"divuw", "64M", "d,s,t", MATCH_DIVUW, MASK_DIVUW, match_opcode, 0 },
409 {"remw", "64M", "d,s,t", MATCH_REMW, MASK_REMW, match_opcode, 0 },
410 {"remuw", "64M", "d,s,t", MATCH_REMUW, MASK_REMUW, match_opcode, 0 },
411 
412 /* Single-precision floating-point instruction subset */
413 {"frsr", "F", "d", MATCH_FRCSR, MASK_FRCSR, match_opcode, 0 },
414 {"fssr", "F", "s", MATCH_FSCSR, MASK_FSCSR | MASK_RD, match_opcode, 0 },
415 {"fssr", "F", "d,s", MATCH_FSCSR, MASK_FSCSR, match_opcode, 0 },
416 {"frcsr", "F", "d", MATCH_FRCSR, MASK_FRCSR, match_opcode, 0 },
417 {"fscsr", "F", "s", MATCH_FSCSR, MASK_FSCSR | MASK_RD, match_opcode, 0 },
418 {"fscsr", "F", "d,s", MATCH_FSCSR, MASK_FSCSR, match_opcode, 0 },
419 {"frrm", "F", "d", MATCH_FRRM, MASK_FRRM, match_opcode, 0 },
420 {"fsrm", "F", "s", MATCH_FSRM, MASK_FSRM | MASK_RD, match_opcode, 0 },
421 {"fsrm", "F", "d,s", MATCH_FSRM, MASK_FSRM, match_opcode, 0 },
422 {"frflags", "F", "d", MATCH_FRFLAGS, MASK_FRFLAGS, match_opcode, 0 },
423 {"fsflags", "F", "s", MATCH_FSFLAGS, MASK_FSFLAGS | MASK_RD, match_opcode, 0 },
424 {"fsflags", "F", "d,s", MATCH_FSFLAGS, MASK_FSFLAGS, match_opcode, 0 },
425 {"flw", "32C", "D,Cm(Cc)", MATCH_C_FLWSP, MASK_C_FLWSP, match_opcode, INSN_ALIAS },
426 {"flw", "32C", "CD,Ck(Cs)", MATCH_C_FLW, MASK_C_FLW, match_opcode, INSN_ALIAS },
427 {"flw", "F", "D,o(s)", MATCH_FLW, MASK_FLW, match_opcode, 0 },
428 {"flw", "F", "D,A,s", 0, (int) M_FLW, match_never, INSN_MACRO },
429 {"fsw", "32C", "CT,CM(Cc)", MATCH_C_FSWSP, MASK_C_FSWSP, match_opcode, INSN_ALIAS },
430 {"fsw", "32C", "CD,Ck(Cs)", MATCH_C_FSW, MASK_C_FSW, match_opcode, INSN_ALIAS },
431 {"fsw", "F", "T,q(s)", MATCH_FSW, MASK_FSW, match_opcode, 0 },
432 {"fsw", "F", "T,A,s", 0, (int) M_FSW, match_never, INSN_MACRO },
433 {"fmv.x.s", "F", "d,S", MATCH_FMV_X_S, MASK_FMV_X_S, match_opcode, 0 },
434 {"fmv.s.x", "F", "D,s", MATCH_FMV_S_X, MASK_FMV_S_X, match_opcode, 0 },
435 {"fmv.s", "F", "D,U", MATCH_FSGNJ_S, MASK_FSGNJ_S, match_rs1_eq_rs2, INSN_ALIAS },
436 {"fneg.s", "F", "D,U", MATCH_FSGNJN_S, MASK_FSGNJN_S, match_rs1_eq_rs2, INSN_ALIAS },
437 {"fabs.s", "F", "D,U", MATCH_FSGNJX_S, MASK_FSGNJX_S, match_rs1_eq_rs2, INSN_ALIAS },
438 {"fsgnj.s", "F", "D,S,T", MATCH_FSGNJ_S, MASK_FSGNJ_S, match_opcode, 0 },
439 {"fsgnjn.s", "F", "D,S,T", MATCH_FSGNJN_S, MASK_FSGNJN_S, match_opcode, 0 },
440 {"fsgnjx.s", "F", "D,S,T", MATCH_FSGNJX_S, MASK_FSGNJX_S, match_opcode, 0 },
441 {"fadd.s", "F", "D,S,T", MATCH_FADD_S | MASK_RM, MASK_FADD_S | MASK_RM, match_opcode, 0 },
442 {"fadd.s", "F", "D,S,T,m", MATCH_FADD_S, MASK_FADD_S, match_opcode, 0 },
443 {"fsub.s", "F", "D,S,T", MATCH_FSUB_S | MASK_RM, MASK_FSUB_S | MASK_RM, match_opcode, 0 },
444 {"fsub.s", "F", "D,S,T,m", MATCH_FSUB_S, MASK_FSUB_S, match_opcode, 0 },
445 {"fmul.s", "F", "D,S,T", MATCH_FMUL_S | MASK_RM, MASK_FMUL_S | MASK_RM, match_opcode, 0 },
446 {"fmul.s", "F", "D,S,T,m", MATCH_FMUL_S, MASK_FMUL_S, match_opcode, 0 },
447 {"fdiv.s", "F", "D,S,T", MATCH_FDIV_S | MASK_RM, MASK_FDIV_S | MASK_RM, match_opcode, 0 },
448 {"fdiv.s", "F", "D,S,T,m", MATCH_FDIV_S, MASK_FDIV_S, match_opcode, 0 },
449 {"fsqrt.s", "F", "D,S", MATCH_FSQRT_S | MASK_RM, MASK_FSQRT_S | MASK_RM, match_opcode, 0 },
450 {"fsqrt.s", "F", "D,S,m", MATCH_FSQRT_S, MASK_FSQRT_S, match_opcode, 0 },
451 {"fmin.s", "F", "D,S,T", MATCH_FMIN_S, MASK_FMIN_S, match_opcode, 0 },
452 {"fmax.s", "F", "D,S,T", MATCH_FMAX_S, MASK_FMAX_S, match_opcode, 0 },
453 {"fmadd.s", "F", "D,S,T,R", MATCH_FMADD_S | MASK_RM, MASK_FMADD_S | MASK_RM, match_opcode, 0 },
454 {"fmadd.s", "F", "D,S,T,R,m", MATCH_FMADD_S, MASK_FMADD_S, match_opcode, 0 },
455 {"fnmadd.s", "F", "D,S,T,R", MATCH_FNMADD_S | MASK_RM, MASK_FNMADD_S | MASK_RM, match_opcode, 0 },
456 {"fnmadd.s", "F", "D,S,T,R,m", MATCH_FNMADD_S, MASK_FNMADD_S, match_opcode, 0 },
457 {"fmsub.s", "F", "D,S,T,R", MATCH_FMSUB_S | MASK_RM, MASK_FMSUB_S | MASK_RM, match_opcode, 0 },
458 {"fmsub.s", "F", "D,S,T,R,m", MATCH_FMSUB_S, MASK_FMSUB_S, match_opcode, 0 },
459 {"fnmsub.s", "F", "D,S,T,R", MATCH_FNMSUB_S | MASK_RM, MASK_FNMSUB_S | MASK_RM, match_opcode, 0 },
460 {"fnmsub.s", "F", "D,S,T,R,m", MATCH_FNMSUB_S, MASK_FNMSUB_S, match_opcode, 0 },
461 {"fcvt.w.s", "F", "d,S", MATCH_FCVT_W_S | MASK_RM, MASK_FCVT_W_S | MASK_RM, match_opcode, 0 },
462 {"fcvt.w.s", "F", "d,S,m", MATCH_FCVT_W_S, MASK_FCVT_W_S, match_opcode, 0 },
463 {"fcvt.wu.s", "F", "d,S", MATCH_FCVT_WU_S | MASK_RM, MASK_FCVT_WU_S | MASK_RM, match_opcode, 0 },
464 {"fcvt.wu.s", "F", "d,S,m", MATCH_FCVT_WU_S, MASK_FCVT_WU_S, match_opcode, 0 },
465 {"fcvt.s.w", "F", "D,s", MATCH_FCVT_S_W | MASK_RM, MASK_FCVT_S_W | MASK_RM, match_opcode, 0 },
466 {"fcvt.s.w", "F", "D,s,m", MATCH_FCVT_S_W, MASK_FCVT_S_W, match_opcode, 0 },
467 {"fcvt.s.wu", "F", "D,s", MATCH_FCVT_S_WU | MASK_RM, MASK_FCVT_S_W | MASK_RM, match_opcode, 0 },
468 {"fcvt.s.wu", "F", "D,s,m", MATCH_FCVT_S_WU, MASK_FCVT_S_WU, match_opcode, 0 },
469 {"fclass.s", "F", "d,S", MATCH_FCLASS_S, MASK_FCLASS_S, match_opcode, 0 },
470 {"feq.s", "F", "d,S,T", MATCH_FEQ_S, MASK_FEQ_S, match_opcode, 0 },
471 {"flt.s", "F", "d,S,T", MATCH_FLT_S, MASK_FLT_S, match_opcode, 0 },
472 {"fle.s", "F", "d,S,T", MATCH_FLE_S, MASK_FLE_S, match_opcode, 0 },
473 {"fgt.s", "F", "d,T,S", MATCH_FLT_S, MASK_FLT_S, match_opcode, 0 },
474 {"fge.s", "F", "d,T,S", MATCH_FLE_S, MASK_FLE_S, match_opcode, 0 },
475 {"fcvt.l.s", "64F", "d,S", MATCH_FCVT_L_S | MASK_RM, MASK_FCVT_L_S | MASK_RM, match_opcode, 0 },
476 {"fcvt.l.s", "64F", "d,S,m", MATCH_FCVT_L_S, MASK_FCVT_L_S, match_opcode, 0 },
477 {"fcvt.lu.s", "64F", "d,S", MATCH_FCVT_LU_S | MASK_RM, MASK_FCVT_LU_S | MASK_RM, match_opcode, 0 },
478 {"fcvt.lu.s", "64F", "d,S,m", MATCH_FCVT_LU_S, MASK_FCVT_LU_S, match_opcode, 0 },
479 {"fcvt.s.l", "64F", "D,s", MATCH_FCVT_S_L | MASK_RM, MASK_FCVT_S_L | MASK_RM, match_opcode, 0 },
480 {"fcvt.s.l", "64F", "D,s,m", MATCH_FCVT_S_L, MASK_FCVT_S_L, match_opcode, 0 },
481 {"fcvt.s.lu", "64F", "D,s", MATCH_FCVT_S_LU | MASK_RM, MASK_FCVT_S_L | MASK_RM, match_opcode, 0 },
482 {"fcvt.s.lu", "64F", "D,s,m", MATCH_FCVT_S_LU, MASK_FCVT_S_LU, match_opcode, 0 },
483 
484 /* Double-precision floating-point instruction subset */
485 {"fld", "C", "D,Cn(Cc)", MATCH_C_FLDSP, MASK_C_FLDSP, match_opcode, INSN_ALIAS },
486 {"fld", "C", "CD,Cl(Cs)", MATCH_C_FLD, MASK_C_FLD, match_opcode, INSN_ALIAS },
487 {"fld", "D", "D,o(s)", MATCH_FLD, MASK_FLD, match_opcode, 0 },
488 {"fld", "D", "D,A,s", 0, (int) M_FLD, match_never, INSN_MACRO },
489 {"fsd", "C", "CT,CN(Cc)", MATCH_C_FSDSP, MASK_C_FSDSP, match_opcode, INSN_ALIAS },
490 {"fsd", "C", "CD,Cl(Cs)", MATCH_C_FSD, MASK_C_FSD, match_opcode, INSN_ALIAS },
491 {"fsd", "D", "T,q(s)", MATCH_FSD, MASK_FSD, match_opcode, 0 },
492 {"fsd", "D", "T,A,s", 0, (int) M_FSD, match_never, INSN_MACRO },
493 {"fmv.d", "D", "D,U", MATCH_FSGNJ_D, MASK_FSGNJ_D, match_rs1_eq_rs2, INSN_ALIAS },
494 {"fneg.d", "D", "D,U", MATCH_FSGNJN_D, MASK_FSGNJN_D, match_rs1_eq_rs2, INSN_ALIAS },
495 {"fabs.d", "D", "D,U", MATCH_FSGNJX_D, MASK_FSGNJX_D, match_rs1_eq_rs2, INSN_ALIAS },
496 {"fsgnj.d", "D", "D,S,T", MATCH_FSGNJ_D, MASK_FSGNJ_D, match_opcode, 0 },
497 {"fsgnjn.d", "D", "D,S,T", MATCH_FSGNJN_D, MASK_FSGNJN_D, match_opcode, 0 },
498 {"fsgnjx.d", "D", "D,S,T", MATCH_FSGNJX_D, MASK_FSGNJX_D, match_opcode, 0 },
499 {"fadd.d", "D", "D,S,T", MATCH_FADD_D | MASK_RM, MASK_FADD_D | MASK_RM, match_opcode, 0 },
500 {"fadd.d", "D", "D,S,T,m", MATCH_FADD_D, MASK_FADD_D, match_opcode, 0 },
501 {"fsub.d", "D", "D,S,T", MATCH_FSUB_D | MASK_RM, MASK_FSUB_D | MASK_RM, match_opcode, 0 },
502 {"fsub.d", "D", "D,S,T,m", MATCH_FSUB_D, MASK_FSUB_D, match_opcode, 0 },
503 {"fmul.d", "D", "D,S,T", MATCH_FMUL_D | MASK_RM, MASK_FMUL_D | MASK_RM, match_opcode, 0 },
504 {"fmul.d", "D", "D,S,T,m", MATCH_FMUL_D, MASK_FMUL_D, match_opcode, 0 },
505 {"fdiv.d", "D", "D,S,T", MATCH_FDIV_D | MASK_RM, MASK_FDIV_D | MASK_RM, match_opcode, 0 },
506 {"fdiv.d", "D", "D,S,T,m", MATCH_FDIV_D, MASK_FDIV_D, match_opcode, 0 },
507 {"fsqrt.d", "D", "D,S", MATCH_FSQRT_D | MASK_RM, MASK_FSQRT_D | MASK_RM, match_opcode, 0 },
508 {"fsqrt.d", "D", "D,S,m", MATCH_FSQRT_D, MASK_FSQRT_D, match_opcode, 0 },
509 {"fmin.d", "D", "D,S,T", MATCH_FMIN_D, MASK_FMIN_D, match_opcode, 0 },
510 {"fmax.d", "D", "D,S,T", MATCH_FMAX_D, MASK_FMAX_D, match_opcode, 0 },
511 {"fmadd.d", "D", "D,S,T,R", MATCH_FMADD_D | MASK_RM, MASK_FMADD_D | MASK_RM, match_opcode, 0 },
512 {"fmadd.d", "D", "D,S,T,R,m", MATCH_FMADD_D, MASK_FMADD_D, match_opcode, 0 },
513 {"fnmadd.d", "D", "D,S,T,R", MATCH_FNMADD_D | MASK_RM, MASK_FNMADD_D | MASK_RM, match_opcode, 0 },
514 {"fnmadd.d", "D", "D,S,T,R,m", MATCH_FNMADD_D, MASK_FNMADD_D, match_opcode, 0 },
515 {"fmsub.d", "D", "D,S,T,R", MATCH_FMSUB_D | MASK_RM, MASK_FMSUB_D | MASK_RM, match_opcode, 0 },
516 {"fmsub.d", "D", "D,S,T,R,m", MATCH_FMSUB_D, MASK_FMSUB_D, match_opcode, 0 },
517 {"fnmsub.d", "D", "D,S,T,R", MATCH_FNMSUB_D | MASK_RM, MASK_FNMSUB_D | MASK_RM, match_opcode, 0 },
518 {"fnmsub.d", "D", "D,S,T,R,m", MATCH_FNMSUB_D, MASK_FNMSUB_D, match_opcode, 0 },
519 {"fcvt.w.d", "D", "d,S", MATCH_FCVT_W_D | MASK_RM, MASK_FCVT_W_D | MASK_RM, match_opcode, 0 },
520 {"fcvt.w.d", "D", "d,S,m", MATCH_FCVT_W_D, MASK_FCVT_W_D, match_opcode, 0 },
521 {"fcvt.wu.d", "D", "d,S", MATCH_FCVT_WU_D | MASK_RM, MASK_FCVT_WU_D | MASK_RM, match_opcode, 0 },
522 {"fcvt.wu.d", "D", "d,S,m", MATCH_FCVT_WU_D, MASK_FCVT_WU_D, match_opcode, 0 },
523 {"fcvt.d.w", "D", "D,s", MATCH_FCVT_D_W, MASK_FCVT_D_W | MASK_RM, match_opcode, 0 },
524 {"fcvt.d.wu", "D", "D,s", MATCH_FCVT_D_WU, MASK_FCVT_D_WU | MASK_RM, match_opcode, 0 },
525 {"fcvt.d.s", "D", "D,S", MATCH_FCVT_D_S, MASK_FCVT_D_S | MASK_RM, match_opcode, 0 },
526 {"fcvt.s.d", "D", "D,S", MATCH_FCVT_S_D | MASK_RM, MASK_FCVT_S_D | MASK_RM, match_opcode, 0 },
527 {"fcvt.s.d", "D", "D,S,m", MATCH_FCVT_S_D, MASK_FCVT_S_D, match_opcode, 0 },
528 {"fclass.d", "D", "d,S", MATCH_FCLASS_D, MASK_FCLASS_D, match_opcode, 0 },
529 {"feq.d", "D", "d,S,T", MATCH_FEQ_D, MASK_FEQ_D, match_opcode, 0 },
530 {"flt.d", "D", "d,S,T", MATCH_FLT_D, MASK_FLT_D, match_opcode, 0 },
531 {"fle.d", "D", "d,S,T", MATCH_FLE_D, MASK_FLE_D, match_opcode, 0 },
532 {"fgt.d", "D", "d,T,S", MATCH_FLT_D, MASK_FLT_D, match_opcode, 0 },
533 {"fge.d", "D", "d,T,S", MATCH_FLE_D, MASK_FLE_D, match_opcode, 0 },
534 {"fmv.x.d", "64D", "d,S", MATCH_FMV_X_D, MASK_FMV_X_D, match_opcode, 0 },
535 {"fmv.d.x", "64D", "D,s", MATCH_FMV_D_X, MASK_FMV_D_X, match_opcode, 0 },
536 {"fcvt.l.d", "64D", "d,S", MATCH_FCVT_L_D | MASK_RM, MASK_FCVT_L_D | MASK_RM, match_opcode, 0 },
537 {"fcvt.l.d", "64D", "d,S,m", MATCH_FCVT_L_D, MASK_FCVT_L_D, match_opcode, 0 },
538 {"fcvt.lu.d", "64D", "d,S", MATCH_FCVT_LU_D | MASK_RM, MASK_FCVT_LU_D | MASK_RM, match_opcode, 0 },
539 {"fcvt.lu.d", "64D", "d,S,m", MATCH_FCVT_LU_D, MASK_FCVT_LU_D, match_opcode, 0 },
540 {"fcvt.d.l", "64D", "D,s", MATCH_FCVT_D_L | MASK_RM, MASK_FCVT_D_L | MASK_RM, match_opcode, 0 },
541 {"fcvt.d.l", "64D", "D,s,m", MATCH_FCVT_D_L, MASK_FCVT_D_L, match_opcode, 0 },
542 {"fcvt.d.lu", "64D", "D,s", MATCH_FCVT_D_LU | MASK_RM, MASK_FCVT_D_L | MASK_RM, match_opcode, 0 },
543 {"fcvt.d.lu", "64D", "D,s,m", MATCH_FCVT_D_LU, MASK_FCVT_D_LU, match_opcode, 0 },
544 
545 /* Quad-precision floating-point instruction subset */
546 {"flq", "Q", "D,o(s)", MATCH_FLQ, MASK_FLQ, match_opcode, 0 },
547 {"flq", "Q", "D,A,s", 0, (int) M_FLQ, match_never, INSN_MACRO },
548 {"fsq", "Q", "T,q(s)", MATCH_FSQ, MASK_FSQ, match_opcode, 0 },
549 {"fsq", "Q", "T,A,s", 0, (int) M_FSQ, match_never, INSN_MACRO },
550 {"fmv.q", "Q", "D,U", MATCH_FSGNJ_Q, MASK_FSGNJ_Q, match_rs1_eq_rs2, INSN_ALIAS },
551 {"fneg.q", "Q", "D,U", MATCH_FSGNJN_Q, MASK_FSGNJN_Q, match_rs1_eq_rs2, INSN_ALIAS },
552 {"fabs.q", "Q", "D,U", MATCH_FSGNJX_Q, MASK_FSGNJX_Q, match_rs1_eq_rs2, INSN_ALIAS },
553 {"fsgnj.q", "Q", "D,S,T", MATCH_FSGNJ_Q, MASK_FSGNJ_Q, match_opcode, 0 },
554 {"fsgnjn.q", "Q", "D,S,T", MATCH_FSGNJN_Q, MASK_FSGNJN_Q, match_opcode, 0 },
555 {"fsgnjx.q", "Q", "D,S,T", MATCH_FSGNJX_Q, MASK_FSGNJX_Q, match_opcode, 0 },
556 {"fadd.q", "Q", "D,S,T", MATCH_FADD_Q | MASK_RM, MASK_FADD_Q | MASK_RM, match_opcode, 0 },
557 {"fadd.q", "Q", "D,S,T,m", MATCH_FADD_Q, MASK_FADD_Q, match_opcode, 0 },
558 {"fsub.q", "Q", "D,S,T", MATCH_FSUB_Q | MASK_RM, MASK_FSUB_Q | MASK_RM, match_opcode, 0 },
559 {"fsub.q", "Q", "D,S,T,m", MATCH_FSUB_Q, MASK_FSUB_Q, match_opcode, 0 },
560 {"fmul.q", "Q", "D,S,T", MATCH_FMUL_Q | MASK_RM, MASK_FMUL_Q | MASK_RM, match_opcode, 0 },
561 {"fmul.q", "Q", "D,S,T,m", MATCH_FMUL_Q, MASK_FMUL_Q, match_opcode, 0 },
562 {"fdiv.q", "Q", "D,S,T", MATCH_FDIV_Q | MASK_RM, MASK_FDIV_Q | MASK_RM, match_opcode, 0 },
563 {"fdiv.q", "Q", "D,S,T,m", MATCH_FDIV_Q, MASK_FDIV_Q, match_opcode, 0 },
564 {"fsqrt.q", "Q", "D,S", MATCH_FSQRT_Q | MASK_RM, MASK_FSQRT_Q | MASK_RM, match_opcode, 0 },
565 {"fsqrt.q", "Q", "D,S,m", MATCH_FSQRT_Q, MASK_FSQRT_Q, match_opcode, 0 },
566 {"fmin.q", "Q", "D,S,T", MATCH_FMIN_Q, MASK_FMIN_Q, match_opcode, 0 },
567 {"fmax.q", "Q", "D,S,T", MATCH_FMAX_Q, MASK_FMAX_Q, match_opcode, 0 },
568 {"fmadd.q", "Q", "D,S,T,R", MATCH_FMADD_Q | MASK_RM, MASK_FMADD_Q | MASK_RM, match_opcode, 0 },
569 {"fmadd.q", "Q", "D,S,T,R,m", MATCH_FMADD_Q, MASK_FMADD_Q, match_opcode, 0 },
570 {"fnmadd.q", "Q", "D,S,T,R", MATCH_FNMADD_Q | MASK_RM, MASK_FNMADD_Q | MASK_RM, match_opcode, 0 },
571 {"fnmadd.q", "Q", "D,S,T,R,m", MATCH_FNMADD_Q, MASK_FNMADD_Q, match_opcode, 0 },
572 {"fmsub.q", "Q", "D,S,T,R", MATCH_FMSUB_Q | MASK_RM, MASK_FMSUB_Q | MASK_RM, match_opcode, 0 },
573 {"fmsub.q", "Q", "D,S,T,R,m", MATCH_FMSUB_Q, MASK_FMSUB_Q, match_opcode, 0 },
574 {"fnmsub.q", "Q", "D,S,T,R", MATCH_FNMSUB_Q | MASK_RM, MASK_FNMSUB_Q | MASK_RM, match_opcode, 0 },
575 {"fnmsub.q", "Q", "D,S,T,R,m", MATCH_FNMSUB_Q, MASK_FNMSUB_Q, match_opcode, 0 },
576 {"fcvt.w.q", "Q", "d,S", MATCH_FCVT_W_Q | MASK_RM, MASK_FCVT_W_Q | MASK_RM, match_opcode, 0 },
577 {"fcvt.w.q", "Q", "d,S,m", MATCH_FCVT_W_Q, MASK_FCVT_W_Q, match_opcode, 0 },
578 {"fcvt.wu.q", "Q", "d,S", MATCH_FCVT_WU_Q | MASK_RM, MASK_FCVT_WU_Q | MASK_RM, match_opcode, 0 },
579 {"fcvt.wu.q", "Q", "d,S,m", MATCH_FCVT_WU_Q, MASK_FCVT_WU_Q, match_opcode, 0 },
580 {"fcvt.q.w", "Q", "D,s", MATCH_FCVT_Q_W, MASK_FCVT_Q_W | MASK_RM, match_opcode, 0 },
581 {"fcvt.q.wu", "Q", "D,s", MATCH_FCVT_Q_WU, MASK_FCVT_Q_WU | MASK_RM, match_opcode, 0 },
582 {"fcvt.q.s", "Q", "D,S", MATCH_FCVT_Q_S, MASK_FCVT_Q_S | MASK_RM, match_opcode, 0 },
583 {"fcvt.q.d", "Q", "D,S", MATCH_FCVT_Q_D, MASK_FCVT_Q_D | MASK_RM, match_opcode, 0 },
584 {"fcvt.s.q", "Q", "D,S", MATCH_FCVT_S_Q | MASK_RM, MASK_FCVT_S_Q | MASK_RM, match_opcode, 0 },
585 {"fcvt.s.q", "Q", "D,S,m", MATCH_FCVT_S_Q, MASK_FCVT_S_Q, match_opcode, 0 },
586 {"fcvt.d.q", "Q", "D,S", MATCH_FCVT_D_Q | MASK_RM, MASK_FCVT_D_Q | MASK_RM, match_opcode, 0 },
587 {"fcvt.d.q", "Q", "D,S,m", MATCH_FCVT_D_Q, MASK_FCVT_D_Q, match_opcode, 0 },
588 {"fclass.q", "Q", "d,S", MATCH_FCLASS_Q, MASK_FCLASS_Q, match_opcode, 0 },
589 {"feq.q", "Q", "d,S,T", MATCH_FEQ_Q, MASK_FEQ_Q, match_opcode, 0 },
590 {"flt.q", "Q", "d,S,T", MATCH_FLT_Q, MASK_FLT_Q, match_opcode, 0 },
591 {"fle.q", "Q", "d,S,T", MATCH_FLE_Q, MASK_FLE_Q, match_opcode, 0 },
592 {"fgt.q", "Q", "d,T,S", MATCH_FLT_Q, MASK_FLT_Q, match_opcode, 0 },
593 {"fge.q", "Q", "d,T,S", MATCH_FLE_Q, MASK_FLE_Q, match_opcode, 0 },
594 {"fmv.x.q", "64Q", "d,S", MATCH_FMV_X_Q, MASK_FMV_X_Q, match_opcode, 0 },
595 {"fmv.q.x", "64Q", "D,s", MATCH_FMV_Q_X, MASK_FMV_Q_X, match_opcode, 0 },
596 {"fcvt.l.q", "64Q", "d,S", MATCH_FCVT_L_Q | MASK_RM, MASK_FCVT_L_Q | MASK_RM, match_opcode, 0 },
597 {"fcvt.l.q", "64Q", "d,S,m", MATCH_FCVT_L_Q, MASK_FCVT_L_Q, match_opcode, 0 },
598 {"fcvt.lu.q", "64Q", "d,S", MATCH_FCVT_LU_Q | MASK_RM, MASK_FCVT_LU_Q | MASK_RM, match_opcode, 0 },
599 {"fcvt.lu.q", "64Q", "d,S,m", MATCH_FCVT_LU_Q, MASK_FCVT_LU_Q, match_opcode, 0 },
600 {"fcvt.q.l", "64Q", "D,s", MATCH_FCVT_Q_L | MASK_RM, MASK_FCVT_Q_L | MASK_RM, match_opcode, 0 },
601 {"fcvt.q.l", "64Q", "D,s,m", MATCH_FCVT_Q_L, MASK_FCVT_Q_L, match_opcode, 0 },
602 {"fcvt.q.lu", "64Q", "D,s", MATCH_FCVT_Q_LU | MASK_RM, MASK_FCVT_Q_L | MASK_RM, match_opcode, 0 },
603 {"fcvt.q.lu", "64Q", "D,s,m", MATCH_FCVT_Q_LU, MASK_FCVT_Q_LU, match_opcode, 0 },
604 
605 /* Compressed instructions. */
606 {"c.ebreak", "C", "", MATCH_C_EBREAK, MASK_C_EBREAK, match_opcode, 0 },
607 {"c.jr", "C", "d", MATCH_C_JR, MASK_C_JR, match_rd_nonzero, 0 },
608 {"c.jalr", "C", "d", MATCH_C_JALR, MASK_C_JALR, match_rd_nonzero, 0 },
609 {"c.j", "C", "Ca", MATCH_C_J, MASK_C_J, match_opcode, 0 },
610 {"c.jal", "32C", "Ca", MATCH_C_JAL, MASK_C_JAL, match_opcode, 0 },
611 {"c.beqz", "C", "Cs,Cp", MATCH_C_BEQZ, MASK_C_BEQZ, match_opcode, 0 },
612 {"c.bnez", "C", "Cs,Cp", MATCH_C_BNEZ, MASK_C_BNEZ, match_opcode, 0 },
613 {"c.lwsp", "C", "d,Cm(Cc)", MATCH_C_LWSP, MASK_C_LWSP, match_rd_nonzero, 0 },
614 {"c.lw", "C", "Ct,Ck(Cs)", MATCH_C_LW, MASK_C_LW, match_opcode, 0 },
615 {"c.swsp", "C", "CV,CM(Cc)", MATCH_C_SWSP, MASK_C_SWSP, match_opcode, 0 },
616 {"c.sw", "C", "Ct,Ck(Cs)", MATCH_C_SW, MASK_C_SW, match_opcode, 0 },
617 {"c.nop", "C", "", MATCH_C_ADDI, 0xffff, match_opcode, 0 },
618 {"c.mv", "C", "d,CV", MATCH_C_MV, MASK_C_MV, match_c_add, 0 },
619 {"c.lui", "C", "d,Cu", MATCH_C_LUI, MASK_C_LUI, match_c_lui, 0 },
620 {"c.li", "C", "d,Cj", MATCH_C_LI, MASK_C_LI, match_rd_nonzero, 0 },
621 {"c.addi4spn","C", "Ct,Cc,CK", MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN, match_opcode, 0 },
622 {"c.addi16sp","C", "Cc,CL", MATCH_C_ADDI16SP, MASK_C_ADDI16SP, match_opcode, 0 },
623 {"c.addi", "C", "d,Cj,CU", MATCH_C_ADDI, MASK_C_ADDI, match_rd_nonzero, 0 },
624 {"c.add", "C", "d,CV,CU", MATCH_C_ADD, MASK_C_ADD, match_c_add, 0 },
625 {"c.sub", "C", "Cs,Cs,Ct", MATCH_C_SUB, MASK_C_SUB, match_opcode, 0 },
626 {"c.and", "C", "Cs,Cs,Ct", MATCH_C_AND, MASK_C_AND, match_opcode, 0 },
627 {"c.or", "C", "Cs,Cs,Ct", MATCH_C_OR, MASK_C_OR, match_opcode, 0 },
628 {"c.xor", "C", "Cs,Cs,Ct", MATCH_C_XOR, MASK_C_XOR, match_opcode, 0 },
629 {"c.slli", "C", "d,CU,C>", MATCH_C_SLLI, MASK_C_SLLI, match_rd_nonzero, 0 },
630 {"c.srli", "C", "Cs,Cs,C>", MATCH_C_SRLI, MASK_C_SRLI, match_opcode, 0 },
631 {"c.srai", "C", "Cs,Cs,C>", MATCH_C_SRAI, MASK_C_SRAI, match_opcode, 0 },
632 {"c.andi", "C", "Cs,Cj,Cs", MATCH_C_ANDI, MASK_C_ANDI, match_opcode, 0 },
633 {"c.addiw", "64C", "d,Cj,CU", MATCH_C_ADDIW, MASK_C_ADDIW, match_rd_nonzero, 0 },
634 {"c.addw", "64C", "Cs,Ct,Cs", MATCH_C_ADDW, MASK_C_ADDW, match_opcode, 0 },
635 {"c.subw", "64C", "Cs,Cs,Ct", MATCH_C_SUBW, MASK_C_SUBW, match_opcode, 0 },
636 {"c.ldsp", "64C", "d,Cn(Cc)", MATCH_C_LDSP, MASK_C_LDSP, match_rd_nonzero, 0 },
637 {"c.ld", "64C", "Ct,Cl(Cs)", MATCH_C_LD, MASK_C_LD, match_opcode, 0 },
638 {"c.sdsp", "64C", "CV,CN(Cc)", MATCH_C_SDSP, MASK_C_SDSP, match_opcode, 0 },
639 {"c.sd", "64C", "Ct,Cl(Cs)", MATCH_C_SD, MASK_C_SD, match_opcode, 0 },
640 {"c.fldsp", "C", "D,Cn(Cc)", MATCH_C_FLDSP, MASK_C_FLDSP, match_opcode, 0 },
641 {"c.fld", "C", "CD,Cl(Cs)", MATCH_C_FLD, MASK_C_FLD, match_opcode, 0 },
642 {"c.fsdsp", "C", "CT,CN(Cc)", MATCH_C_FSDSP, MASK_C_FSDSP, match_opcode, 0 },
643 {"c.fsd", "C", "CD,Cl(Cs)", MATCH_C_FSD, MASK_C_FSD, match_opcode, 0 },
644 {"c.flwsp", "32C", "D,Cm(Cc)", MATCH_C_FLWSP, MASK_C_FLWSP, match_opcode, 0 },
645 {"c.flw", "32C", "CD,Ck(Cs)", MATCH_C_FLW, MASK_C_FLW, match_opcode, 0 },
646 {"c.fswsp", "32C", "CT,CM(Cc)", MATCH_C_FSWSP, MASK_C_FSWSP, match_opcode, 0 },
647 {"c.fsw", "32C", "CD,Ck(Cs)", MATCH_C_FSW, MASK_C_FSW, match_opcode, 0 },
648 
649 /* Supervisor instructions */
650 {"csrr", "I", "d,E", MATCH_CSRRS, MASK_CSRRS | MASK_RS1, match_opcode, INSN_ALIAS },
651 {"csrwi", "I", "E,Z", MATCH_CSRRWI, MASK_CSRRWI | MASK_RD, match_opcode, INSN_ALIAS },
652 {"csrsi", "I", "E,Z", MATCH_CSRRSI, MASK_CSRRSI | MASK_RD, match_opcode, INSN_ALIAS },
653 {"csrci", "I", "E,Z", MATCH_CSRRCI, MASK_CSRRCI | MASK_RD, match_opcode, INSN_ALIAS },
654 {"csrw", "I", "E,s", MATCH_CSRRW, MASK_CSRRW | MASK_RD, match_opcode, INSN_ALIAS },
655 {"csrw", "I", "E,Z", MATCH_CSRRWI, MASK_CSRRWI | MASK_RD, match_opcode, INSN_ALIAS },
656 {"csrs", "I", "E,s", MATCH_CSRRS, MASK_CSRRS | MASK_RD, match_opcode, INSN_ALIAS },
657 {"csrs", "I", "E,Z", MATCH_CSRRSI, MASK_CSRRSI | MASK_RD, match_opcode, INSN_ALIAS },
658 {"csrc", "I", "E,s", MATCH_CSRRC, MASK_CSRRC | MASK_RD, match_opcode, INSN_ALIAS },
659 {"csrc", "I", "E,Z", MATCH_CSRRCI, MASK_CSRRCI | MASK_RD, match_opcode, INSN_ALIAS },
660 {"csrrwi", "I", "d,E,Z", MATCH_CSRRWI, MASK_CSRRWI, match_opcode, 0 },
661 {"csrrsi", "I", "d,E,Z", MATCH_CSRRSI, MASK_CSRRSI, match_opcode, 0 },
662 {"csrrci", "I", "d,E,Z", MATCH_CSRRCI, MASK_CSRRCI, match_opcode, 0 },
663 {"csrrw", "I", "d,E,s", MATCH_CSRRW, MASK_CSRRW, match_opcode, 0 },
664 {"csrrw", "I", "d,E,Z", MATCH_CSRRWI, MASK_CSRRWI, match_opcode, INSN_ALIAS },
665 {"csrrs", "I", "d,E,s", MATCH_CSRRS, MASK_CSRRS, match_opcode, 0 },
666 {"csrrs", "I", "d,E,Z", MATCH_CSRRSI, MASK_CSRRSI, match_opcode, INSN_ALIAS },
667 {"csrrc", "I", "d,E,s", MATCH_CSRRC, MASK_CSRRC, match_opcode, 0 },
668 {"csrrc", "I", "d,E,Z", MATCH_CSRRCI, MASK_CSRRCI, match_opcode, INSN_ALIAS },
669 {"uret", "I", "", MATCH_URET, MASK_URET, match_opcode, 0 },
670 {"sret", "I", "", MATCH_SRET, MASK_SRET, match_opcode, 0 },
671 {"hret", "I", "", MATCH_HRET, MASK_HRET, match_opcode, 0 },
672 {"mret", "I", "", MATCH_MRET, MASK_MRET, match_opcode, 0 },
673 {"dret", "I", "", MATCH_DRET, MASK_DRET, match_opcode, 0 },
674 {"sfence.vm", "I", "", MATCH_SFENCE_VM, MASK_SFENCE_VM | MASK_RS1, match_opcode, 0 },
675 {"sfence.vm", "I", "s", MATCH_SFENCE_VM, MASK_SFENCE_VM, match_opcode, 0 },
676 {"wfi", "I", "", MATCH_WFI, MASK_WFI, match_opcode, 0 },
677 };
678 
679 #define RISCV_NUM_OPCODES \
680  ((sizeof riscv_builtin_opcodes) / (sizeof (riscv_builtin_opcodes[0])))
681 //const int bfd_riscv_num_builtin_opcodes = RISCV_NUM_OPCODES;
682 
683 /* Removed const from the following to allow for dynamic extensions to the
684  built-in instruction set. */
685 static struct riscv_opcode *riscv_opcodes =
688 #undef RISCV_NUM_OPCODES
@ M_LI
Definition: mips.h:727
#define INSN_MACRO
Definition: mips.h:473
#define OP_SH_RD
Definition: mips.h:85
#define MASK_RM
Definition: riscv-opc.c:78
static const char *const riscv_gpr_names_numeric[NGPR]
Definition: riscv-opc.c:31
static int match_never(const struct riscv_opcode *op, insn_t insn)
Definition: riscv-opc.c:90
static const char *const riscv_gpr_names_abi[NGPR]
Definition: riscv-opc.c:39
static int bfd_riscv_num_opcodes
Definition: riscv-opc.c:687
#define MASK_PRED
Definition: riscv-opc.c:79
static int match_rd_nonzero(const struct riscv_opcode *op, insn_t insn)
Definition: riscv-opc.c:102
#define MASK_RD
Definition: riscv-opc.c:73
#define MASK_RVC_IMM
Definition: riscv-opc.c:76
#define MASK_AQRL
Definition: riscv-opc.c:83
static int match_opcode(const struct riscv_opcode *op, insn_t insn)
Definition: riscv-opc.c:85
#define RISCV_NUM_OPCODES
Definition: riscv-opc.c:679
static int match_c_lui(const struct riscv_opcode *op, insn_t insn)
Definition: riscv-opc.c:112
static const char *const riscv_fpr_names_abi[NFPR]
Definition: riscv-opc.c:54
static struct riscv_opcode * riscv_opcodes
Definition: riscv-opc.c:685
#define MASK_RS2
Definition: riscv-opc.c:72
static int match_rs1_eq_rs2(const struct riscv_opcode *op, insn_t insn)
Definition: riscv-opc.c:95
#define MASK_RS1
Definition: riscv-opc.c:71
#define MASK_CRS2
Definition: riscv-opc.c:74
#define MASK_IMM
Definition: riscv-opc.c:75
#define MASK_SUCC
Definition: riscv-opc.c:80
static int match_c_add(const struct riscv_opcode *op, insn_t insn)
Definition: riscv-opc.c:107
#define MASK_AQ
Definition: riscv-opc.c:81
#define MASK_RL
Definition: riscv-opc.c:82
static const char *const riscv_fpr_names_numeric[NFPR]
Definition: riscv-opc.c:46
static const struct riscv_opcode riscv_builtin_opcodes[]
Definition: riscv-opc.c:117
#define MATCH_AMOSWAP_D
Definition: riscv-opc.h:211
#define MASK_FSGNJX_D
Definition: riscv-opc.h:280
#define MASK_FSFLAGS
Definition: riscv-opc.h:16
#define MATCH_FADD_Q
Definition: riscv-opc.h:291
#define MATCH_JALR
Definition: riscv-opc.h:57
#define MASK_FSW
Definition: riscv-opc.h:410
#define MATCH_SC_W
Definition: riscv-opc.h:193
#define MASK_C_FSDSP
Definition: riscv-opc.h:498
#define MATCH_LR_D
Definition: riscv-opc.h:213
#define MASK_FSUB_D
Definition: riscv-opc.h:270
#define MASK_AMOMINU_W
Definition: riscv-opc.h:186
#define MATCH_FMV_X_S
Definition: riscv-opc.h:345
#define MATCH_FRFLAGS
Definition: riscv-opc.h:13
#define MASK_FSQRT_D
Definition: riscv-opc.h:290
#define MATCH_C_SDSP
Definition: riscv-opc.h:521
#define MATCH_LH
Definition: riscv-opc.h:123
#define MATCH_LHU
Definition: riscv-opc.h:131
#define MATCH_AMOMAX_W
Definition: riscv-opc.h:183
#define MATCH_FCVT_Q_LU
Definition: riscv-opc.h:399
#define MASK_RDCYCLEH
Definition: riscv-opc.h:36
#define MATCH_C_ANDI
Definition: riscv-opc.h:465
#define MATCH_FADD_S
Definition: riscv-opc.h:247
#define MASK_ORI
Definition: riscv-opc.h:80
#define MASK_LBU
Definition: riscv-opc.h:130
#define MATCH_LUI
Definition: riscv-opc.h:61
#define MATCH_RDTIMEH
Definition: riscv-opc.h:37
#define MASK_FMSUB_S
Definition: riscv-opc.h:418
#define MATCH_SFENCE_VM
Definition: riscv-opc.h:231
#define MATCH_CSRRW
Definition: riscv-opc.h:235
#define MATCH_FMADD_Q
Definition: riscv-opc.h:431
#define MATCH_FMIN_Q
Definition: riscv-opc.h:305
#define MASK_FMUL_D
Definition: riscv-opc.h:272
#define MATCH_ADDW
Definition: riscv-opc.h:111
#define MASK_FSGNJN_Q
Definition: riscv-opc.h:302
#define MASK_FMV_X_S
Definition: riscv-opc.h:346
#define MATCH_BGE
Definition: riscv-opc.h:51
#define MASK_C_BEQZ
Definition: riscv-opc.h:482
#define MASK_FMUL_Q
Definition: riscv-opc.h:296
#define MATCH_REMUW
Definition: riscv-opc.h:171
#define MASK_FCVT_D_S
Definition: riscv-opc.h:288
#define MATCH_C_ADDI
Definition: riscv-opc.h:453
#define MATCH_SLT
Definition: riscv-opc.h:89
#define MATCH_FMADD_D
Definition: riscv-opc.h:423
#define MASK_RDINSTRET
Definition: riscv-opc.h:34
#define MASK_ANDI
Definition: riscv-opc.h:82
#define MASK_DIVU
Definition: riscv-opc.h:158
#define MATCH_JAL
Definition: riscv-opc.h:59
#define MASK_MULHSU
Definition: riscv-opc.h:152
#define MASK_LR_W
Definition: riscv-opc.h:192
#define MASK_FCVT_D_WU
Definition: riscv-opc.h:386
#define MASK_RDCYCLE
Definition: riscv-opc.h:30
#define MASK_C_LI
Definition: riscv-opc.h:458
#define MATCH_SRA
Definition: riscv-opc.h:97
#define MASK_FCVT_D_LU
Definition: riscv-opc.h:390
#define MASK_FDIV_Q
Definition: riscv-opc.h:298
#define MASK_FMADD_D
Definition: riscv-opc.h:424
#define MASK_OR
Definition: riscv-opc.h:100
#define MATCH_C_SLLI
Definition: riscv-opc.h:485
#define MATCH_WFI
Definition: riscv-opc.h:233
#define MATCH_RDTIME
Definition: riscv-opc.h:31
#define MASK_C_ADD
Definition: riscv-opc.h:496
#define MASK_AMOMAXU_D
Definition: riscv-opc.h:210
#define MATCH_BGEU
Definition: riscv-opc.h:55
#define MASK_FDIV_S
Definition: riscv-opc.h:254
#define MASK_FCVT_S_L
Definition: riscv-opc.h:378
#define MASK_LB
Definition: riscv-opc.h:122
#define MASK_FSGNJ_D
Definition: riscv-opc.h:276
#define MASK_FCVT_WU_Q
Definition: riscv-opc.h:364
#define MATCH_FSQ
Definition: riscv-opc.h:413
#define MASK_FCLASS_S
Definition: riscv-opc.h:348
#define MATCH_FCVT_D_W
Definition: riscv-opc.h:383
#define MASK_FRFLAGS
Definition: riscv-opc.h:14
#define MATCH_OR
Definition: riscv-opc.h:99
#define MASK_FCVT_S_LU
Definition: riscv-opc.h:380
#define MATCH_FCLASS_Q
Definition: riscv-opc.h:371
#define MATCH_AUIPC
Definition: riscv-opc.h:63
#define MATCH_FCVT_D_L
Definition: riscv-opc.h:387
#define MATCH_SRAI
Definition: riscv-opc.h:77
#define MASK_REMUW
Definition: riscv-opc.h:172
#define MASK_AMOMINU_D
Definition: riscv-opc.h:208
#define MATCH_FCVT_Q_D
Definition: riscv-opc.h:315
#define MATCH_FCVT_W_Q
Definition: riscv-opc.h:361
#define MATCH_CSRRC
Definition: riscv-opc.h:239
#define MATCH_C_LW
Definition: riscv-opc.h:443
#define MATCH_C_ADDW
Definition: riscv-opc.h:477
#define MASK_REMW
Definition: riscv-opc.h:170
#define MASK_FMSUB_Q
Definition: riscv-opc.h:434
#define MATCH_C_JALR
Definition: riscv-opc.h:509
#define MASK_FCVT_D_L
Definition: riscv-opc.h:388
#define MATCH_LWU
Definition: riscv-opc.h:133
#define MATCH_FSCSR
Definition: riscv-opc.h:25
#define MATCH_FDIV_D
Definition: riscv-opc.h:273
#define MATCH_FCVT_W_D
Definition: riscv-opc.h:349
#define MATCH_BNE
Definition: riscv-opc.h:47
#define MASK_FMV_D_X
Definition: riscv-opc.h:392
#define MASK_C_ANDI
Definition: riscv-opc.h:466
#define MASK_SFENCE_VM
Definition: riscv-opc.h:232
#define MASK_C_JAL
Definition: riscv-opc.h:456
#define MATCH_FCLASS_S
Definition: riscv-opc.h:347
#define MATCH_REMU
Definition: riscv-opc.h:161
#define MASK_ADDI
Definition: riscv-opc.h:66
#define MATCH_FCVT_D_LU
Definition: riscv-opc.h:389
#define MASK_C_ADDI
Definition: riscv-opc.h:454
#define MASK_FCVT_LU_Q
Definition: riscv-opc.h:368
#define MASK_SRL
Definition: riscv-opc.h:96
#define MASK_FMAX_Q
Definition: riscv-opc.h:308
#define MASK_C_ADDW
Definition: riscv-opc.h:478
#define MASK_AMOMAXU_W
Definition: riscv-opc.h:188
#define MATCH_SRAIW
Definition: riscv-opc.h:109
#define MATCH_FCVT_Q_W
Definition: riscv-opc.h:393
#define MATCH_FCVT_S_L
Definition: riscv-opc.h:377
#define MATCH_REMW
Definition: riscv-opc.h:169
#define MATCH_DIVU
Definition: riscv-opc.h:157
#define MASK_FLD
Definition: riscv-opc.h:406
#define MATCH_FCVT_Q_S
Definition: riscv-opc.h:311
#define MASK_SB
Definition: riscv-opc.h:136
#define MASK_FCVT_Q_W
Definition: riscv-opc.h:394
#define MATCH_BLT
Definition: riscv-opc.h:49
#define MASK_CSRRC
Definition: riscv-opc.h:240
#define MASK_FCVT_Q_S
Definition: riscv-opc.h:312
#define MASK_EBREAK
Definition: riscv-opc.h:220
#define MASK_SRAI
Definition: riscv-opc.h:78
#define MATCH_CSRRCI
Definition: riscv-opc.h:245
#define MASK_LUI
Definition: riscv-opc.h:62
#define MATCH_FSGNJX_D
Definition: riscv-opc.h:279
#define MATCH_FNMADD_S
Definition: riscv-opc.h:421
#define MATCH_FMUL_Q
Definition: riscv-opc.h:295
#define MATCH_FCVT_WU_D
Definition: riscv-opc.h:351
#define MASK_BGEU
Definition: riscv-opc.h:56
#define MATCH_C_SW
Definition: riscv-opc.h:449
#define MASK_MRET
Definition: riscv-opc.h:228
#define MATCH_C_FSW
Definition: riscv-opc.h:451
#define MASK_C_SRAI
Definition: riscv-opc.h:464
#define MASK_FCVT_L_D
Definition: riscv-opc.h:354
#define MASK_AND
Definition: riscv-opc.h:102
#define MATCH_C_FSWSP
Definition: riscv-opc.h:501
#define MASK_FCVT_W_S
Definition: riscv-opc.h:338
#define MASK_JALR
Definition: riscv-opc.h:58
#define MASK_FMADD_S
Definition: riscv-opc.h:416
#define MATCH_FMIN_S
Definition: riscv-opc.h:261
#define MASK_C_LWSP
Definition: riscv-opc.h:490
#define MASK_FCVT_W_Q
Definition: riscv-opc.h:362
#define MATCH_FCVT_S_D
Definition: riscv-opc.h:285
#define MASK_C_SWSP
Definition: riscv-opc.h:500
#define MATCH_FSGNJ_Q
Definition: riscv-opc.h:299
#define MASK_FLT_S
Definition: riscv-opc.h:322
#define MASK_SD
Definition: riscv-opc.h:142
#define MATCH_FSD
Definition: riscv-opc.h:411
#define MATCH_FCVT_S_LU
Definition: riscv-opc.h:379
#define MATCH_SC_D
Definition: riscv-opc.h:215
#define MASK_C_AND
Definition: riscv-opc.h:474
#define MASK_FNMSUB_S
Definition: riscv-opc.h:420
#define MASK_SUB
Definition: riscv-opc.h:86
#define MASK_SLLI
Definition: riscv-opc.h:68
#define MASK_FMADD_Q
Definition: riscv-opc.h:432
#define MASK_SLTU
Definition: riscv-opc.h:92
#define MATCH_FLE_Q
Definition: riscv-opc.h:331
#define MASK_FCVT_L_Q
Definition: riscv-opc.h:366
#define MATCH_FMV_D_X
Definition: riscv-opc.h:391
#define MATCH_FCVT_LU_S
Definition: riscv-opc.h:343
#define MASK_ADDW
Definition: riscv-opc.h:112
#define MATCH_FLT_S
Definition: riscv-opc.h:321
#define MATCH_FEQ_Q
Definition: riscv-opc.h:335
#define MATCH_FSGNJN_S
Definition: riscv-opc.h:257
#define MATCH_FCVT_LU_Q
Definition: riscv-opc.h:367
#define MATCH_FSUB_D
Definition: riscv-opc.h:269
#define MATCH_LR_W
Definition: riscv-opc.h:191
#define MATCH_FMIN_D
Definition: riscv-opc.h:281
#define MATCH_C_EBREAK
Definition: riscv-opc.h:511
#define MASK_AMOMIN_W
Definition: riscv-opc.h:182
#define MATCH_FMAX_Q
Definition: riscv-opc.h:307
#define MASK_URET
Definition: riscv-opc.h:222
#define MATCH_DIVW
Definition: riscv-opc.h:165
#define MASK_C_MV
Definition: riscv-opc.h:494
#define MASK_JAL
Definition: riscv-opc.h:60
#define MATCH_FEQ_S
Definition: riscv-opc.h:323
#define MASK_C_FLW
Definition: riscv-opc.h:446
#define MATCH_FLW
Definition: riscv-opc.h:403
#define MATCH_C_AND
Definition: riscv-opc.h:473
#define MATCH_CSRRS
Definition: riscv-opc.h:237
#define MATCH_C_ADDI16SP
Definition: riscv-opc.h:505
#define MATCH_LW
Definition: riscv-opc.h:125
#define MASK_C_ADDI16SP
Definition: riscv-opc.h:506
#define MATCH_AMOMINU_W
Definition: riscv-opc.h:185
#define MATCH_DIV
Definition: riscv-opc.h:155
#define MATCH_FMSUB_D
Definition: riscv-opc.h:425
#define MASK_FSD
Definition: riscv-opc.h:412
#define MASK_LHU
Definition: riscv-opc.h:132
#define MATCH_FSGNJ_S
Definition: riscv-opc.h:255
#define MATCH_FDIV_S
Definition: riscv-opc.h:253
#define MATCH_C_FSD
Definition: riscv-opc.h:447
#define MATCH_LBU
Definition: riscv-opc.h:129
#define MATCH_FCVT_WU_S
Definition: riscv-opc.h:339
#define MASK_SRLI
Definition: riscv-opc.h:76
#define MASK_FSCSR
Definition: riscv-opc.h:26
#define MATCH_FNMSUB_Q
Definition: riscv-opc.h:435
#define MATCH_SH
Definition: riscv-opc.h:137
#define MASK_FCVT_Q_D
Definition: riscv-opc.h:316
#define MASK_SRET
Definition: riscv-opc.h:224
#define MATCH_FCVT_Q_WU
Definition: riscv-opc.h:395
#define MASK_C_ADDIW
Definition: riscv-opc.h:518
#define MATCH_REM
Definition: riscv-opc.h:159
#define MASK_FNMSUB_D
Definition: riscv-opc.h:428
#define MATCH_FCVT_S_W
Definition: riscv-opc.h:373
#define MASK_C_SDSP
Definition: riscv-opc.h:522
#define MASK_SRLIW
Definition: riscv-opc.h:108
#define MATCH_LB
Definition: riscv-opc.h:121
#define MATCH_C_SD
Definition: riscv-opc.h:515
#define MATCH_AMOOR_W
Definition: riscv-opc.h:177
#define MASK_FEQ_Q
Definition: riscv-opc.h:336
#define MATCH_ADD
Definition: riscv-opc.h:83
#define MASK_C_FLD
Definition: riscv-opc.h:442
#define MASK_SLT
Definition: riscv-opc.h:90
#define MASK_FCVT_Q_WU
Definition: riscv-opc.h:396
#define MASK_C_SUBW
Definition: riscv-opc.h:476
#define MASK_FEQ_D
Definition: riscv-opc.h:330
#define MASK_FCLASS_Q
Definition: riscv-opc.h:372
#define MATCH_EBREAK
Definition: riscv-opc.h:219
#define MASK_SLL
Definition: riscv-opc.h:88
#define MATCH_RDINSTRET
Definition: riscv-opc.h:33
#define MASK_FSQRT_Q
Definition: riscv-opc.h:318
#define MASK_FMUL_S
Definition: riscv-opc.h:252
#define MASK_BEQ
Definition: riscv-opc.h:46
#define MASK_C_XOR
Definition: riscv-opc.h:470
#define MATCH_FMV_S_X
Definition: riscv-opc.h:381
#define MASK_AMOAND_W
Definition: riscv-opc.h:180
#define MATCH_FRCSR
Definition: riscv-opc.h:27
#define MASK_SRA
Definition: riscv-opc.h:98
#define MASK_AMOSWAP_D
Definition: riscv-opc.h:212
#define MATCH_FENCE_I
Definition: riscv-opc.h:145
#define MASK_ADDIW
Definition: riscv-opc.h:104
#define MASK_CSRRS
Definition: riscv-opc.h:238
#define MATCH_FENCE
Definition: riscv-opc.h:143
#define MATCH_AMOSWAP_W
Definition: riscv-opc.h:189
#define MASK_LWU
Definition: riscv-opc.h:134
#define MATCH_MULH
Definition: riscv-opc.h:149
#define MATCH_URET
Definition: riscv-opc.h:221
#define MATCH_HRET
Definition: riscv-opc.h:225
#define MASK_LD
Definition: riscv-opc.h:128
#define MASK_SLLW
Definition: riscv-opc.h:116
#define MASK_FCVT_D_W
Definition: riscv-opc.h:384
#define MATCH_FCVT_L_Q
Definition: riscv-opc.h:365
#define MATCH_FCVT_WU_Q
Definition: riscv-opc.h:363
#define MASK_FNMSUB_Q
Definition: riscv-opc.h:436
#define MATCH_C_J
Definition: riscv-opc.h:479
#define MATCH_SCALL
Definition: riscv-opc.h:41
#define MASK_BLTU
Definition: riscv-opc.h:54
#define MASK_FMIN_D
Definition: riscv-opc.h:282
#define MATCH_FSGNJX_S
Definition: riscv-opc.h:259
#define MASK_SCALL
Definition: riscv-opc.h:42
#define MATCH_FNMSUB_D
Definition: riscv-opc.h:427
#define MATCH_SLTIU
Definition: riscv-opc.h:71
#define MASK_FCVT_D_Q
Definition: riscv-opc.h:314
#define MATCH_FNMADD_Q
Definition: riscv-opc.h:437
#define MATCH_RDCYCLE
Definition: riscv-opc.h:29
#define MASK_FSGNJX_S
Definition: riscv-opc.h:260
#define MATCH_ANDI
Definition: riscv-opc.h:81
#define MATCH_RDCYCLEH
Definition: riscv-opc.h:35
#define MATCH_MULHU
Definition: riscv-opc.h:153
#define MASK_FSRM
Definition: riscv-opc.h:22
#define MATCH_FCLASS_D
Definition: riscv-opc.h:359
#define MASK_FLE_Q
Definition: riscv-opc.h:332
#define MASK_SRAIW
Definition: riscv-opc.h:110
#define MASK_XOR
Definition: riscv-opc.h:94
#define MASK_WFI
Definition: riscv-opc.h:234
#define MATCH_MULHSU
Definition: riscv-opc.h:151
#define MASK_CSRRW
Definition: riscv-opc.h:236
#define MASK_SLTI
Definition: riscv-opc.h:70
#define MASK_FADD_S
Definition: riscv-opc.h:248
#define MATCH_AMOOR_D
Definition: riscv-opc.h:199
#define MATCH_FLE_S
Definition: riscv-opc.h:319
#define MATCH_C_LWSP
Definition: riscv-opc.h:489
#define MATCH_FMSUB_S
Definition: riscv-opc.h:417
#define MATCH_AMOADD_W
Definition: riscv-opc.h:173
#define MATCH_AND
Definition: riscv-opc.h:101
#define MASK_AMOXOR_D
Definition: riscv-opc.h:198
#define MATCH_SLTI
Definition: riscv-opc.h:69
#define MASK_AMOADD_D
Definition: riscv-opc.h:196
#define MASK_DIVUW
Definition: riscv-opc.h:168
#define MASK_SUBW
Definition: riscv-opc.h:114
#define MASK_SRAW
Definition: riscv-opc.h:120
#define MATCH_C_ADDI4SPN
Definition: riscv-opc.h:439
#define MASK_SH
Definition: riscv-opc.h:138
#define MASK_C_SD
Definition: riscv-opc.h:516
#define MATCH_AMOMAX_D
Definition: riscv-opc.h:205
#define MATCH_FCVT_Q_L
Definition: riscv-opc.h:397
#define MATCH_FCVT_L_S
Definition: riscv-opc.h:341
#define MATCH_C_LDSP
Definition: riscv-opc.h:519
#define MATCH_DIVUW
Definition: riscv-opc.h:167
#define MATCH_FSQRT_S
Definition: riscv-opc.h:265
#define MATCH_C_BEQZ
Definition: riscv-opc.h:481
#define MATCH_FADD_D
Definition: riscv-opc.h:267
#define MASK_FSUB_S
Definition: riscv-opc.h:250
#define MATCH_AMOMIN_D
Definition: riscv-opc.h:203
#define MASK_FMAX_D
Definition: riscv-opc.h:284
#define MASK_FCVT_WU_D
Definition: riscv-opc.h:352
#define MATCH_SRLW
Definition: riscv-opc.h:117
#define MASK_AUIPC
Definition: riscv-opc.h:64
#define MATCH_SB
Definition: riscv-opc.h:135
#define MATCH_FMUL_D
Definition: riscv-opc.h:271
#define MASK_C_OR
Definition: riscv-opc.h:472
#define MASK_FLE_D
Definition: riscv-opc.h:326
#define MATCH_RDINSTRETH
Definition: riscv-opc.h:39
#define MASK_FLQ
Definition: riscv-opc.h:408
#define CSR_CYCLE
Definition: riscv-opc.h:574
#define MASK_FCLASS_D
Definition: riscv-opc.h:360
#define MATCH_C_FLWSP
Definition: riscv-opc.h:491
#define MASK_BLT
Definition: riscv-opc.h:50
#define MASK_FMIN_Q
Definition: riscv-opc.h:306
#define MATCH_C_FSDSP
Definition: riscv-opc.h:497
#define MASK_C_LUI
Definition: riscv-opc.h:460
#define MATCH_ORI
Definition: riscv-opc.h:79
#define MASK_C_FSWSP
Definition: riscv-opc.h:502
#define MASK_AMOOR_D
Definition: riscv-opc.h:200
#define MASK_ADD
Definition: riscv-opc.h:84
#define MASK_FCVT_W_D
Definition: riscv-opc.h:350
#define MATCH_DRET
Definition: riscv-opc.h:229
#define MASK_SW
Definition: riscv-opc.h:140
#define MASK_C_SW
Definition: riscv-opc.h:450
#define MASK_FADD_Q
Definition: riscv-opc.h:292
#define MATCH_SRLIW
Definition: riscv-opc.h:107
#define MATCH_FCVT_L_D
Definition: riscv-opc.h:353
#define MASK_FLE_S
Definition: riscv-opc.h:320
#define MASK_FMV_S_X
Definition: riscv-opc.h:382
#define MATCH_BEQ
Definition: riscv-opc.h:45
#define MASK_REMU
Definition: riscv-opc.h:162
#define MASK_C_LDSP
Definition: riscv-opc.h:520
#define MATCH_FLD
Definition: riscv-opc.h:405
#define MATCH_XOR
Definition: riscv-opc.h:93
#define MASK_C_J
Definition: riscv-opc.h:480
#define MASK_FCVT_Q_LU
Definition: riscv-opc.h:400
#define MASK_FSQRT_S
Definition: riscv-opc.h:266
#define MASK_C_FSD
Definition: riscv-opc.h:448
#define MATCH_ADDIW
Definition: riscv-opc.h:103
#define MATCH_C_LI
Definition: riscv-opc.h:457
#define MASK_AMOMAX_D
Definition: riscv-opc.h:206
#define MATCH_FSFLAGS
Definition: riscv-opc.h:15
#define MATCH_FSUB_Q
Definition: riscv-opc.h:293
#define MASK_FRCSR
Definition: riscv-opc.h:28
#define MATCH_SLL
Definition: riscv-opc.h:87
#define MASK_AMOXOR_W
Definition: riscv-opc.h:176
#define MASK_FMV_Q_X
Definition: riscv-opc.h:402
#define MATCH_FSGNJX_Q
Definition: riscv-opc.h:303
#define MASK_FMSUB_D
Definition: riscv-opc.h:426
#define MATCH_C_LD
Definition: riscv-opc.h:513
#define MASK_FCVT_LU_D
Definition: riscv-opc.h:356
#define MASK_FMAX_S
Definition: riscv-opc.h:264
#define MASK_FMV_X_Q
Definition: riscv-opc.h:370
#define MASK_FSUB_Q
Definition: riscv-opc.h:294
#define MATCH_SRLI
Definition: riscv-opc.h:75
#define MASK_MULH
Definition: riscv-opc.h:150
#define MASK_FSGNJN_S
Definition: riscv-opc.h:258
#define MATCH_MULW
Definition: riscv-opc.h:163
#define MASK_RDTIME
Definition: riscv-opc.h:32
#define MASK_FSGNJX_Q
Definition: riscv-opc.h:304
#define MASK_DRET
Definition: riscv-opc.h:230
#define MATCH_FCVT_LU_D
Definition: riscv-opc.h:355
#define MASK_SC_W
Definition: riscv-opc.h:194
#define MASK_SC_D
Definition: riscv-opc.h:216
#define MASK_C_LW
Definition: riscv-opc.h:444
#define MATCH_C_ADDIW
Definition: riscv-opc.h:517
#define MASK_FCVT_S_WU
Definition: riscv-opc.h:376
#define MATCH_FSQRT_Q
Definition: riscv-opc.h:317
#define MATCH_SLLIW
Definition: riscv-opc.h:105
#define MASK_RDTIMEH
Definition: riscv-opc.h:38
#define MATCH_SUBW
Definition: riscv-opc.h:113
#define MATCH_AMOMIN_W
Definition: riscv-opc.h:181
#define MASK_FMV_X_D
Definition: riscv-opc.h:358
#define MASK_C_FLWSP
Definition: riscv-opc.h:492
#define MATCH_C_JR
Definition: riscv-opc.h:507
#define MASK_FSGNJ_S
Definition: riscv-opc.h:256
#define MATCH_C_FLW
Definition: riscv-opc.h:445
#define MATCH_C_LUI
Definition: riscv-opc.h:459
#define MATCH_FSQRT_D
Definition: riscv-opc.h:289
#define MATCH_SW
Definition: riscv-opc.h:139
#define MASK_AMOADD_W
Definition: riscv-opc.h:174
#define MASK_HRET
Definition: riscv-opc.h:226
#define MASK_FCVT_Q_L
Definition: riscv-opc.h:398
#define MASK_FEQ_S
Definition: riscv-opc.h:324
#define MATCH_SD
Definition: riscv-opc.h:141
#define MASK_CSRRWI
Definition: riscv-opc.h:242
#define MATCH_AMOMAXU_W
Definition: riscv-opc.h:187
#define MASK_MULW
Definition: riscv-opc.h:164
#define MATCH_FSRM
Definition: riscv-opc.h:21
#define MASK_AMOMIN_D
Definition: riscv-opc.h:204
#define MASK_FADD_D
Definition: riscv-opc.h:268
#define MASK_C_SRLI
Definition: riscv-opc.h:462
#define MATCH_FMUL_S
Definition: riscv-opc.h:251
#define MATCH_AMOXOR_W
Definition: riscv-opc.h:175
#define MATCH_FMADD_S
Definition: riscv-opc.h:415
#define MASK_FLW
Definition: riscv-opc.h:404
#define MATCH_AMOAND_D
Definition: riscv-opc.h:201
#define MASK_C_FSW
Definition: riscv-opc.h:452
#define MATCH_AMOXOR_D
Definition: riscv-opc.h:197
#define MATCH_C_XOR
Definition: riscv-opc.h:469
#define MATCH_FLT_D
Definition: riscv-opc.h:327
#define MATCH_SRET
Definition: riscv-opc.h:223
#define MASK_XORI
Definition: riscv-opc.h:74
#define MASK_FCVT_S_W
Definition: riscv-opc.h:374
#define MATCH_C_JAL
Definition: riscv-opc.h:455
#define MATCH_FSGNJN_D
Definition: riscv-opc.h:277
#define MATCH_FMAX_S
Definition: riscv-opc.h:263
#define MASK_AMOSWAP_W
Definition: riscv-opc.h:190
#define MATCH_FNMADD_D
Definition: riscv-opc.h:429
#define MASK_FLT_D
Definition: riscv-opc.h:328
#define MATCH_C_MV
Definition: riscv-opc.h:493
#define MATCH_SRL
Definition: riscv-opc.h:95
#define MATCH_SLLI
Definition: riscv-opc.h:67
#define MASK_AMOAND_D
Definition: riscv-opc.h:202
#define MASK_C_JALR
Definition: riscv-opc.h:510
#define MASK_BGE
Definition: riscv-opc.h:52
#define MASK_C_SLLI
Definition: riscv-opc.h:486
#define MATCH_CSRRSI
Definition: riscv-opc.h:243
#define MATCH_C_SUB
Definition: riscv-opc.h:467
#define MASK_C_LD
Definition: riscv-opc.h:514
#define MASK_MUL
Definition: riscv-opc.h:148
#define MASK_LR_D
Definition: riscv-opc.h:214
#define MASK_DIV
Definition: riscv-opc.h:156
#define MASK_FNMADD_Q
Definition: riscv-opc.h:438
#define MASK_FSGNJN_D
Definition: riscv-opc.h:278
#define MATCH_FMAX_D
Definition: riscv-opc.h:283
#define MATCH_AMOAND_W
Definition: riscv-opc.h:179
#define MASK_FCVT_S_D
Definition: riscv-opc.h:286
#define MATCH_FMV_X_Q
Definition: riscv-opc.h:369
#define MASK_SLLIW
Definition: riscv-opc.h:106
#define MASK_AMOOR_W
Definition: riscv-opc.h:178
#define MATCH_FCVT_D_WU
Definition: riscv-opc.h:385
#define MASK_C_SUB
Definition: riscv-opc.h:468
#define MASK_FCVT_L_S
Definition: riscv-opc.h:342
#define MASK_CSRRCI
Definition: riscv-opc.h:246
#define MASK_SRLW
Definition: riscv-opc.h:118
#define MASK_AMOMAX_W
Definition: riscv-opc.h:184
#define MATCH_BLTU
Definition: riscv-opc.h:53
#define MASK_C_EBREAK
Definition: riscv-opc.h:512
#define MATCH_FSGNJ_D
Definition: riscv-opc.h:275
#define MASK_C_FLDSP
Definition: riscv-opc.h:488
#define MASK_FCVT_S_Q
Definition: riscv-opc.h:310
#define MASK_C_BNEZ
Definition: riscv-opc.h:484
#define MATCH_FCVT_D_Q
Definition: riscv-opc.h:313
#define MASK_C_ADDI4SPN
Definition: riscv-opc.h:440
#define MATCH_FMV_X_D
Definition: riscv-opc.h:357
#define MATCH_FLQ
Definition: riscv-opc.h:407
#define MATCH_FSGNJN_Q
Definition: riscv-opc.h:301
#define MASK_LH
Definition: riscv-opc.h:124
#define MATCH_AMOMINU_D
Definition: riscv-opc.h:207
#define MASK_LW
Definition: riscv-opc.h:126
#define MATCH_AMOADD_D
Definition: riscv-opc.h:195
#define MATCH_CSRRWI
Definition: riscv-opc.h:241
#define MATCH_C_SWSP
Definition: riscv-opc.h:499
#define MASK_FCVT_LU_S
Definition: riscv-opc.h:344
#define MASK_FCVT_WU_S
Definition: riscv-opc.h:340
#define MATCH_FCVT_S_WU
Definition: riscv-opc.h:375
#define MASK_FNMADD_S
Definition: riscv-opc.h:422
#define MASK_REM
Definition: riscv-opc.h:160
#define MATCH_FCVT_S_Q
Definition: riscv-opc.h:309
#define MATCH_FRRM
Definition: riscv-opc.h:19
#define MASK_DIVW
Definition: riscv-opc.h:166
#define MASK_FSQ
Definition: riscv-opc.h:414
#define MATCH_C_ADD
Definition: riscv-opc.h:495
#define MASK_SLTIU
Definition: riscv-opc.h:72
#define MATCH_SUB
Definition: riscv-opc.h:85
#define MASK_BNE
Definition: riscv-opc.h:48
#define MATCH_FSW
Definition: riscv-opc.h:409
#define MATCH_XORI
Definition: riscv-opc.h:73
#define MASK_FSGNJ_Q
Definition: riscv-opc.h:300
#define MASK_CSRRSI
Definition: riscv-opc.h:244
#define MATCH_FLE_D
Definition: riscv-opc.h:325
#define MATCH_FDIV_Q
Definition: riscv-opc.h:297
#define MATCH_FSUB_S
Definition: riscv-opc.h:249
#define MASK_FMIN_S
Definition: riscv-opc.h:262
#define MASK_FENCE
Definition: riscv-opc.h:144
#define MATCH_C_SRAI
Definition: riscv-opc.h:463
#define MATCH_MUL
Definition: riscv-opc.h:147
#define MATCH_FEQ_D
Definition: riscv-opc.h:329
#define MATCH_C_SRLI
Definition: riscv-opc.h:461
#define MATCH_AMOMAXU_D
Definition: riscv-opc.h:209
#define MATCH_FMSUB_Q
Definition: riscv-opc.h:433
#define MATCH_FNMSUB_S
Definition: riscv-opc.h:419
#define MATCH_C_SUBW
Definition: riscv-opc.h:475
#define MASK_FNMADD_D
Definition: riscv-opc.h:430
#define MATCH_FCVT_D_S
Definition: riscv-opc.h:287
#define MATCH_FMV_Q_X
Definition: riscv-opc.h:401
#define MATCH_SLTU
Definition: riscv-opc.h:91
#define MASK_FLT_Q
Definition: riscv-opc.h:334
#define MASK_FRRM
Definition: riscv-opc.h:20
#define MATCH_ADDI
Definition: riscv-opc.h:65
#define MASK_C_JR
Definition: riscv-opc.h:508
#define MATCH_FLT_Q
Definition: riscv-opc.h:333
#define MATCH_C_OR
Definition: riscv-opc.h:471
#define MATCH_C_BNEZ
Definition: riscv-opc.h:483
#define MASK_FDIV_D
Definition: riscv-opc.h:274
#define MATCH_LD
Definition: riscv-opc.h:127
#define MATCH_MRET
Definition: riscv-opc.h:227
#define MATCH_SRAW
Definition: riscv-opc.h:119
#define MATCH_C_FLDSP
Definition: riscv-opc.h:487
#define MASK_MULHU
Definition: riscv-opc.h:154
#define MASK_RDINSTRETH
Definition: riscv-opc.h:40
#define MATCH_SLLW
Definition: riscv-opc.h:115
#define MATCH_FCVT_W_S
Definition: riscv-opc.h:337
#define MATCH_C_FLD
Definition: riscv-opc.h:441
@ M_LWU
Definition: riscv.h:321
@ M_SD
Definition: riscv.h:326
@ M_LLA
Definition: riscv.h:313
@ M_FLQ
Definition: riscv.h:329
@ M_FSQ
Definition: riscv.h:332
@ M_CALL
Definition: riscv.h:333
@ M_LHU
Definition: riscv.h:319
@ M_SW
Definition: riscv.h:325
@ M_LW
Definition: riscv.h:320
@ M_FSD
Definition: riscv.h:331
@ M_FLD
Definition: riscv.h:328
@ M_LA
Definition: riscv.h:312
@ M_LD
Definition: riscv.h:322
@ M_LH
Definition: riscv.h:318
@ M_FLW
Definition: riscv.h:327
@ M_SH
Definition: riscv.h:324
@ M_LBU
Definition: riscv.h:317
@ M_LB
Definition: riscv.h:316
@ M_FSW
Definition: riscv.h:330
@ M_LA_TLS_IE
Definition: riscv.h:315
@ M_LA_TLS_GD
Definition: riscv.h:314
@ M_SB
Definition: riscv.h:323
#define OP_SH_RS2
Definition: riscv.h:202
#define NGPR
Definition: riscv.h:249
#define ENCODE_ITYPE_IMM(x)
Definition: riscv.h:104
#define OP_SH_CSR
Definition: riscv.h:227
#define OP_SH_RS1
Definition: riscv.h:204
#define X_RA
Definition: riscv.h:240
#define INSN_ALIAS
Definition: riscv.h:297
#define X_T1
Definition: riscv.h:245
#define NFPR
Definition: riscv.h:250
static int
Definition: sfsocketcall.h:114
Definition: dis.c:32