xref: /XiangShan/src/main/scala/xiangshan/backend/decode/Instructions.scala (revision ca18a0b47b0e4089fd0dd1c085091cb90bf98f25)
1/***************************************************************************************
2* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences
3* Copyright (c) 2020-2021 Peng Cheng Laboratory
4*
5* XiangShan is licensed under Mulan PSL v2.
6* You can use this software according to the terms and conditions of the Mulan PSL v2.
7* You may obtain a copy of Mulan PSL v2 at:
8*          http://license.coscl.org.cn/MulanPSL2
9*
10* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13*
14* See the Mulan PSL v2 for more details.
15***************************************************************************************/
16
17// See LICENSE.SiFive for license details.
18// See LICENSE.Berkeley for license details.
19
20package xiangshan.backend.decode
21
22import chisel3._
23import chisel3.util._
24
25object Instructions {
26  def TRAP               = BitPat("b000000000000?????000000001101011")
27  def BEQ                = BitPat("b?????????????????000?????1100011")
28  def BNE                = BitPat("b?????????????????001?????1100011")
29  def BLT                = BitPat("b?????????????????100?????1100011")
30  def BGE                = BitPat("b?????????????????101?????1100011")
31  def BLTU               = BitPat("b?????????????????110?????1100011")
32  def BGEU               = BitPat("b?????????????????111?????1100011")
33  def JALR               = BitPat("b?????????????????000?????1100111")
34  def JAL                = BitPat("b?????????????????????????1101111")
35  def LUI                = BitPat("b?????????????????????????0110111")
36  def AUIPC              = BitPat("b?????????????????????????0010111")
37  def ADDI               = BitPat("b?????????????????000?????0010011")
38  def SLLI               = BitPat("b000000???????????001?????0010011")
39  def SLTI               = BitPat("b?????????????????010?????0010011")
40  def SLTIU              = BitPat("b?????????????????011?????0010011")
41  def XORI               = BitPat("b?????????????????100?????0010011")
42  def SRLI               = BitPat("b000000???????????101?????0010011")
43  def SRAI               = BitPat("b010000???????????101?????0010011")
44  def ORI                = BitPat("b?????????????????110?????0010011")
45  def ANDI               = BitPat("b?????????????????111?????0010011")
46  def ADD                = BitPat("b0000000??????????000?????0110011")
47  def SUB                = BitPat("b0100000??????????000?????0110011")
48  def SLL                = BitPat("b0000000??????????001?????0110011")
49  def SLT                = BitPat("b0000000??????????010?????0110011")
50  def SLTU               = BitPat("b0000000??????????011?????0110011")
51  def XOR                = BitPat("b0000000??????????100?????0110011")
52  def SRL                = BitPat("b0000000??????????101?????0110011")
53  def SRA                = BitPat("b0100000??????????101?????0110011")
54  def OR                 = BitPat("b0000000??????????110?????0110011")
55  def AND                = BitPat("b0000000??????????111?????0110011")
56  def ADDIW              = BitPat("b?????????????????000?????0011011")
57  def SLLIW              = BitPat("b0000000??????????001?????0011011")
58  def SRLIW              = BitPat("b0000000??????????101?????0011011")
59  def SRAIW              = BitPat("b0100000??????????101?????0011011")
60  def ADDW               = BitPat("b0000000??????????000?????0111011")
61  def SUBW               = BitPat("b0100000??????????000?????0111011")
62  def SLLW               = BitPat("b0000000??????????001?????0111011")
63  def SRLW               = BitPat("b0000000??????????101?????0111011")
64  def SRAW               = BitPat("b0100000??????????101?????0111011")
65  def LB                 = BitPat("b?????????????????000?????0000011")
66  def LH                 = BitPat("b?????????????????001?????0000011")
67  def LW                 = BitPat("b?????????????????010?????0000011")
68  def LD                 = BitPat("b?????????????????011?????0000011")
69  def LBU                = BitPat("b?????????????????100?????0000011")
70  def LHU                = BitPat("b?????????????????101?????0000011")
71  def LWU                = BitPat("b?????????????????110?????0000011")
72  def SB                 = BitPat("b?????????????????000?????0100011")
73  def SH                 = BitPat("b?????????????????001?????0100011")
74  def SW                 = BitPat("b?????????????????010?????0100011")
75  def SD                 = BitPat("b?????????????????011?????0100011")
76  def CBO_ZERO           = BitPat("b000000000100?????010000000001111")
77  def CBO_CLEAN          = BitPat("b000000000001?????010000000001111")
78  def CBO_FLUSH          = BitPat("b000000000010?????010000000001111")
79  def CBO_INVAL          = BitPat("b000000000000?????010000000001111")
80  def FENCE              = BitPat("b?????????????????000?????0001111")
81  def FENCE_I            = BitPat("b?????????????????001?????0001111")
82  def MUL                = BitPat("b0000001??????????000?????0110011")
83  def MULH               = BitPat("b0000001??????????001?????0110011")
84  def MULHSU             = BitPat("b0000001??????????010?????0110011")
85  def MULHU              = BitPat("b0000001??????????011?????0110011")
86  def DIV                = BitPat("b0000001??????????100?????0110011")
87  def DIVU               = BitPat("b0000001??????????101?????0110011")
88  def REM                = BitPat("b0000001??????????110?????0110011")
89  def REMU               = BitPat("b0000001??????????111?????0110011")
90  def MULW               = BitPat("b0000001??????????000?????0111011")
91  def DIVW               = BitPat("b0000001??????????100?????0111011")
92  def DIVUW              = BitPat("b0000001??????????101?????0111011")
93  def REMW               = BitPat("b0000001??????????110?????0111011")
94  def REMUW              = BitPat("b0000001??????????111?????0111011")
95  def ANDN               = BitPat("b0100000??????????111?????0110011")
96  def ORN                = BitPat("b0100000??????????110?????0110011")
97  def XNOR               = BitPat("b0100000??????????100?????0110011")
98  def SLO                = BitPat("b0010000??????????001?????0110011")
99  def SRO                = BitPat("b0010000??????????101?????0110011")
100  def ROL                = BitPat("b0110000??????????001?????0110011")
101  def ROR                = BitPat("b0110000??????????101?????0110011")
102  def BCLR               = BitPat("b0100100??????????001?????0110011")
103  def BSET               = BitPat("b0010100??????????001?????0110011")
104  def XPERM_N            = BitPat("b0010100??????????010?????0110011")
105  def XPERM_B            = BitPat("b0010100??????????100?????0110011")
106  def BINV               = BitPat("b0110100??????????001?????0110011")
107  def BEXT               = BitPat("b0100100??????????101?????0110011")
108  def GORC               = BitPat("b0010100??????????101?????0110011")
109  def GREV               = BitPat("b0110100??????????101?????0110011")
110  def SLOI               = BitPat("b001000???????????001?????0010011")
111  def SROI               = BitPat("b001000???????????101?????0010011")
112  def RORI               = BitPat("b011000???????????101?????0010011")
113  def BCLRI              = BitPat("b010010???????????001?????0010011")
114  def BSETI              = BitPat("b001010???????????001?????0010011")
115  def BINVI              = BitPat("b011010???????????001?????0010011")
116  def BEXTI              = BitPat("b010010???????????101?????0010011")
117  def GORCI              = BitPat("b001010???????????101?????0010011")
118  def GREVI              = BitPat("b011010???????????101?????0010011")
119  def CMIX               = BitPat("b?????11??????????001?????0110011")
120  def CMOV               = BitPat("b?????11??????????101?????0110011")
121  def FSL                = BitPat("b?????10??????????001?????0110011")
122  def FSR                = BitPat("b?????10??????????101?????0110011")
123  def FSRI               = BitPat("b?????1???????????101?????0010011")
124  def CLZ                = BitPat("b011000000000?????001?????0010011")
125  def CTZ                = BitPat("b011000000001?????001?????0010011")
126  def CPOP               = BitPat("b011000000010?????001?????0010011")
127  def SEXT_B             = BitPat("b011000000100?????001?????0010011")
128  def SEXT_H             = BitPat("b011000000101?????001?????0010011")
129  def CRC32_B            = BitPat("b011000010000?????001?????0010011")
130  def CRC32_H            = BitPat("b011000010001?????001?????0010011")
131  def CRC32_W            = BitPat("b011000010010?????001?????0010011")
132  def CRC32C_B           = BitPat("b011000011000?????001?????0010011")
133  def CRC32C_H           = BitPat("b011000011001?????001?????0010011")
134  def CRC32C_W           = BitPat("b011000011010?????001?????0010011")
135  def SH1ADD             = BitPat("b0010000??????????010?????0110011")
136  def SH2ADD             = BitPat("b0010000??????????100?????0110011")
137  def SH3ADD             = BitPat("b0010000??????????110?????0110011")
138  def CLMUL              = BitPat("b0000101??????????001?????0110011")
139  def CLMULR             = BitPat("b0000101??????????010?????0110011")
140  def CLMULH             = BitPat("b0000101??????????011?????0110011")
141  def MIN                = BitPat("b0000101??????????100?????0110011")
142  def MINU               = BitPat("b0000101??????????101?????0110011")
143  def MAX                = BitPat("b0000101??????????110?????0110011")
144  def MAXU               = BitPat("b0000101??????????111?????0110011")
145  def SHFL               = BitPat("b0000100??????????001?????0110011")
146  def UNSHFL             = BitPat("b0000100??????????101?????0110011")
147  def BCOMPRESS          = BitPat("b0000100??????????110?????0110011")
148  def BDECOMPRESS        = BitPat("b0100100??????????110?????0110011")
149  def PACK               = BitPat("b0000100??????????100?????0110011")
150  def ZEXT_H_RV32        = BitPat("b000010000000?????100?????0110011")
151  def PACKU              = BitPat("b0100100??????????100?????0110011")
152  def PACKH              = BitPat("b0000100??????????111?????0110011")
153  def BFP                = BitPat("b0100100??????????111?????0110011")
154  def SHFLI              = BitPat("b0000100??????????001?????0010011")
155  def UNSHFLI            = BitPat("b0000100??????????101?????0010011")
156  def REV_RV32           = BitPat("b011010011111?????101?????0010011")
157  def REV8_RV32          = BitPat("b011010011000?????101?????0010011")
158  def BMATFLIP           = BitPat("b011000000011?????001?????0010011")
159  def CRC32_D            = BitPat("b011000010011?????001?????0010011")
160  def CRC32C_D           = BitPat("b011000011011?????001?????0010011")
161  def BMATOR             = BitPat("b0000100??????????011?????0110011")
162  def BMATXOR            = BitPat("b0100100??????????011?????0110011")
163  def ADDIWU             = BitPat("b?????????????????100?????0011011")
164  def SLLIU_W            = BitPat("b000010???????????001?????0011011")
165  def ADDWU              = BitPat("b0000101??????????000?????0111011")
166  def SUBWU              = BitPat("b0100101??????????000?????0111011")
167  def ADDU_W             = BitPat("b0000100??????????000?????0111011")
168  def SLOW               = BitPat("b0010000??????????001?????0111011")
169  def SROW               = BitPat("b0010000??????????101?????0111011")
170  def ROLW               = BitPat("b0110000??????????001?????0111011")
171  def RORW               = BitPat("b0110000??????????101?????0111011")
172  def SBCLRW             = BitPat("b0100100??????????001?????0111011")
173  def SBSETW             = BitPat("b0010100??????????001?????0111011")
174  def SBINVW             = BitPat("b0110100??????????001?????0111011")
175  def SBEXTW             = BitPat("b0100100??????????101?????0111011")
176  def GORCW              = BitPat("b0010100??????????101?????0111011")
177  def GREVW              = BitPat("b0110100??????????101?????0111011")
178  def SLOIW              = BitPat("b0010000??????????001?????0011011")
179  def SROIW              = BitPat("b0010000??????????101?????0011011")
180  def RORIW              = BitPat("b0110000??????????101?????0011011")
181  def SBCLRIW            = BitPat("b0100100??????????001?????0011011")
182  def SBSETIW            = BitPat("b0010100??????????001?????0011011")
183  def SBINVIW            = BitPat("b0110100??????????001?????0011011")
184  def GORCIW             = BitPat("b0010100??????????101?????0011011")
185  def GREVIW             = BitPat("b0110100??????????101?????0011011")
186  def FSLW               = BitPat("b?????10??????????001?????0111011")
187  def FSRW               = BitPat("b?????10??????????101?????0111011")
188  def FSRIW              = BitPat("b?????10??????????101?????0011011")
189  def CLZW               = BitPat("b011000000000?????001?????0011011")
190  def CTZW               = BitPat("b011000000001?????001?????0011011")
191  def CPOPW              = BitPat("b011000000010?????001?????0011011")
192  def SH1ADDU_W          = BitPat("b0010000??????????010?????0111011")
193  def SH2ADDU_W          = BitPat("b0010000??????????100?????0111011")
194  def SH3ADDU_W          = BitPat("b0010000??????????110?????0111011")
195  def CLMULW             = BitPat("b0000101??????????001?????0111011")
196  def CLMULRW            = BitPat("b0000101??????????010?????0111011")
197  def CLMULHW            = BitPat("b0000101??????????011?????0111011")
198  def SHFLW              = BitPat("b0000100??????????001?????0111011")
199  def UNSHFLW            = BitPat("b0000100??????????101?????0111011")
200  def BMEXTW             = BitPat("b0000100??????????110?????0111011")
201  def BMDEPW             = BitPat("b0100100??????????110?????0111011")
202  def PACKW              = BitPat("b0000100??????????100?????0111011")
203  def ZEXT_H             = BitPat("b000010000000?????100?????0111011")
204  def PACKUW             = BitPat("b0100100??????????100?????0111011")
205  def BFPW               = BitPat("b0100100??????????111?????0111011")
206  def REV                = BitPat("b011010111111?????101?????0010011")
207  def REV8               = BitPat("b011010111000?????101?????0010011")
208  def REVB               = BitPat("b011010000111?????101?????0010011")
209  def ORC_B              = BitPat("b001010000111?????101?????0010011")
210  def AMOADD_W           = BitPat("b00000????????????010?????0101111")
211  def AMOXOR_W           = BitPat("b00100????????????010?????0101111")
212  def AMOOR_W            = BitPat("b01000????????????010?????0101111")
213  def AMOAND_W           = BitPat("b01100????????????010?????0101111")
214  def AMOMIN_W           = BitPat("b10000????????????010?????0101111")
215  def AMOMAX_W           = BitPat("b10100????????????010?????0101111")
216  def AMOMINU_W          = BitPat("b11000????????????010?????0101111")
217  def AMOMAXU_W          = BitPat("b11100????????????010?????0101111")
218  def AMOSWAP_W          = BitPat("b00001????????????010?????0101111")
219  def LR_W               = BitPat("b00010??00000?????010?????0101111")
220  def SC_W               = BitPat("b00011????????????010?????0101111")
221  def AMOADD_D           = BitPat("b00000????????????011?????0101111")
222  def AMOXOR_D           = BitPat("b00100????????????011?????0101111")
223  def AMOOR_D            = BitPat("b01000????????????011?????0101111")
224  def AMOAND_D           = BitPat("b01100????????????011?????0101111")
225  def AMOMIN_D           = BitPat("b10000????????????011?????0101111")
226  def AMOMAX_D           = BitPat("b10100????????????011?????0101111")
227  def AMOMINU_D          = BitPat("b11000????????????011?????0101111")
228  def AMOMAXU_D          = BitPat("b11100????????????011?????0101111")
229  def AMOSWAP_D          = BitPat("b00001????????????011?????0101111")
230  def LR_D               = BitPat("b00010??00000?????011?????0101111")
231  def SC_D               = BitPat("b00011????????????011?????0101111")
232  def ECALL              = BitPat("b00000000000000000000000001110011")
233  def EBREAK             = BitPat("b00000000000100000000000001110011")
234  def URET               = BitPat("b00000000001000000000000001110011")
235  def SRET               = BitPat("b00010000001000000000000001110011")
236  def MRET               = BitPat("b00110000001000000000000001110011")
237  def MNRET              = BitPat("b01110000001000000000000001110011")
238  def DRET               = BitPat("b01111011001000000000000001110011")
239  def SFENCE_VMA         = BitPat("b0001001??????????000000001110011")
240  def WFI                = BitPat("b00010000010100000000000001110011")
241  def CEASE              = BitPat("b00110000010100000000000001110011")
242  def CFLUSH_D_L1        = BitPat("b111111000000?????000000001110011")
243  def CDISCARD_D_L1      = BitPat("b111111000010?????000000001110011")
244  def CSRRW              = BitPat("b?????????????????001?????1110011")
245  def CSRRS              = BitPat("b?????????????????010?????1110011")
246  def CSRRC              = BitPat("b?????????????????011?????1110011")
247  def CSRRWI             = BitPat("b?????????????????101?????1110011")
248  def CSRRSI             = BitPat("b?????????????????110?????1110011")
249  def CSRRCI             = BitPat("b?????????????????111?????1110011")
250  def HFENCE_VVMA        = BitPat("b0010001??????????000000001110011")
251  def HFENCE_GVMA        = BitPat("b0110001??????????000000001110011")
252  def FADD_S             = BitPat("b0000000??????????????????1010011")
253  def FSUB_S             = BitPat("b0000100??????????????????1010011")
254  def FMUL_S             = BitPat("b0001000??????????????????1010011")
255  def FDIV_S             = BitPat("b0001100??????????????????1010011")
256  def FSGNJ_S            = BitPat("b0010000??????????000?????1010011")
257  def FSGNJN_S           = BitPat("b0010000??????????001?????1010011")
258  def FSGNJX_S           = BitPat("b0010000??????????010?????1010011")
259  def FMIN_S             = BitPat("b0010100??????????000?????1010011")
260  def FMAX_S             = BitPat("b0010100??????????001?????1010011")
261  def FSQRT_S            = BitPat("b010110000000?????????????1010011")
262  def FADD_D             = BitPat("b0000001??????????????????1010011")
263  def FSUB_D             = BitPat("b0000101??????????????????1010011")
264  def FMUL_D             = BitPat("b0001001??????????????????1010011")
265  def FDIV_D             = BitPat("b0001101??????????????????1010011")
266  def FSGNJ_D            = BitPat("b0010001??????????000?????1010011")
267  def FSGNJN_D           = BitPat("b0010001??????????001?????1010011")
268  def FSGNJX_D           = BitPat("b0010001??????????010?????1010011")
269  def FMIN_D             = BitPat("b0010101??????????000?????1010011")
270  def FMAX_D             = BitPat("b0010101??????????001?????1010011")
271  def FCVT_S_D           = BitPat("b010000000001?????????????1010011")
272  def FCVT_D_S           = BitPat("b010000100000?????????????1010011")
273  def FSQRT_D            = BitPat("b010110100000?????????????1010011")
274  def FADD_Q             = BitPat("b0000011??????????????????1010011")
275  def FSUB_Q             = BitPat("b0000111??????????????????1010011")
276  def FMUL_Q             = BitPat("b0001011??????????????????1010011")
277  def FDIV_Q             = BitPat("b0001111??????????????????1010011")
278  def FSGNJ_Q            = BitPat("b0010011??????????000?????1010011")
279  def FSGNJN_Q           = BitPat("b0010011??????????001?????1010011")
280  def FSGNJX_Q           = BitPat("b0010011??????????010?????1010011")
281  def FMIN_Q             = BitPat("b0010111??????????000?????1010011")
282  def FMAX_Q             = BitPat("b0010111??????????001?????1010011")
283  def FCVT_S_Q           = BitPat("b010000000011?????????????1010011")
284  def FCVT_Q_S           = BitPat("b010001100000?????????????1010011")
285  def FCVT_D_Q           = BitPat("b010000100011?????????????1010011")
286  def FCVT_Q_D           = BitPat("b010001100001?????????????1010011")
287  def FSQRT_Q            = BitPat("b010111100000?????????????1010011")
288  def FLE_S              = BitPat("b1010000??????????000?????1010011")
289  def FLT_S              = BitPat("b1010000??????????001?????1010011")
290  def FEQ_S              = BitPat("b1010000??????????010?????1010011")
291  def FLE_D              = BitPat("b1010001??????????000?????1010011")
292  def FLT_D              = BitPat("b1010001??????????001?????1010011")
293  def FEQ_D              = BitPat("b1010001??????????010?????1010011")
294  def FLE_Q              = BitPat("b1010011??????????000?????1010011")
295  def FLT_Q              = BitPat("b1010011??????????001?????1010011")
296  def FEQ_Q              = BitPat("b1010011??????????010?????1010011")
297  def FCVT_W_S           = BitPat("b110000000000?????????????1010011")
298  def FCVT_WU_S          = BitPat("b110000000001?????????????1010011")
299  def FCVT_L_S           = BitPat("b110000000010?????????????1010011")
300  def FCVT_LU_S          = BitPat("b110000000011?????????????1010011")
301  def FMV_X_W            = BitPat("b111000000000?????000?????1010011")
302  def FCLASS_S           = BitPat("b111000000000?????001?????1010011")
303  def FCVT_W_D           = BitPat("b110000100000?????????????1010011")
304  def FCVT_WU_D          = BitPat("b110000100001?????????????1010011")
305  def FCVT_L_D           = BitPat("b110000100010?????????????1010011")
306  def FCVT_LU_D          = BitPat("b110000100011?????????????1010011")
307  def FMV_X_D            = BitPat("b111000100000?????000?????1010011")
308  def FCLASS_D           = BitPat("b111000100000?????001?????1010011")
309  def FCVT_W_Q           = BitPat("b110001100000?????????????1010011")
310  def FCVT_WU_Q          = BitPat("b110001100001?????????????1010011")
311  def FCVT_L_Q           = BitPat("b110001100010?????????????1010011")
312  def FCVT_LU_Q          = BitPat("b110001100011?????????????1010011")
313  def FMV_X_Q            = BitPat("b111001100000?????000?????1010011")
314  def FCLASS_Q           = BitPat("b111001100000?????001?????1010011")
315  def FCVT_S_W           = BitPat("b110100000000?????????????1010011")
316  def FCVT_S_WU          = BitPat("b110100000001?????????????1010011")
317  def FCVT_S_L           = BitPat("b110100000010?????????????1010011")
318  def FCVT_S_LU          = BitPat("b110100000011?????????????1010011")
319  def FMV_W_X            = BitPat("b111100000000?????000?????1010011")
320  def FCVT_D_W           = BitPat("b110100100000?????????????1010011")
321  def FCVT_D_WU          = BitPat("b110100100001?????????????1010011")
322  def FCVT_D_L           = BitPat("b110100100010?????????????1010011")
323  def FCVT_D_LU          = BitPat("b110100100011?????????????1010011")
324  def FMV_D_X            = BitPat("b111100100000?????000?????1010011")
325  def FCVT_Q_W           = BitPat("b110101100000?????????????1010011")
326  def FCVT_Q_WU          = BitPat("b110101100001?????????????1010011")
327  def FCVT_Q_L           = BitPat("b110101100010?????????????1010011")
328  def FCVT_Q_LU          = BitPat("b110101100011?????????????1010011")
329  def FMV_Q_X            = BitPat("b111101100000?????000?????1010011")
330  def FLW                = BitPat("b?????????????????010?????0000111")
331  def FLD                = BitPat("b?????????????????011?????0000111")
332  def FLQ                = BitPat("b?????????????????100?????0000111")
333  def FSW                = BitPat("b?????????????????010?????0100111")
334  def FSD                = BitPat("b?????????????????011?????0100111")
335  def FSQ                = BitPat("b?????????????????100?????0100111")
336  def FMADD_S            = BitPat("b?????00??????????????????1000011")
337  def FMSUB_S            = BitPat("b?????00??????????????????1000111")
338  def FNMSUB_S           = BitPat("b?????00??????????????????1001011")
339  def FNMADD_S           = BitPat("b?????00??????????????????1001111")
340  def FMADD_D            = BitPat("b?????01??????????????????1000011")
341  def FMSUB_D            = BitPat("b?????01??????????????????1000111")
342  def FNMSUB_D           = BitPat("b?????01??????????????????1001011")
343  def FNMADD_D           = BitPat("b?????01??????????????????1001111")
344  def FMADD_Q            = BitPat("b?????11??????????????????1000011")
345  def FMSUB_Q            = BitPat("b?????11??????????????????1000111")
346  def FNMSUB_Q           = BitPat("b?????11??????????????????1001011")
347  def FNMADD_Q           = BitPat("b?????11??????????????????1001111")
348  def FADD_H             = BitPat("b0000010??????????????????1010011")
349  def FSUB_H             = BitPat("b0000110??????????????????1010011")
350  def FMUL_H             = BitPat("b0001010??????????????????1010011")
351  def FDIV_H             = BitPat("b0001110??????????????????1010011")
352  def FSGNJ_H            = BitPat("b0010010??????????000?????1010011")
353  def FSGNJN_H           = BitPat("b0010010??????????001?????1010011")
354  def FSGNJX_H           = BitPat("b0010010??????????010?????1010011")
355  def FMIN_H             = BitPat("b0010110??????????000?????1010011")
356  def FMAX_H             = BitPat("b0010110??????????001?????1010011")
357  def FCVT_H_S           = BitPat("b010001000000?????????????1010011")
358  def FCVT_S_H           = BitPat("b010000000010?????????????1010011")
359  def FSQRT_H            = BitPat("b010111000000?????????????1010011")
360  def FLE_H              = BitPat("b1010010??????????000?????1010011")
361  def FLT_H              = BitPat("b1010010??????????001?????1010011")
362  def FEQ_H              = BitPat("b1010010??????????010?????1010011")
363  def FCVT_W_H           = BitPat("b110001000000?????????????1010011")
364  def FCVT_WU_H          = BitPat("b110001000001?????????????1010011")
365  def FMV_X_H            = BitPat("b111001000000?????000?????1010011")
366  def FCLASS_H           = BitPat("b111001000000?????001?????1010011")
367  def FCVT_H_W           = BitPat("b110101000000?????????????1010011")
368  def FCVT_H_WU          = BitPat("b110101000001?????????????1010011")
369  def FMV_H_X            = BitPat("b111101000000?????000?????1010011")
370  def FCVT_H_D           = BitPat("b010001000001?????????????1010011")
371  def FCVT_D_H           = BitPat("b010000100010?????????????1010011")
372  def FCVT_H_Q           = BitPat("b010001000011?????????????1010011")
373  def FCVT_Q_H           = BitPat("b010001100010?????????????1010011")
374  def FCVT_L_H           = BitPat("b110001000010?????????????1010011")
375  def FCVT_LU_H          = BitPat("b110001000011?????????????1010011")
376  def FCVT_H_L           = BitPat("b110101000010?????????????1010011")
377  def FCVT_H_LU          = BitPat("b110101000011?????????????1010011")
378  def FLH                = BitPat("b?????????????????001?????0000111")
379  def FSH                = BitPat("b?????????????????001?????0100111")
380  def FMADD_H            = BitPat("b?????10??????????????????1000011")
381  def FMSUB_H            = BitPat("b?????10??????????????????1000111")
382  def FNMSUB_H           = BitPat("b?????10??????????????????1001011")
383  def FNMADD_H           = BitPat("b?????10??????????????????1001111")
384  def C_ADDI4SPN         = BitPat("b????????????????000???????????00")
385  def C_FLD              = BitPat("b????????????????001???????????00")
386  def C_LW               = BitPat("b????????????????010???????????00")
387  def C_FLW              = BitPat("b????????????????011???????????00")
388  def C_FSD              = BitPat("b????????????????101???????????00")
389  def C_SW               = BitPat("b????????????????110???????????00")
390  def C_FSW              = BitPat("b????????????????111???????????00")
391  def C_ADDI             = BitPat("b????????????????000???????????01")
392  def C_JAL              = BitPat("b????????????????001???????????01")
393  def C_LI               = BitPat("b????????????????010???????????01")
394  def C_LUI              = BitPat("b????????????????011???????????01")
395  def C_SRLI             = BitPat("b????????????????100?00????????01")
396  def C_SRAI             = BitPat("b????????????????100?01????????01")
397  def C_ANDI             = BitPat("b????????????????100?10????????01")
398  def C_SUB              = BitPat("b????????????????100011???00???01")
399  def C_XOR              = BitPat("b????????????????100011???01???01")
400  def C_OR               = BitPat("b????????????????100011???10???01")
401  def C_AND              = BitPat("b????????????????100011???11???01")
402  def C_SUBW             = BitPat("b????????????????100111???00???01")
403  def C_ADDW             = BitPat("b????????????????100111???01???01")
404  def C_J                = BitPat("b????????????????101???????????01")
405  def C_BEQZ             = BitPat("b????????????????110???????????01")
406  def C_BNEZ             = BitPat("b????????????????111???????????01")
407  def C_SLLI             = BitPat("b????????????????000???????????10")
408  def C_FLDSP            = BitPat("b????????????????001???????????10")
409  def C_LWSP             = BitPat("b????????????????010???????????10")
410  def C_FLWSP            = BitPat("b????????????????011???????????10")
411  def C_MV               = BitPat("b????????????????1000??????????10")
412  def C_ADD              = BitPat("b????????????????1001??????????10")
413  def C_FSDSP            = BitPat("b????????????????101???????????10")
414  def C_SWSP             = BitPat("b????????????????110???????????10")
415  def C_FSWSP            = BitPat("b????????????????111???????????10")
416  def C_NOP              = BitPat("b????????????????0000000000000001")
417  def C_ADDI16SP         = BitPat("b????????????????011?00010?????01")
418  def C_JR               = BitPat("b????????????????1000?????0000010")
419  def C_JALR             = BitPat("b????????????????1001?????0000010")
420  def C_EBREAK           = BitPat("b????????????????1001000000000010")
421  def C_SRLI_RV32        = BitPat("b????????????????100000????????01")
422  def C_SRAI_RV32        = BitPat("b????????????????100001????????01")
423  def C_SLLI_RV32        = BitPat("b????????????????0000??????????10")
424  def C_LD               = BitPat("b????????????????011???????????00")
425  def C_SD               = BitPat("b????????????????111???????????00")
426  def C_ADDIW            = BitPat("b????????????????001???????????01")
427  def C_LDSP             = BitPat("b????????????????011???????????10")
428  def C_SDSP             = BitPat("b????????????????111???????????10")
429  def C_LQ               = BitPat("b????????????????001???????????00")
430  def C_SQ               = BitPat("b????????????????101???????????00")
431  def C_LQSP             = BitPat("b????????????????001???????????10")
432  def C_SQSP             = BitPat("b????????????????101???????????10")
433  def VSETVLI            = BitPat("b0????????????????111?????1010111")
434  def VSETVL             = BitPat("b1000000??????????111?????1010111")
435  def VLE8_V             = BitPat("b???000?00000?????000?????0000111")
436  def VLE16_V            = BitPat("b???000?00000?????101?????0000111")
437  def VLE32_V            = BitPat("b???000?00000?????110?????0000111")
438  def VLE64_V            = BitPat("b???000?00000?????111?????0000111")
439  def VSE8_V             = BitPat("b???000?00000?????000?????0100111")
440  def VSE16_V            = BitPat("b???000?00000?????101?????0100111")
441  def VSE32_V            = BitPat("b???000?00000?????110?????0100111")
442  def VSE64_V            = BitPat("b???000?00000?????111?????0100111")
443  def VLSE8_V            = BitPat("b???010???????????000?????0000111")
444  def VLSE16_V           = BitPat("b???010???????????101?????0000111")
445  def VLSE32_V           = BitPat("b???010???????????110?????0000111")
446  def VLSE64_V           = BitPat("b???010???????????111?????0000111")
447  def VSSE8_V            = BitPat("b???010???????????000?????0100111")
448  def VSSE16_V           = BitPat("b???010???????????101?????0100111")
449  def VSSE32_V           = BitPat("b???010???????????110?????0100111")
450  def VSSE64_V           = BitPat("b???010???????????111?????0100111")
451  def VLXEI8_V           = BitPat("b???011???????????000?????0000111")
452  def VLXEI16_V          = BitPat("b???011???????????101?????0000111")
453  def VLXEI32_V          = BitPat("b???011???????????110?????0000111")
454  def VLXEI64_V          = BitPat("b???011???????????111?????0000111")
455  def VSXEI8_V           = BitPat("b???011???????????000?????0100111")
456  def VSXEI16_V          = BitPat("b???011???????????101?????0100111")
457  def VSXEI32_V          = BitPat("b???011???????????110?????0100111")
458  def VSXEI64_V          = BitPat("b???011???????????111?????0100111")
459  def VSUXEI8_V          = BitPat("b000001???????????000?????0100111")
460  def VSUXEI16_V         = BitPat("b000001???????????101?????0100111")
461  def VSUXEI32_V         = BitPat("b000001???????????110?????0100111")
462  def VSUXEI64_V         = BitPat("b000001???????????111?????0100111")
463  def VLE8FF_V           = BitPat("b???000?10000?????000?????0000111")
464  def VLE16FF_V          = BitPat("b???000?10000?????101?????0000111")
465  def VLE32FF_V          = BitPat("b???000?10000?????110?????0000111")
466  def VLE64FF_V          = BitPat("b???000?10000?????111?????0000111")
467  def VL1RE8_V           = BitPat("b000000101000?????000?????0000111")
468  def VL1RE16_V          = BitPat("b000000101000?????101?????0000111")
469  def VL1RE32_V          = BitPat("b000000101000?????110?????0000111")
470  def VL1RE64_V          = BitPat("b000000101000?????111?????0000111")
471  def VL2RE8_V           = BitPat("b001000101000?????000?????0000111")
472  def VL2RE16_V          = BitPat("b001000101000?????101?????0000111")
473  def VL2RE32_V          = BitPat("b001000101000?????110?????0000111")
474  def VL2RE64_V          = BitPat("b001000101000?????111?????0000111")
475  def VL4RE8_V           = BitPat("b011000101000?????000?????0000111")
476  def VL4RE16_V          = BitPat("b011000101000?????101?????0000111")
477  def VL4RE32_V          = BitPat("b011000101000?????110?????0000111")
478  def VL4RE64_V          = BitPat("b011000101000?????111?????0000111")
479  def VL8RE8_V           = BitPat("b111000101000?????000?????0000111")
480  def VL8RE16_V          = BitPat("b111000101000?????101?????0000111")
481  def VL8RE32_V          = BitPat("b111000101000?????110?????0000111")
482  def VL8RE64_V          = BitPat("b111000101000?????111?????0000111")
483  def VS1R_V             = BitPat("b000000101000?????000?????0100111")
484  def VS2R_V             = BitPat("b001000101000?????000?????0100111")
485  def VS4R_V             = BitPat("b011000101000?????000?????0100111")
486  def VS8R_V             = BitPat("b111000101000?????000?????0100111")
487  def VFADD_VF           = BitPat("b000000???????????101?????1010111")
488  def VFSUB_VF           = BitPat("b000010???????????101?????1010111")
489  def VFMIN_VF           = BitPat("b000100???????????101?????1010111")
490  def VFMAX_VF           = BitPat("b000110???????????101?????1010111")
491  def VFSGNJ_VF          = BitPat("b001000???????????101?????1010111")
492  def VFSGNJN_VF         = BitPat("b001001???????????101?????1010111")
493  def VFSGNJX_VF         = BitPat("b001010???????????101?????1010111")
494  def VFSLIDE1UP_VF      = BitPat("b001110???????????101?????1010111")
495  def VFSLIDE1DOWN_VF    = BitPat("b001111???????????101?????1010111")
496  def VFMV_S_F           = BitPat("b010000100000?????101?????1010111")
497  def VFMERGE_VFM        = BitPat("b0101110??????????101?????1010111")
498  def VFMV_V_F           = BitPat("b010111100000?????101?????1010111")
499  def VMFEQ_VF           = BitPat("b011000???????????101?????1010111")
500  def VMFLE_VF           = BitPat("b011001???????????101?????1010111")
501  def VMFLT_VF           = BitPat("b011011???????????101?????1010111")
502  def VMFNE_VF           = BitPat("b011100???????????101?????1010111")
503  def VMFGT_VF           = BitPat("b011101???????????101?????1010111")
504  def VMFGE_VF           = BitPat("b011111???????????101?????1010111")
505  def VFDIV_VF           = BitPat("b100000???????????101?????1010111")
506  def VFRDIV_VF          = BitPat("b100001???????????101?????1010111")
507  def VFMUL_VF           = BitPat("b100100???????????101?????1010111")
508  def VFRSUB_VF          = BitPat("b100111???????????101?????1010111")
509  def VFMADD_VF          = BitPat("b101000???????????101?????1010111")
510  def VFNMADD_VF         = BitPat("b101001???????????101?????1010111")
511  def VFMSUB_VF          = BitPat("b101010???????????101?????1010111")
512  def VFNMSUB_VF         = BitPat("b101011???????????101?????1010111")
513  def VFMACC_VF          = BitPat("b101100???????????101?????1010111")
514  def VFNMACC_VF         = BitPat("b101101???????????101?????1010111")
515  def VFMSAC_VF          = BitPat("b101110???????????101?????1010111")
516  def VFNMSAC_VF         = BitPat("b101111???????????101?????1010111")
517  def VFWADD_VF          = BitPat("b110000???????????101?????1010111")
518  def VFWSUB_VF          = BitPat("b110010???????????101?????1010111")
519  def VFWADD_WF          = BitPat("b110100???????????101?????1010111")
520  def VFWSUB_WF          = BitPat("b110110???????????101?????1010111")
521  def VFWMUL_VF          = BitPat("b111000???????????101?????1010111")
522  def VFWMACC_VF         = BitPat("b111100???????????101?????1010111")
523  def VFWNMACC_VF        = BitPat("b111101???????????101?????1010111")
524  def VFWMSAC_VF         = BitPat("b111110???????????101?????1010111")
525  def VFWNMSAC_VF        = BitPat("b111111???????????101?????1010111")
526  def VFADD_VV           = BitPat("b000000???????????001?????1010111")
527  def VFREDSUM_VS        = BitPat("b000001???????????001?????1010111")
528  def VFSUB_VV           = BitPat("b000010???????????001?????1010111")
529  def VFREDOSUM_VS       = BitPat("b000011???????????001?????1010111")
530  def VFMIN_VV           = BitPat("b000100???????????001?????1010111")
531  def VFREDMIN_VS        = BitPat("b000101???????????001?????1010111")
532  def VFMAX_VV           = BitPat("b000110???????????001?????1010111")
533  def VFREDMAX_VS        = BitPat("b000111???????????001?????1010111")
534  def VFSGNJ_VV          = BitPat("b001000???????????001?????1010111")
535  def VFSGNJN_VV         = BitPat("b001001???????????001?????1010111")
536  def VFSGNJX_VV         = BitPat("b001010???????????001?????1010111")
537  def VFMV_F_S           = BitPat("b0100001?????00000001?????1010111")
538  def VMFEQ_VV           = BitPat("b011000???????????001?????1010111")
539  def VMFLE_VV           = BitPat("b011001???????????001?????1010111")
540  def VMFLT_VV           = BitPat("b011011???????????001?????1010111")
541  def VMFNE_VV           = BitPat("b011100???????????001?????1010111")
542  def VFDIV_VV           = BitPat("b100000???????????001?????1010111")
543  def VFMUL_VV           = BitPat("b100100???????????001?????1010111")
544  def VFMADD_VV          = BitPat("b101000???????????001?????1010111")
545  def VFNMADD_VV         = BitPat("b101001???????????001?????1010111")
546  def VFMSUB_VV          = BitPat("b101010???????????001?????1010111")
547  def VFNMSUB_VV         = BitPat("b101011???????????001?????1010111")
548  def VFMACC_VV          = BitPat("b101100???????????001?????1010111")
549  def VFNMACC_VV         = BitPat("b101101???????????001?????1010111")
550  def VFMSAC_VV          = BitPat("b101110???????????001?????1010111")
551  def VFNMSAC_VV         = BitPat("b101111???????????001?????1010111")
552  def VFCVT_XU_F_V       = BitPat("b010010??????00000001?????1010111")
553  def VFCVT_X_F_V        = BitPat("b010010??????00001001?????1010111")
554  def VFCVT_F_XU_V       = BitPat("b010010??????00010001?????1010111")
555  def VFCVT_F_X_V        = BitPat("b010010??????00011001?????1010111")
556  def VFCVT_RTZ_XU_F_V   = BitPat("b010010??????00110001?????1010111")
557  def VFCVT_RTZ_X_F_V    = BitPat("b010010??????00111001?????1010111")
558  def VFWCVT_XU_F_V      = BitPat("b010010??????01000001?????1010111")
559  def VFWCVT_X_F_V       = BitPat("b010010??????01001001?????1010111")
560  def VFWCVT_F_XU_V      = BitPat("b010010??????01010001?????1010111")
561  def VFWCVT_F_X_V       = BitPat("b010010??????01011001?????1010111")
562  def VFWCVT_F_F_V       = BitPat("b010010??????01100001?????1010111")
563  def VFWCVT_RTZ_XU_F_V  = BitPat("b010010??????01110001?????1010111")
564  def VFWCVT_RTZ_X_F_V   = BitPat("b010010??????01111001?????1010111")
565  def VFNCVT_XU_F_W      = BitPat("b010010??????10000001?????1010111")
566  def VFNCVT_X_F_W       = BitPat("b010010??????10001001?????1010111")
567  def VFNCVT_F_XU_W      = BitPat("b010010??????10010001?????1010111")
568  def VFNCVT_F_X_W       = BitPat("b010010??????10011001?????1010111")
569  def VFNCVT_F_F_W       = BitPat("b010010??????10100001?????1010111")
570  def VFNCVT_ROD_F_F_W   = BitPat("b010010??????10101001?????1010111")
571  def VFNCVT_RTZ_XU_F_W  = BitPat("b010010??????10110001?????1010111")
572  def VFNCVT_RTZ_X_F_W   = BitPat("b010010??????10111001?????1010111")
573  def VFSQRT_V           = BitPat("b010011??????00000001?????1010111")
574  def VFCLASS_V          = BitPat("b010011??????10000001?????1010111")
575  def VFWADD_VV          = BitPat("b110000???????????001?????1010111")
576  def VFWREDSUM_VS       = BitPat("b110001???????????001?????1010111")
577  def VFWSUB_VV          = BitPat("b110010???????????001?????1010111")
578  def VFWREDOSUM_VS      = BitPat("b110011???????????001?????1010111")
579  def VFWADD_WV          = BitPat("b110100???????????001?????1010111")
580  def VFWSUB_WV          = BitPat("b110110???????????001?????1010111")
581  def VFWMUL_VV          = BitPat("b111000???????????001?????1010111")
582  def VFDOT_VV           = BitPat("b111001???????????001?????1010111")
583  def VFWMACC_VV         = BitPat("b111100???????????001?????1010111")
584  def VFWNMACC_VV        = BitPat("b111101???????????001?????1010111")
585  def VFWMSAC_VV         = BitPat("b111110???????????001?????1010111")
586  def VFWNMSAC_VV        = BitPat("b111111???????????001?????1010111")
587  def VADD_VX            = BitPat("b000000???????????100?????1010111")
588  def VSUB_VX            = BitPat("b000010???????????100?????1010111")
589  def VRSUB_VX           = BitPat("b000011???????????100?????1010111")
590  def VMINU_VX           = BitPat("b000100???????????100?????1010111")
591  def VMIN_VX            = BitPat("b000101???????????100?????1010111")
592  def VMAXU_VX           = BitPat("b000110???????????100?????1010111")
593  def VMAX_VX            = BitPat("b000111???????????100?????1010111")
594  def VAND_VX            = BitPat("b001001???????????100?????1010111")
595  def VOR_VX             = BitPat("b001010???????????100?????1010111")
596  def VXOR_VX            = BitPat("b001011???????????100?????1010111")
597  def VRGATHER_VX        = BitPat("b001100???????????100?????1010111")
598  def VSLIDEUP_VX        = BitPat("b001110???????????100?????1010111")
599  def VSLIDEDOWN_VX      = BitPat("b001111???????????100?????1010111")
600  def VADC_VXM           = BitPat("b0100000??????????100?????1010111")
601  def VMADC_VXM          = BitPat("b010001???????????100?????1010111")
602  def VSBC_VXM           = BitPat("b0100100??????????100?????1010111")
603  def VMSBC_VXM          = BitPat("b010011???????????100?????1010111")
604  def VMERGE_VXM         = BitPat("b0101110??????????100?????1010111")
605  def VMV_V_X            = BitPat("b010111100000?????100?????1010111")
606  def VMSEQ_VX           = BitPat("b011000???????????100?????1010111")
607  def VMSNE_VX           = BitPat("b011001???????????100?????1010111")
608  def VMSLTU_VX          = BitPat("b011010???????????100?????1010111")
609  def VMSLT_VX           = BitPat("b011011???????????100?????1010111")
610  def VMSLEU_VX          = BitPat("b011100???????????100?????1010111")
611  def VMSLE_VX           = BitPat("b011101???????????100?????1010111")
612  def VMSGTU_VX          = BitPat("b011110???????????100?????1010111")
613  def VMSGT_VX           = BitPat("b011111???????????100?????1010111")
614  def VSADDU_VX          = BitPat("b100000???????????100?????1010111")
615  def VSADD_VX           = BitPat("b100001???????????100?????1010111")
616  def VSSUBU_VX          = BitPat("b100010???????????100?????1010111")
617  def VSSUB_VX           = BitPat("b100011???????????100?????1010111")
618  def VSLL_VX            = BitPat("b100101???????????100?????1010111")
619  def VSMUL_VX           = BitPat("b100111???????????100?????1010111")
620  def VSRL_VX            = BitPat("b101000???????????100?????1010111")
621  def VSRA_VX            = BitPat("b101001???????????100?????1010111")
622  def VSSRL_VX           = BitPat("b101010???????????100?????1010111")
623  def VSSRA_VX           = BitPat("b101011???????????100?????1010111")
624  def VNSRL_WX           = BitPat("b101100???????????100?????1010111")
625  def VNSRA_WX           = BitPat("b101101???????????100?????1010111")
626  def VNCLIPU_WX         = BitPat("b101110???????????100?????1010111")
627  def VNCLIP_WX          = BitPat("b101111???????????100?????1010111")
628  def VQMACCU_VX         = BitPat("b111100???????????100?????1010111")
629  def VQMACC_VX          = BitPat("b111101???????????100?????1010111")
630  def VQMACCUS_VX        = BitPat("b111110???????????100?????1010111")
631  def VQMACCSU_VX        = BitPat("b111111???????????100?????1010111")
632  def VADD_VV            = BitPat("b000000???????????000?????1010111")
633  def VSUB_VV            = BitPat("b000010???????????000?????1010111")
634  def VMINU_VV           = BitPat("b000100???????????000?????1010111")
635  def VMIN_VV            = BitPat("b000101???????????000?????1010111")
636  def VMAXU_VV           = BitPat("b000110???????????000?????1010111")
637  def VMAX_VV            = BitPat("b000111???????????000?????1010111")
638  def VAND_VV            = BitPat("b001001???????????000?????1010111")
639  def VOR_VV             = BitPat("b001010???????????000?????1010111")
640  def VXOR_VV            = BitPat("b001011???????????000?????1010111")
641  def VRGATHER_VV        = BitPat("b001100???????????000?????1010111")
642  def VRGATHEREI16_VV    = BitPat("b001110???????????000?????1010111")
643  def VADC_VVM           = BitPat("b0100000??????????000?????1010111")
644  def VMADC_VVM          = BitPat("b010001???????????000?????1010111")
645  def VSBC_VVM           = BitPat("b0100100??????????000?????1010111")
646  def VMSBC_VVM          = BitPat("b010011???????????000?????1010111")
647  def VMERGE_VVM         = BitPat("b0101110??????????000?????1010111")
648  def VMV_V_V            = BitPat("b010111100000?????000?????1010111")
649  def VMSEQ_VV           = BitPat("b011000???????????000?????1010111")
650  def VMSNE_VV           = BitPat("b011001???????????000?????1010111")
651  def VMSLTU_VV          = BitPat("b011010???????????000?????1010111")
652  def VMSLT_VV           = BitPat("b011011???????????000?????1010111")
653  def VMSLEU_VV          = BitPat("b011100???????????000?????1010111")
654  def VMSLE_VV           = BitPat("b011101???????????000?????1010111")
655  def VSADDU_VV          = BitPat("b100000???????????000?????1010111")
656  def VSADD_VV           = BitPat("b100001???????????000?????1010111")
657  def VSSUBU_VV          = BitPat("b100010???????????000?????1010111")
658  def VSSUB_VV           = BitPat("b100011???????????000?????1010111")
659  def VSLL_VV            = BitPat("b100101???????????000?????1010111")
660  def VSMUL_VV           = BitPat("b100111???????????000?????1010111")
661  def VSRL_VV            = BitPat("b101000???????????000?????1010111")
662  def VSRA_VV            = BitPat("b101001???????????000?????1010111")
663  def VSSRL_VV           = BitPat("b101010???????????000?????1010111")
664  def VSSRA_VV           = BitPat("b101011???????????000?????1010111")
665  def VNSRL_WV           = BitPat("b101100???????????000?????1010111")
666  def VNSRA_WV           = BitPat("b101101???????????000?????1010111")
667  def VNCLIPU_WV         = BitPat("b101110???????????000?????1010111")
668  def VNCLIP_WV          = BitPat("b101111???????????000?????1010111")
669  def VWREDSUMU_VS       = BitPat("b110000???????????000?????1010111")
670  def VWREDSUM_VS        = BitPat("b110001???????????000?????1010111")
671  def VDOTU_VV           = BitPat("b111000???????????000?????1010111")
672  def VDOT_VV            = BitPat("b111001???????????000?????1010111")
673  def VQMACCU_VV         = BitPat("b111100???????????000?????1010111")
674  def VQMACC_VV          = BitPat("b111101???????????000?????1010111")
675  def VQMACCSU_VV        = BitPat("b111111???????????000?????1010111")
676  def VADD_VI            = BitPat("b000000???????????011?????1010111")
677  def VRSUB_VI           = BitPat("b000011???????????011?????1010111")
678  def VAND_VI            = BitPat("b001001???????????011?????1010111")
679  def VOR_VI             = BitPat("b001010???????????011?????1010111")
680  def VXOR_VI            = BitPat("b001011???????????011?????1010111")
681  def VRGATHER_VI        = BitPat("b001100???????????011?????1010111")
682  def VSLIDEUP_VI        = BitPat("b001110???????????011?????1010111")
683  def VSLIDEDOWN_VI      = BitPat("b001111???????????011?????1010111")
684  def VADC_VIM           = BitPat("b0100000??????????011?????1010111")
685  def VMADC_VIM          = BitPat("b010001???????????011?????1010111")
686  def VMERGE_VIM         = BitPat("b0101110??????????011?????1010111")
687  def VMV_V_I            = BitPat("b010111100000?????011?????1010111")
688  def VMSEQ_VI           = BitPat("b011000???????????011?????1010111")
689  def VMSNE_VI           = BitPat("b011001???????????011?????1010111")
690  def VMSLEU_VI          = BitPat("b011100???????????011?????1010111")
691  def VMSLE_VI           = BitPat("b011101???????????011?????1010111")
692  def VMSGTU_VI          = BitPat("b011110???????????011?????1010111")
693  def VMSGT_VI           = BitPat("b011111???????????011?????1010111")
694  def VSADDU_VI          = BitPat("b100000???????????011?????1010111")
695  def VSADD_VI           = BitPat("b100001???????????011?????1010111")
696  def VSLL_VI            = BitPat("b100101???????????011?????1010111")
697  def VMV1R_V            = BitPat("b1001111?????00000011?????1010111")
698  def VMV2R_V            = BitPat("b1001111?????00001011?????1010111")
699  def VMV4R_V            = BitPat("b1001111?????00011011?????1010111")
700  def VMV8R_V            = BitPat("b1001111?????00111011?????1010111")
701  def VSRL_VI            = BitPat("b101000???????????011?????1010111")
702  def VSRA_VI            = BitPat("b101001???????????011?????1010111")
703  def VSSRL_VI           = BitPat("b101010???????????011?????1010111")
704  def VSSRA_VI           = BitPat("b101011???????????011?????1010111")
705  def VNSRL_WI           = BitPat("b101100???????????011?????1010111")
706  def VNSRA_WI           = BitPat("b101101???????????011?????1010111")
707  def VNCLIPU_WI         = BitPat("b101110???????????011?????1010111")
708  def VNCLIP_WI          = BitPat("b101111???????????011?????1010111")
709  def VREDSUM_VS         = BitPat("b000000???????????010?????1010111")
710  def VREDAND_VS         = BitPat("b000001???????????010?????1010111")
711  def VREDOR_VS          = BitPat("b000010???????????010?????1010111")
712  def VREDXOR_VS         = BitPat("b000011???????????010?????1010111")
713  def VREDMINU_VS        = BitPat("b000100???????????010?????1010111")
714  def VREDMIN_VS         = BitPat("b000101???????????010?????1010111")
715  def VREDMAXU_VS        = BitPat("b000110???????????010?????1010111")
716  def VREDMAX_VS         = BitPat("b000111???????????010?????1010111")
717  def VAADDU_VV          = BitPat("b001000???????????010?????1010111")
718  def VAADD_VV           = BitPat("b001001???????????010?????1010111")
719  def VASUBU_VV          = BitPat("b001010???????????010?????1010111")
720  def VASUB_VV           = BitPat("b001011???????????010?????1010111")
721  def VMV_X_S            = BitPat("b0100001?????00000010?????1010111")
722  def VZEXT_VF8          = BitPat("b010010??????00010010?????1010111")
723  def VSEXT_VF8          = BitPat("b010010??????00011010?????1010111")
724  def VZEXT_VF4          = BitPat("b010010??????00100010?????1010111")
725  def VSEXT_VF4          = BitPat("b010010??????00101010?????1010111")
726  def VZEXT_VF2          = BitPat("b010010??????00110010?????1010111")
727  def VSEXT_VF2          = BitPat("b010010??????00111010?????1010111")
728  def VCOMPRESS_VM       = BitPat("b0101111??????????010?????1010111")
729  def VMANDNOT_MM        = BitPat("b011000???????????010?????1010111")
730  def VMAND_MM           = BitPat("b011001???????????010?????1010111")
731  def VMOR_MM            = BitPat("b011010???????????010?????1010111")
732  def VMXOR_MM           = BitPat("b011011???????????010?????1010111")
733  def VMORNOT_MM         = BitPat("b011100???????????010?????1010111")
734  def VMNAND_MM          = BitPat("b011101???????????010?????1010111")
735  def VMNOR_MM           = BitPat("b011110???????????010?????1010111")
736  def VMXNOR_MM          = BitPat("b011111???????????010?????1010111")
737  def VMSBF_M            = BitPat("b010100??????00001010?????1010111")
738  def VMSOF_M            = BitPat("b010100??????00010010?????1010111")
739  def VMSIF_M            = BitPat("b010100??????00011010?????1010111")
740  def VIOTA_M            = BitPat("b010100??????10000010?????1010111")
741  def VID_V              = BitPat("b010100?0000010001010?????1010111")
742  def VPOPC_M            = BitPat("b010000??????10000010?????1010111")
743  def VFIRST_M           = BitPat("b010000??????10001010?????1010111")
744  def VDIVU_VV           = BitPat("b100000???????????010?????1010111")
745  def VDIV_VV            = BitPat("b100001???????????010?????1010111")
746  def VREMU_VV           = BitPat("b100010???????????010?????1010111")
747  def VREM_VV            = BitPat("b100011???????????010?????1010111")
748  def VMULHU_VV          = BitPat("b100100???????????010?????1010111")
749  def VMUL_VV            = BitPat("b100101???????????010?????1010111")
750  def VMULHSU_VV         = BitPat("b100110???????????010?????1010111")
751  def VMULH_VV           = BitPat("b100111???????????010?????1010111")
752  def VMADD_VV           = BitPat("b101001???????????010?????1010111")
753  def VNMSUB_VV          = BitPat("b101011???????????010?????1010111")
754  def VMACC_VV           = BitPat("b101101???????????010?????1010111")
755  def VNMSAC_VV          = BitPat("b101111???????????010?????1010111")
756  def VWADDU_VV          = BitPat("b110000???????????010?????1010111")
757  def VWADD_VV           = BitPat("b110001???????????010?????1010111")
758  def VWSUBU_VV          = BitPat("b110010???????????010?????1010111")
759  def VWSUB_VV           = BitPat("b110011???????????010?????1010111")
760  def VWADDU_WV          = BitPat("b110100???????????010?????1010111")
761  def VWADD_WV           = BitPat("b110101???????????010?????1010111")
762  def VWSUBU_WV          = BitPat("b110110???????????010?????1010111")
763  def VWSUB_WV           = BitPat("b110111???????????010?????1010111")
764  def VWMULU_VV          = BitPat("b111000???????????010?????1010111")
765  def VWMULSU_VV         = BitPat("b111010???????????010?????1010111")
766  def VWMUL_VV           = BitPat("b111011???????????010?????1010111")
767  def VWMACCU_VV         = BitPat("b111100???????????010?????1010111")
768  def VWMACC_VV          = BitPat("b111101???????????010?????1010111")
769  def VWMACCSU_VV        = BitPat("b111111???????????010?????1010111")
770  def VAADDU_VX          = BitPat("b001000???????????110?????1010111")
771  def VAADD_VX           = BitPat("b001001???????????110?????1010111")
772  def VASUBU_VX          = BitPat("b001010???????????110?????1010111")
773  def VASUB_VX           = BitPat("b001011???????????110?????1010111")
774  def VMV_S_X            = BitPat("b010000100000?????110?????1010111")
775  def VSLIDE1UP_VX       = BitPat("b001110???????????110?????1010111")
776  def VSLIDE1DOWN_VX     = BitPat("b001111???????????110?????1010111")
777  def VDIVU_VX           = BitPat("b100000???????????110?????1010111")
778  def VDIV_VX            = BitPat("b100001???????????110?????1010111")
779  def VREMU_VX           = BitPat("b100010???????????110?????1010111")
780  def VREM_VX            = BitPat("b100011???????????110?????1010111")
781  def VMULHU_VX          = BitPat("b100100???????????110?????1010111")
782  def VMUL_VX            = BitPat("b100101???????????110?????1010111")
783  def VMULHSU_VX         = BitPat("b100110???????????110?????1010111")
784  def VMULH_VX           = BitPat("b100111???????????110?????1010111")
785  def VMADD_VX           = BitPat("b101001???????????110?????1010111")
786  def VNMSUB_VX          = BitPat("b101011???????????110?????1010111")
787  def VMACC_VX           = BitPat("b101101???????????110?????1010111")
788  def VNMSAC_VX          = BitPat("b101111???????????110?????1010111")
789  def VWADDU_VX          = BitPat("b110000???????????110?????1010111")
790  def VWADD_VX           = BitPat("b110001???????????110?????1010111")
791  def VWSUBU_VX          = BitPat("b110010???????????110?????1010111")
792  def VWSUB_VX           = BitPat("b110011???????????110?????1010111")
793  def VWADDU_WX          = BitPat("b110100???????????110?????1010111")
794  def VWADD_WX           = BitPat("b110101???????????110?????1010111")
795  def VWSUBU_WX          = BitPat("b110110???????????110?????1010111")
796  def VWSUB_WX           = BitPat("b110111???????????110?????1010111")
797  def VWMULU_VX          = BitPat("b111000???????????110?????1010111")
798  def VWMULSU_VX         = BitPat("b111010???????????110?????1010111")
799  def VWMUL_VX           = BitPat("b111011???????????110?????1010111")
800  def VWMACCU_VX         = BitPat("b111100???????????110?????1010111")
801  def VWMACC_VX          = BitPat("b111101???????????110?????1010111")
802  def VWMACCUS_VX        = BitPat("b111110???????????110?????1010111")
803  def VWMACCSU_VX        = BitPat("b111111???????????110?????1010111")
804  def VAMOSWAPEI8_V      = BitPat("b00001????????????000?????0101111")
805  def VAMOADDEI8_V       = BitPat("b00000????????????000?????0101111")
806  def VAMOXOREI8_V       = BitPat("b00100????????????000?????0101111")
807  def VAMOANDEI8_V       = BitPat("b01100????????????000?????0101111")
808  def VAMOOREI8_V        = BitPat("b01000????????????000?????0101111")
809  def VAMOMINEI8_V       = BitPat("b10000????????????000?????0101111")
810  def VAMOMAXEI8_V       = BitPat("b10100????????????000?????0101111")
811  def VAMOMINUEI8_V      = BitPat("b11000????????????000?????0101111")
812  def VAMOMAXUEI8_V      = BitPat("b11100????????????000?????0101111")
813  def VAMOSWAPEI16_V     = BitPat("b00001????????????101?????0101111")
814  def VAMOADDEI16_V      = BitPat("b00000????????????101?????0101111")
815  def VAMOXOREI16_V      = BitPat("b00100????????????101?????0101111")
816  def VAMOANDEI16_V      = BitPat("b01100????????????101?????0101111")
817  def VAMOOREI16_V       = BitPat("b01000????????????101?????0101111")
818  def VAMOMINEI16_V      = BitPat("b10000????????????101?????0101111")
819  def VAMOMAXEI16_V      = BitPat("b10100????????????101?????0101111")
820  def VAMOMINUEI16_V     = BitPat("b11000????????????101?????0101111")
821  def VAMOMAXUEI16_V     = BitPat("b11100????????????101?????0101111")
822  def VAMOSWAPEI32_V     = BitPat("b00001????????????110?????0101111")
823  def VAMOADDEI32_V      = BitPat("b00000????????????110?????0101111")
824  def VAMOXOREI32_V      = BitPat("b00100????????????110?????0101111")
825  def VAMOANDEI32_V      = BitPat("b01100????????????110?????0101111")
826  def VAMOOREI32_V       = BitPat("b01000????????????110?????0101111")
827  def VAMOMINEI32_V      = BitPat("b10000????????????110?????0101111")
828  def VAMOMAXEI32_V      = BitPat("b10100????????????110?????0101111")
829  def VAMOMINUEI32_V     = BitPat("b11000????????????110?????0101111")
830  def VAMOMAXUEI32_V     = BitPat("b11100????????????110?????0101111")
831  def VAMOSWAPEI64_V     = BitPat("b00001????????????111?????0101111")
832  def VAMOADDEI64_V      = BitPat("b00000????????????111?????0101111")
833  def VAMOXOREI64_V      = BitPat("b00100????????????111?????0101111")
834  def VAMOANDEI64_V      = BitPat("b01100????????????111?????0101111")
835  def VAMOOREI64_V       = BitPat("b01000????????????111?????0101111")
836  def VAMOMINEI64_V      = BitPat("b10000????????????111?????0101111")
837  def VAMOMAXEI64_V      = BitPat("b10100????????????111?????0101111")
838  def VAMOMINUEI64_V     = BitPat("b11000????????????111?????0101111")
839  def VAMOMAXUEI64_V     = BitPat("b11100????????????111?????0101111")
840  def VMVNFR_V           = BitPat("b1001111??????????011?????1010111")
841  def SLLI_RV32          = BitPat("b0000000??????????001?????0010011")
842  def SRLI_RV32          = BitPat("b0000000??????????101?????0010011")
843  def SRAI_RV32          = BitPat("b0100000??????????101?????0010011")
844  def RORI_RV32          = BitPat("b0110000??????????101?????0010011")
845  def FRFLAGS            = BitPat("b00000000000100000010?????1110011")
846  def FSFLAGS            = BitPat("b000000000001?????001?????1110011")
847  def FSFLAGSI           = BitPat("b000000000001?????101?????1110011")
848  def FRRM               = BitPat("b00000000001000000010?????1110011")
849  def FSRM               = BitPat("b000000000010?????001?????1110011")
850  def FSRMI              = BitPat("b000000000010?????101?????1110011")
851  def FSCSR              = BitPat("b000000000011?????001?????1110011")
852  def FRCSR              = BitPat("b00000000001100000010?????1110011")
853  def RDCYCLE            = BitPat("b11000000000000000010?????1110011")
854  def RDTIME             = BitPat("b11000000000100000010?????1110011")
855  def RDINSTRET          = BitPat("b11000000001000000010?????1110011")
856  def RDCYCLEH           = BitPat("b11001000000000000010?????1110011")
857  def RDTIMEH            = BitPat("b11001000000100000010?????1110011")
858  def RDINSTRETH         = BitPat("b11001000001000000010?????1110011")
859  def SCALL              = BitPat("b00000000000000000000000001110011")
860  def SBREAK             = BitPat("b00000000000100000000000001110011")
861  def FMV_X_S            = BitPat("b111000000000?????000?????1010011")
862  def FMV_S_X            = BitPat("b111100000000?????000?????1010011")
863  def FENCE_TSO          = BitPat("b100000110011?????000?????0001111")
864  def PAUSE              = BitPat("b00000001000000000000000000001111")
865
866  // Cryptography Extension
867  def AES64ES            = BitPat("b0011001??????????000?????0110011")
868  def AES64ESM           = BitPat("b0011011??????????000?????0110011")
869  def AES64DS            = BitPat("b0011101??????????000?????0110011")
870  def AES64DSM           = BitPat("b0011111??????????000?????0110011")
871  def AES64IM            = BitPat("b001100000000?????001?????0010011")
872  def AES64KS1I          = BitPat("b00110001?????????001?????0010011")
873  def AES64KS2           = BitPat("b0111111??????????000?????0110011")
874  def SHA256SUM0         = BitPat("b000100000000?????001?????0010011")
875  def SHA256SUM1         = BitPat("b000100000001?????001?????0010011")
876  def SHA256SIG0         = BitPat("b000100000010?????001?????0010011")
877  def SHA256SIG1         = BitPat("b000100000011?????001?????0010011")
878  def SHA512SUM0         = BitPat("b000100000100?????001?????0010011")
879  def SHA512SUM1         = BitPat("b000100000101?????001?????0010011")
880  def SHA512SIG0         = BitPat("b000100000110?????001?????0010011")
881  def SHA512SIG1         = BitPat("b000100000111?????001?????0010011")
882  def SM3P0              = BitPat("b000100001000?????001?????0010011")
883  def SM3P1              = BitPat("b000100001001?????001?????0010011")
884  def SM4KS0             = BitPat("b0011000??????????000?????0110011")
885  def SM4KS1             = BitPat("b0111000??????????000?????0110011")
886  def SM4KS2             = BitPat("b1011000??????????000?????0110011")
887  def SM4KS3             = BitPat("b1111000??????????000?????0110011")
888  def SM4ED0             = BitPat("b0011010??????????000?????0110011")
889  def SM4ED1             = BitPat("b0111010??????????000?????0110011")
890  def SM4ED2             = BitPat("b1011010??????????000?????0110011")
891  def SM4ED3             = BitPat("b1111010??????????000?????0110011")
892}
893