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