xref: /openbmc/qemu/target/loongarch/insns.decode (revision 2cfb3b6c)
1# SPDX-License-Identifier: GPL-2.0-or-later
2#
3# LoongArch instruction decode definitions.
4#
5# Copyright (c) 2021 Loongson Technology Corporation Limited
6#
7
8#
9# Fields
10#
11%i14s2     10:s14       !function=shl_2
12%sa2p1     15:2         !function=plus_1
13%offs21    0:s5 10:16   !function=shl_2
14%offs16    10:s16       !function=shl_2
15%offs26    0:s10 10:16  !function=shl_2
16
17#
18# Argument sets
19#
20&i            imm
21&r_i          rd imm
22&rr           rd rj
23&rr_jk        rj rk
24&rrr          rd rj rk
25&rr_i         rd rj imm
26&hint_r_i     hint rj imm
27&rrr_sa       rd rj rk sa
28&rr_ms_ls     rd rj ms ls
29&ff           fd fj
30&fff          fd fj fk
31&ffff         fd fj fk fa
32&cff_fcond    cd fj fk fcond
33&fffc         fd fj fk ca
34&fr           fd rj
35&rf           rd fj
36&fcsrd_r      fcsrd rj
37&r_fcsrs      rd fcsrs
38&cf           cd fj
39&fc           fd cj
40&cr           cd rj
41&rc           rd cj
42&frr          fd rj rk
43&fr_i         fd rj imm
44&r_offs       rj offs
45&c_offs       cj offs
46&offs         offs
47&rr_offs      rj rd offs
48&r_csr        rd csr
49&rr_csr       rd rj csr
50&empty
51&i_rr         imm rj rk
52&cop_r_i      cop rj imm
53&j_i          rj imm
54
55#
56# Formats
57#
58@i15                       .... ........ ..... imm:15    &i
59@rr               .... ........ ..... ..... rj:5 rd:5    &rr
60@rr_jk            .... ........ ..... rk:5 rj:5 .....    &rr_jk
61@rrr               .... ........ ..... rk:5 rj:5 rd:5    &rrr
62@r_i20                          .... ... imm:s20 rd:5    &r_i
63@rr_ui5           .... ........ ..... imm:5 rj:5 rd:5    &rr_i
64@rr_ui6            .... ........ .... imm:6 rj:5 rd:5    &rr_i
65@rr_ui8              .. ........ .... imm:8 rj:5 rd:5    &rr_i
66@rr_i12                 .... ...... imm:s12 rj:5 rd:5    &rr_i
67@rr_ui12                 .... ...... imm:12 rj:5 rd:5    &rr_i
68@rr_i14s2         .... ....  .............. rj:5 rd:5    &rr_i imm=%i14s2
69@rr_i16                     .... .. imm:s16 rj:5 rd:5    &rr_i
70@rr_i16s2         .... ..  ................ rj:5 rd:5    &rr_i imm=%offs16
71@hint_r_i12           .... ...... imm:s12 rj:5 hint:5    &hint_r_i
72@rrr_sa2p1        .... ........ ... .. rk:5 rj:5 rd:5    &rrr_sa  sa=%sa2p1
73@rrr_sa2        .... ........ ... sa:2 rk:5 rj:5 rd:5    &rrr_sa
74@rrr_sa3         .... ........ .. sa:3 rk:5 rj:5 rd:5    &rrr_sa
75@rr_2bw            .... ....... ms:5 . ls:5 rj:5 rd:5    &rr_ms_ls
76@rr_2bd               .... ...... ms:6 ls:6 rj:5 rd:5    &rr_ms_ls
77@ff               .... ........ ..... ..... fj:5 fd:5    &ff
78@fff               .... ........ ..... fk:5 fj:5 fd:5    &fff
79@ffff               .... ........ fa:5 fk:5 fj:5 fd:5    &ffff
80@cff_fcond    .... ........ fcond:5 fk:5 fj:5 .. cd:3    &cff_fcond
81@fffc            .... ........ .. ca:3 fk:5 fj:5 fd:5    &fffc
82@fr               .... ........ ..... ..... rj:5 fd:5    &fr
83@rf               .... ........ ..... ..... fj:5 rd:5    &rf
84@fcsrd_r       .... ........ ..... ..... rj:5 fcsrd:5    &fcsrd_r
85@r_fcsrs       .... ........ ..... ..... fcsrs:5 rd:5    &r_fcsrs
86@cf            .... ........ ..... ..... fj:5 .. cd:3    &cf
87@fc            .... ........ ..... ..... .. cj:3 fd:5    &fc
88@cr            .... ........ ..... ..... rj:5 .. cd:3    &cr
89@rc            .... ........ ..... ..... .. cj:3 rd:5    &rc
90@frr               .... ........ ..... rk:5 rj:5 fd:5    &frr
91@fr_i12                 .... ...... imm:s12 rj:5 fd:5    &fr_i
92@r_offs21         .... .. ................ rj:5 .....    &r_offs      offs=%offs21
93@c_offs21      .... .. ................ .. cj:3 .....    &c_offs      offs=%offs21
94@offs26            .... .. ..........................    &offs        offs=%offs26
95@rr_offs16         .... .. ................ rj:5 rd:5    &rr_offs     offs=%offs16
96@r_csr                    .... .... csr:14 ..... rd:5    &r_csr
97@rr_csr                    .... .... csr:14 rj:5 rd:5    &rr_csr
98@empty          .... ........ ..... ..... ..... .....    &empty
99@i_rr             ...... ...... ..... rk:5 rj:5 imm:5    &i_rr
100@cop_r_i              .... ......  imm:s12 rj:5 cop:5    &cop_r_i
101@j_i               .... ........ .. imm:8 rj:5 .....    &j_i
102
103#
104# Fixed point arithmetic operation instruction
105#
106add_w           0000 00000001 00000 ..... ..... .....    @rrr
107add_d           0000 00000001 00001 ..... ..... .....    @rrr
108sub_w           0000 00000001 00010 ..... ..... .....    @rrr
109sub_d           0000 00000001 00011 ..... ..... .....    @rrr
110slt             0000 00000001 00100 ..... ..... .....    @rrr
111sltu            0000 00000001 00101 ..... ..... .....    @rrr
112slti            0000 001000 ............ ..... .....     @rr_i12
113sltui           0000 001001 ............ ..... .....     @rr_i12
114nor             0000 00000001 01000 ..... ..... .....    @rrr
115and             0000 00000001 01001 ..... ..... .....    @rrr
116or              0000 00000001 01010 ..... ..... .....    @rrr
117xor             0000 00000001 01011 ..... ..... .....    @rrr
118orn             0000 00000001 01100 ..... ..... .....    @rrr
119andn            0000 00000001 01101 ..... ..... .....    @rrr
120mul_w           0000 00000001 11000 ..... ..... .....    @rrr
121mulh_w          0000 00000001 11001 ..... ..... .....    @rrr
122mulh_wu         0000 00000001 11010 ..... ..... .....    @rrr
123mul_d           0000 00000001 11011 ..... ..... .....    @rrr
124mulh_d          0000 00000001 11100 ..... ..... .....    @rrr
125mulh_du         0000 00000001 11101 ..... ..... .....    @rrr
126mulw_d_w        0000 00000001 11110 ..... ..... .....    @rrr
127mulw_d_wu       0000 00000001 11111 ..... ..... .....    @rrr
128div_w           0000 00000010 00000 ..... ..... .....    @rrr
129mod_w           0000 00000010 00001 ..... ..... .....    @rrr
130div_wu          0000 00000010 00010 ..... ..... .....    @rrr
131mod_wu          0000 00000010 00011 ..... ..... .....    @rrr
132div_d           0000 00000010 00100 ..... ..... .....    @rrr
133mod_d           0000 00000010 00101 ..... ..... .....    @rrr
134div_du          0000 00000010 00110 ..... ..... .....    @rrr
135mod_du          0000 00000010 00111 ..... ..... .....    @rrr
136alsl_w          0000 00000000 010 .. ..... ..... .....   @rrr_sa2p1
137alsl_wu         0000 00000000 011 .. ..... ..... .....   @rrr_sa2p1
138alsl_d          0000 00000010 110 .. ..... ..... .....   @rrr_sa2p1
139lu12i_w         0001 010 .................... .....      @r_i20
140lu32i_d         0001 011 .................... .....      @r_i20
141lu52i_d         0000 001100 ............ ..... .....     @rr_i12
142pcaddi          0001 100 .................... .....      @r_i20
143pcalau12i       0001 101 .................... .....      @r_i20
144pcaddu12i       0001 110 .................... .....      @r_i20
145pcaddu18i       0001 111 .................... .....      @r_i20
146addi_w          0000 001010 ............ ..... .....     @rr_i12
147addi_d          0000 001011 ............ ..... .....     @rr_i12
148addu16i_d       0001 00 ................ ..... .....     @rr_i16
149andi            0000 001101 ............ ..... .....     @rr_ui12
150ori             0000 001110 ............ ..... .....     @rr_ui12
151xori            0000 001111 ............ ..... .....     @rr_ui12
152
153#
154# Fixed point shift operation instruction
155#
156sll_w           0000 00000001 01110 ..... ..... .....    @rrr
157srl_w           0000 00000001 01111 ..... ..... .....    @rrr
158sra_w           0000 00000001 10000 ..... ..... .....    @rrr
159sll_d           0000 00000001 10001 ..... ..... .....    @rrr
160srl_d           0000 00000001 10010 ..... ..... .....    @rrr
161sra_d           0000 00000001 10011 ..... ..... .....    @rrr
162rotr_w          0000 00000001 10110 ..... ..... .....    @rrr
163rotr_d          0000 00000001 10111 ..... ..... .....    @rrr
164slli_w          0000 00000100 00001 ..... ..... .....    @rr_ui5
165slli_d          0000 00000100 0001 ...... ..... .....    @rr_ui6
166srli_w          0000 00000100 01001 ..... ..... .....    @rr_ui5
167srli_d          0000 00000100 0101 ...... ..... .....    @rr_ui6
168srai_w          0000 00000100 10001 ..... ..... .....    @rr_ui5
169srai_d          0000 00000100 1001 ...... ..... .....    @rr_ui6
170rotri_w         0000 00000100 11001 ..... ..... .....    @rr_ui5
171rotri_d         0000 00000100 1101 ...... ..... .....    @rr_ui6
172
173#
174# Fixed point bit operation instruction
175#
176ext_w_h         0000 00000000 00000 10110 ..... .....    @rr
177ext_w_b         0000 00000000 00000 10111 ..... .....    @rr
178clo_w           0000 00000000 00000 00100 ..... .....    @rr
179clz_w           0000 00000000 00000 00101 ..... .....    @rr
180cto_w           0000 00000000 00000 00110 ..... .....    @rr
181ctz_w           0000 00000000 00000 00111 ..... .....    @rr
182clo_d           0000 00000000 00000 01000 ..... .....    @rr
183clz_d           0000 00000000 00000 01001 ..... .....    @rr
184cto_d           0000 00000000 00000 01010 ..... .....    @rr
185ctz_d           0000 00000000 00000 01011 ..... .....    @rr
186revb_2h         0000 00000000 00000 01100 ..... .....    @rr
187revb_4h         0000 00000000 00000 01101 ..... .....    @rr
188revb_2w         0000 00000000 00000 01110 ..... .....    @rr
189revb_d          0000 00000000 00000 01111 ..... .....    @rr
190revh_2w         0000 00000000 00000 10000 ..... .....    @rr
191revh_d          0000 00000000 00000 10001 ..... .....    @rr
192bitrev_4b       0000 00000000 00000 10010 ..... .....    @rr
193bitrev_8b       0000 00000000 00000 10011 ..... .....    @rr
194bitrev_w        0000 00000000 00000 10100 ..... .....    @rr
195bitrev_d        0000 00000000 00000 10101 ..... .....    @rr
196bytepick_w      0000 00000000 100 .. ..... ..... .....   @rrr_sa2
197bytepick_d      0000 00000000 11 ... ..... ..... .....   @rrr_sa3
198maskeqz         0000 00000001 00110 ..... ..... .....    @rrr
199masknez         0000 00000001 00111 ..... ..... .....    @rrr
200bstrins_w       0000 0000011 ..... 0 ..... ..... .....   @rr_2bw
201bstrpick_w      0000 0000011 ..... 1 ..... ..... .....   @rr_2bw
202bstrins_d       0000 000010 ...... ...... ..... .....    @rr_2bd
203bstrpick_d      0000 000011 ...... ...... ..... .....    @rr_2bd
204
205#
206# Fixed point load/store instruction
207#
208ld_b            0010 100000 ............ ..... .....     @rr_i12
209ld_h            0010 100001 ............ ..... .....     @rr_i12
210ld_w            0010 100010 ............ ..... .....     @rr_i12
211ld_d            0010 100011 ............ ..... .....     @rr_i12
212st_b            0010 100100 ............ ..... .....     @rr_i12
213st_h            0010 100101 ............ ..... .....     @rr_i12
214st_w            0010 100110 ............ ..... .....     @rr_i12
215st_d            0010 100111 ............ ..... .....     @rr_i12
216ld_bu           0010 101000 ............ ..... .....     @rr_i12
217ld_hu           0010 101001 ............ ..... .....     @rr_i12
218ld_wu           0010 101010 ............ ..... .....     @rr_i12
219ldx_b           0011 10000000 00000 ..... ..... .....    @rrr
220ldx_h           0011 10000000 01000 ..... ..... .....    @rrr
221ldx_w           0011 10000000 10000 ..... ..... .....    @rrr
222ldx_d           0011 10000000 11000 ..... ..... .....    @rrr
223stx_b           0011 10000001 00000 ..... ..... .....    @rrr
224stx_h           0011 10000001 01000 ..... ..... .....    @rrr
225stx_w           0011 10000001 10000 ..... ..... .....    @rrr
226stx_d           0011 10000001 11000 ..... ..... .....    @rrr
227ldx_bu          0011 10000010 00000 ..... ..... .....    @rrr
228ldx_hu          0011 10000010 01000 ..... ..... .....    @rrr
229ldx_wu          0011 10000010 10000 ..... ..... .....    @rrr
230preld           0010 101011 ............ ..... .....     @hint_r_i12
231dbar            0011 10000111 00100 ...............      @i15
232ibar            0011 10000111 00101 ...............      @i15
233ldptr_w         0010 0100 .............. ..... .....     @rr_i14s2
234stptr_w         0010 0101 .............. ..... .....     @rr_i14s2
235ldptr_d         0010 0110 .............. ..... .....     @rr_i14s2
236stptr_d         0010 0111 .............. ..... .....     @rr_i14s2
237ldgt_b          0011 10000111 10000 ..... ..... .....    @rrr
238ldgt_h          0011 10000111 10001 ..... ..... .....    @rrr
239ldgt_w          0011 10000111 10010 ..... ..... .....    @rrr
240ldgt_d          0011 10000111 10011 ..... ..... .....    @rrr
241ldle_b          0011 10000111 10100 ..... ..... .....    @rrr
242ldle_h          0011 10000111 10101 ..... ..... .....    @rrr
243ldle_w          0011 10000111 10110 ..... ..... .....    @rrr
244ldle_d          0011 10000111 10111 ..... ..... .....    @rrr
245stgt_b          0011 10000111 11000 ..... ..... .....    @rrr
246stgt_h          0011 10000111 11001 ..... ..... .....    @rrr
247stgt_w          0011 10000111 11010 ..... ..... .....    @rrr
248stgt_d          0011 10000111 11011 ..... ..... .....    @rrr
249stle_b          0011 10000111 11100 ..... ..... .....    @rrr
250stle_h          0011 10000111 11101 ..... ..... .....    @rrr
251stle_w          0011 10000111 11110 ..... ..... .....    @rrr
252stle_d          0011 10000111 11111 ..... ..... .....    @rrr
253
254#
255# Fixed point atomic instruction
256#
257ll_w            0010 0000 .............. ..... .....     @rr_i14s2
258sc_w            0010 0001 .............. ..... .....     @rr_i14s2
259ll_d            0010 0010 .............. ..... .....     @rr_i14s2
260sc_d            0010 0011 .............. ..... .....     @rr_i14s2
261amswap_w        0011 10000110 00000 ..... ..... .....    @rrr
262amswap_d        0011 10000110 00001 ..... ..... .....    @rrr
263amadd_w         0011 10000110 00010 ..... ..... .....    @rrr
264amadd_d         0011 10000110 00011 ..... ..... .....    @rrr
265amand_w         0011 10000110 00100 ..... ..... .....    @rrr
266amand_d         0011 10000110 00101 ..... ..... .....    @rrr
267amor_w          0011 10000110 00110 ..... ..... .....    @rrr
268amor_d          0011 10000110 00111 ..... ..... .....    @rrr
269amxor_w         0011 10000110 01000 ..... ..... .....    @rrr
270amxor_d         0011 10000110 01001 ..... ..... .....    @rrr
271ammax_w         0011 10000110 01010 ..... ..... .....    @rrr
272ammax_d         0011 10000110 01011 ..... ..... .....    @rrr
273ammin_w         0011 10000110 01100 ..... ..... .....    @rrr
274ammin_d         0011 10000110 01101 ..... ..... .....    @rrr
275ammax_wu        0011 10000110 01110 ..... ..... .....    @rrr
276ammax_du        0011 10000110 01111 ..... ..... .....    @rrr
277ammin_wu        0011 10000110 10000 ..... ..... .....    @rrr
278ammin_du        0011 10000110 10001 ..... ..... .....    @rrr
279amswap_db_w     0011 10000110 10010 ..... ..... .....    @rrr
280amswap_db_d     0011 10000110 10011 ..... ..... .....    @rrr
281amadd_db_w      0011 10000110 10100 ..... ..... .....    @rrr
282amadd_db_d      0011 10000110 10101 ..... ..... .....    @rrr
283amand_db_w      0011 10000110 10110 ..... ..... .....    @rrr
284amand_db_d      0011 10000110 10111 ..... ..... .....    @rrr
285amor_db_w       0011 10000110 11000 ..... ..... .....    @rrr
286amor_db_d       0011 10000110 11001 ..... ..... .....    @rrr
287amxor_db_w      0011 10000110 11010 ..... ..... .....    @rrr
288amxor_db_d      0011 10000110 11011 ..... ..... .....    @rrr
289ammax_db_w      0011 10000110 11100 ..... ..... .....    @rrr
290ammax_db_d      0011 10000110 11101 ..... ..... .....    @rrr
291ammin_db_w      0011 10000110 11110 ..... ..... .....    @rrr
292ammin_db_d      0011 10000110 11111 ..... ..... .....    @rrr
293ammax_db_wu     0011 10000111 00000 ..... ..... .....    @rrr
294ammax_db_du     0011 10000111 00001 ..... ..... .....    @rrr
295ammin_db_wu     0011 10000111 00010 ..... ..... .....    @rrr
296ammin_db_du     0011 10000111 00011 ..... ..... .....    @rrr
297
298#
299# Fixed point extra instruction
300#
301crc_w_b_w       0000 00000010 01000 ..... ..... .....    @rrr
302crc_w_h_w       0000 00000010 01001 ..... ..... .....    @rrr
303crc_w_w_w       0000 00000010 01010 ..... ..... .....    @rrr
304crc_w_d_w       0000 00000010 01011 ..... ..... .....    @rrr
305crcc_w_b_w      0000 00000010 01100 ..... ..... .....    @rrr
306crcc_w_h_w      0000 00000010 01101 ..... ..... .....    @rrr
307crcc_w_w_w      0000 00000010 01110 ..... ..... .....    @rrr
308crcc_w_d_w      0000 00000010 01111 ..... ..... .....    @rrr
309break           0000 00000010 10100 ...............      @i15
310syscall         0000 00000010 10110 ...............      @i15
311asrtle_d        0000 00000000 00010 ..... ..... 00000    @rr_jk
312asrtgt_d        0000 00000000 00011 ..... ..... 00000    @rr_jk
313rdtimel_w       0000 00000000 00000 11000 ..... .....    @rr
314rdtimeh_w       0000 00000000 00000 11001 ..... .....    @rr
315rdtime_d        0000 00000000 00000 11010 ..... .....    @rr
316cpucfg          0000 00000000 00000 11011 ..... .....    @rr
317
318#
319# Floating point arithmetic operation instruction
320#
321fadd_s          0000 00010000 00001 ..... ..... .....    @fff
322fadd_d          0000 00010000 00010 ..... ..... .....    @fff
323fsub_s          0000 00010000 00101 ..... ..... .....    @fff
324fsub_d          0000 00010000 00110 ..... ..... .....    @fff
325fmul_s          0000 00010000 01001 ..... ..... .....    @fff
326fmul_d          0000 00010000 01010 ..... ..... .....    @fff
327fdiv_s          0000 00010000 01101 ..... ..... .....    @fff
328fdiv_d          0000 00010000 01110 ..... ..... .....    @fff
329fmadd_s         0000 10000001 ..... ..... ..... .....    @ffff
330fmadd_d         0000 10000010 ..... ..... ..... .....    @ffff
331fmsub_s         0000 10000101 ..... ..... ..... .....    @ffff
332fmsub_d         0000 10000110 ..... ..... ..... .....    @ffff
333fnmadd_s        0000 10001001 ..... ..... ..... .....    @ffff
334fnmadd_d        0000 10001010 ..... ..... ..... .....    @ffff
335fnmsub_s        0000 10001101 ..... ..... ..... .....    @ffff
336fnmsub_d        0000 10001110 ..... ..... ..... .....    @ffff
337fmax_s          0000 00010000 10001 ..... ..... .....    @fff
338fmax_d          0000 00010000 10010 ..... ..... .....    @fff
339fmin_s          0000 00010000 10101 ..... ..... .....    @fff
340fmin_d          0000 00010000 10110 ..... ..... .....    @fff
341fmaxa_s         0000 00010000 11001 ..... ..... .....    @fff
342fmaxa_d         0000 00010000 11010 ..... ..... .....    @fff
343fmina_s         0000 00010000 11101 ..... ..... .....    @fff
344fmina_d         0000 00010000 11110 ..... ..... .....    @fff
345fabs_s          0000 00010001 01000 00001 ..... .....    @ff
346fabs_d          0000 00010001 01000 00010 ..... .....    @ff
347fneg_s          0000 00010001 01000 00101 ..... .....    @ff
348fneg_d          0000 00010001 01000 00110 ..... .....    @ff
349fsqrt_s         0000 00010001 01000 10001 ..... .....    @ff
350fsqrt_d         0000 00010001 01000 10010 ..... .....    @ff
351frecip_s        0000 00010001 01000 10101 ..... .....    @ff
352frecip_d        0000 00010001 01000 10110 ..... .....    @ff
353frsqrt_s        0000 00010001 01000 11001 ..... .....    @ff
354frsqrt_d        0000 00010001 01000 11010 ..... .....    @ff
355fscaleb_s       0000 00010001 00001 ..... ..... .....    @fff
356fscaleb_d       0000 00010001 00010 ..... ..... .....    @fff
357flogb_s         0000 00010001 01000 01001 ..... .....    @ff
358flogb_d         0000 00010001 01000 01010 ..... .....    @ff
359fcopysign_s     0000 00010001 00101 ..... ..... .....    @fff
360fcopysign_d     0000 00010001 00110 ..... ..... .....    @fff
361fclass_s        0000 00010001 01000 01101 ..... .....    @ff
362fclass_d        0000 00010001 01000 01110 ..... .....    @ff
363
364#
365# Floating point compare instruction
366#
367fcmp_cond_s     0000 11000001 ..... ..... ..... 00 ...   @cff_fcond
368fcmp_cond_d     0000 11000010 ..... ..... ..... 00 ...   @cff_fcond
369
370#
371# Floating point conversion instruction
372#
373fcvt_s_d        0000 00010001 10010 00110 ..... .....    @ff
374fcvt_d_s        0000 00010001 10010 01001 ..... .....    @ff
375ftintrm_w_s     0000 00010001 10100 00001 ..... .....    @ff
376ftintrm_w_d     0000 00010001 10100 00010 ..... .....    @ff
377ftintrm_l_s     0000 00010001 10100 01001 ..... .....    @ff
378ftintrm_l_d     0000 00010001 10100 01010 ..... .....    @ff
379ftintrp_w_s     0000 00010001 10100 10001 ..... .....    @ff
380ftintrp_w_d     0000 00010001 10100 10010 ..... .....    @ff
381ftintrp_l_s     0000 00010001 10100 11001 ..... .....    @ff
382ftintrp_l_d     0000 00010001 10100 11010 ..... .....    @ff
383ftintrz_w_s     0000 00010001 10101 00001 ..... .....    @ff
384ftintrz_w_d     0000 00010001 10101 00010 ..... .....    @ff
385ftintrz_l_s     0000 00010001 10101 01001 ..... .....    @ff
386ftintrz_l_d     0000 00010001 10101 01010 ..... .....    @ff
387ftintrne_w_s    0000 00010001 10101 10001 ..... .....    @ff
388ftintrne_w_d    0000 00010001 10101 10010 ..... .....    @ff
389ftintrne_l_s    0000 00010001 10101 11001 ..... .....    @ff
390ftintrne_l_d    0000 00010001 10101 11010 ..... .....    @ff
391ftint_w_s       0000 00010001 10110 00001 ..... .....    @ff
392ftint_w_d       0000 00010001 10110 00010 ..... .....    @ff
393ftint_l_s       0000 00010001 10110 01001 ..... .....    @ff
394ftint_l_d       0000 00010001 10110 01010 ..... .....    @ff
395ffint_s_w       0000 00010001 11010 00100 ..... .....    @ff
396ffint_s_l       0000 00010001 11010 00110 ..... .....    @ff
397ffint_d_w       0000 00010001 11010 01000 ..... .....    @ff
398ffint_d_l       0000 00010001 11010 01010 ..... .....    @ff
399frint_s         0000 00010001 11100 10001 ..... .....    @ff
400frint_d         0000 00010001 11100 10010 ..... .....    @ff
401
402#
403# Floating point move instruction
404#
405fmov_s          0000 00010001 01001 00101 ..... .....    @ff
406fmov_d          0000 00010001 01001 00110 ..... .....    @ff
407fsel            0000 11010000 00 ... ..... ..... .....   @fffc
408movgr2fr_w      0000 00010001 01001 01001 ..... .....    @fr
409movgr2fr_d      0000 00010001 01001 01010 ..... .....    @fr
410movgr2frh_w     0000 00010001 01001 01011 ..... .....    @fr
411movfr2gr_s      0000 00010001 01001 01101 ..... .....    @rf
412movfr2gr_d      0000 00010001 01001 01110 ..... .....    @rf
413movfrh2gr_s     0000 00010001 01001 01111 ..... .....    @rf
414movgr2fcsr      0000 00010001 01001 10000 ..... .....    @fcsrd_r
415movfcsr2gr      0000 00010001 01001 10010 ..... .....    @r_fcsrs
416movfr2cf        0000 00010001 01001 10100 ..... 00 ...   @cf
417movcf2fr        0000 00010001 01001 10101 00 ... .....   @fc
418movgr2cf        0000 00010001 01001 10110 ..... 00 ...   @cr
419movcf2gr        0000 00010001 01001 10111 00 ... .....   @rc
420
421#
422# Floating point load/store instruction
423#
424fld_s           0010 101100 ............ ..... .....     @fr_i12
425fst_s           0010 101101 ............ ..... .....     @fr_i12
426fld_d           0010 101110 ............ ..... .....     @fr_i12
427fst_d           0010 101111 ............ ..... .....     @fr_i12
428fldx_s          0011 10000011 00000 ..... ..... .....    @frr
429fldx_d          0011 10000011 01000 ..... ..... .....    @frr
430fstx_s          0011 10000011 10000 ..... ..... .....    @frr
431fstx_d          0011 10000011 11000 ..... ..... .....    @frr
432fldgt_s         0011 10000111 01000 ..... ..... .....    @frr
433fldgt_d         0011 10000111 01001 ..... ..... .....    @frr
434fldle_s         0011 10000111 01010 ..... ..... .....    @frr
435fldle_d         0011 10000111 01011 ..... ..... .....    @frr
436fstgt_s         0011 10000111 01100 ..... ..... .....    @frr
437fstgt_d         0011 10000111 01101 ..... ..... .....    @frr
438fstle_s         0011 10000111 01110 ..... ..... .....    @frr
439fstle_d         0011 10000111 01111 ..... ..... .....    @frr
440
441#
442# Branch instructions
443#
444beqz            0100 00 ................ ..... .....     @r_offs21
445bnez            0100 01 ................ ..... .....     @r_offs21
446bceqz           0100 10 ................ 00 ... .....    @c_offs21
447bcnez           0100 10 ................ 01 ... .....    @c_offs21
448jirl            0100 11 ................ ..... .....     @rr_i16s2
449b               0101 00 ..........................       @offs26
450bl              0101 01 ..........................       @offs26
451beq             0101 10 ................ ..... .....     @rr_offs16
452bne             0101 11 ................ ..... .....     @rr_offs16
453blt             0110 00 ................ ..... .....     @rr_offs16
454bge             0110 01 ................ ..... .....     @rr_offs16
455bltu            0110 10 ................ ..... .....     @rr_offs16
456bgeu            0110 11 ................ ..... .....     @rr_offs16
457
458#
459# Core instructions
460#
461{
462  csrrd             0000 0100 .............. 00000 .....     @r_csr
463  csrwr             0000 0100 .............. 00001 .....     @r_csr
464  csrxchg           0000 0100 .............. ..... .....     @rr_csr
465}
466
467iocsrrd_b        0000 01100100 10000 00000 ..... .....    @rr
468iocsrrd_h        0000 01100100 10000 00001 ..... .....    @rr
469iocsrrd_w        0000 01100100 10000 00010 ..... .....    @rr
470iocsrrd_d        0000 01100100 10000 00011 ..... .....    @rr
471iocsrwr_b        0000 01100100 10000 00100 ..... .....    @rr
472iocsrwr_h        0000 01100100 10000 00101 ..... .....    @rr
473iocsrwr_w        0000 01100100 10000 00110 ..... .....    @rr
474iocsrwr_d        0000 01100100 10000 00111 ..... .....    @rr
475tlbsrch          0000 01100100 10000 01010 00000 00000    @empty
476tlbrd            0000 01100100 10000 01011 00000 00000    @empty
477tlbwr            0000 01100100 10000 01100 00000 00000    @empty
478tlbfill          0000 01100100 10000 01101 00000 00000    @empty
479tlbclr           0000 01100100 10000 01000 00000 00000    @empty
480tlbflush         0000 01100100 10000 01001 00000 00000    @empty
481invtlb           0000 01100100 10011 ..... ..... .....    @i_rr
482cacop            0000 011000 ............ ..... .....     @cop_r_i
483lddir            0000 01100100 00 ........ ..... .....    @rr_ui8
484ldpte            0000 01100100 01 ........ ..... 00000    @j_i
485ertn             0000 01100100 10000 01110 00000 00000    @empty
486idle             0000 01100100 10001 ...............      @i15
487dbcl             0000 00000010 10101 ...............      @i15
488