1 # SPDX-License-Identifier: LGPL-2.0+
3 # Sparc instruction decode definitions.
4 # Copyright (c) 2023 Richard Henderson <rth@twiddle.net>
7 ## Major Opcodes 00 and 01 -- branches, call, and sethi.
11 BPcc 00 a:1 cond:4 001 cc:1 0 - i:s19 &bcc
12 Bicc 00 a:1 cond:4 010 i:s22 &bcc cc=0
13 FBPfcc 00 a:1 cond:4 101 cc:2 - i:s19 &bcc
14 FBfcc 00 a:1 cond:4 110 i:s22 &bcc cc=0
17 BPr 00 a:1 0 cond:3 011 .. - rs1:5 .............. i=%d16
19 NCP 00 - ---- 111 ---------------------- # CBcc
21 SETHI 00 rd:5 100 i:22
26 ## Major Opcode 10 -- integer, floating-point, vis, and system insns.
29 %dfp_rd 25:5 !function=extract_dfpreg
30 %dfp_rs1 14:5 !function=extract_dfpreg
31 %dfp_rs2 0:5 !function=extract_dfpreg
32 %dfp_rs3 9:5 !function=extract_dfpreg
34 %qfp_rd 25:5 !function=extract_qfpreg
35 %qfp_rs1 14:5 !function=extract_qfpreg
36 %qfp_rs2 0:5 !function=extract_qfpreg
38 &r_r_ri rd rs1 rs2_or_imm imm:bool
39 @n_r_ri .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri rd=0
40 @r_r_ri .. rd:5 ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri
42 &r_r_ri_cc rd rs1 rs2_or_imm imm:bool cc:bool
43 @r_r_ri_cc .. rd:5 . cc:1 .... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri_cc
44 @r_r_ri_cc0 .. rd:5 ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri_cc cc=0
45 @r_r_ri_cc1 .. rd:5 ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri_cc cc=1
48 @r_r_r .. rd:5 ...... rs1:5 . ........ rs2:5 &r_r_r
49 @d_r_r .. ..... ...... rs1:5 . ........ rs2:5 \
51 @r_d_d .. rd:5 ...... ..... . ........ ..... \
52 &r_r_r rs1=%dfp_rs1 rs2=%dfp_rs2
53 @d_r_d .. ..... ...... rs1:5 . ........ ..... \
54 &r_r_r rd=%dfp_rd rs2=%dfp_rs2
55 @d_d_d .. ..... ...... ..... . ........ ..... \
56 &r_r_r rd=%dfp_rd rs1=%dfp_rs1 rs2=%dfp_rs2
57 @q_q_q .. ..... ...... ..... . ........ ..... \
58 &r_r_r rd=%qfp_rd rs1=%qfp_rs1 rs2=%qfp_rs2
59 @q_d_d .. ..... ...... ..... . ........ ..... \
60 &r_r_r rd=%qfp_rd rs1=%dfp_rs1 rs2=%dfp_rs2
62 @r_r_r_swap .. rd:5 ...... rs2:5 . ........ rs1:5 &r_r_r
63 @d_d_d_swap .. ..... ...... ..... . ........ ..... \
64 &r_r_r rd=%dfp_rd rs1=%dfp_rs2 rs2=%dfp_rs1
67 @r_r1 .. rd:5 ...... rs:5 . ........ ..... &r_r
68 @r_r2 .. rd:5 ...... ..... . ........ rs:5 &r_r
69 @r_d2 .. rd:5 ...... ..... . ........ ..... &r_r rs=%dfp_rs2
70 @r_q2 .. rd:5 ...... ..... . ........ ..... &r_r rs=%qfp_rs2
71 @d_r2 .. ..... ...... ..... . ........ rs:5 &r_r rd=%dfp_rd
72 @q_r2 .. ..... ...... ..... . ........ rs:5 &r_r rd=%qfp_rd
73 @d_d1 .. ..... ...... ..... . ........ ..... \
74 &r_r rd=%dfp_rd rs=%dfp_rs1
75 @d_d2 .. ..... ...... ..... . ........ ..... \
76 &r_r rd=%dfp_rd rs=%dfp_rs2
77 @d_q2 .. ..... ...... ..... . ........ ..... \
78 &r_r rd=%dfp_rd rs=%qfp_rs2
79 @q_q2 .. ..... ...... ..... . ........ ..... \
80 &r_r rd=%qfp_rd rs=%qfp_rs2
81 @q_d2 .. ..... ...... ..... . ........ ..... \
82 &r_r rd=%qfp_rd rs=%dfp_rs2
84 &r_r_r_r rd rs1 rs2 rs3
85 @r_r_r_r .. rd:5 ...... rs1:5 rs3:5 .... rs2:5 &r_r_r_r
86 @d_d_d_d .. ..... ...... ..... ..... .... ..... \
87 &r_r_r_r rd=%dfp_rd rs1=%dfp_rs1 rs2=%dfp_rs2 rs3=%dfp_rs3
91 STBAR 10 00000 101000 01111 0 0000000000000
92 MEMBAR 10 00000 101000 01111 1 000000 cmask:3 mmask:4
94 RDCCR 10 rd:5 101000 00010 0 0000000000000
95 RDASI 10 rd:5 101000 00011 0 0000000000000
96 RDTICK 10 rd:5 101000 00100 0 0000000000000
97 RDPC 10 rd:5 101000 00101 0 0000000000000
98 RDFPRS 10 rd:5 101000 00110 0 0000000000000
99 RDASR17 10 rd:5 101000 10001 0 0000000000000
100 RDGSR 10 rd:5 101000 10011 0 0000000000000
101 RDSOFTINT 10 rd:5 101000 10110 0 0000000000000
102 RDTICK_CMPR 10 rd:5 101000 10111 0 0000000000000
103 RDSTICK 10 rd:5 101000 11000 0 0000000000000
104 RDSTICK_CMPR 10 rd:5 101000 11001 0 0000000000000
105 RDSTRAND_STATUS 10 rd:5 101000 11010 0 0000000000000
107 # Before v8, all rs1 accepted; otherwise rs1==0.
108 RDY 10 rd:5 101000 rs1:5 0 0000000000000
113 WRY 10 00000 110000 ..... . ............. @n_r_ri
114 WRCCR 10 00010 110000 ..... . ............. @n_r_ri
115 WRASI 10 00011 110000 ..... . ............. @n_r_ri
116 WRFPRS 10 00110 110000 ..... . ............. @n_r_ri
118 WRGSR 10 10011 110000 ..... . ............. @n_r_ri
119 WRPOWERDOWN 10 10011 110000 ..... . ............. @n_r_ri
121 WRSOFTINT_SET 10 10100 110000 ..... . ............. @n_r_ri
122 WRSOFTINT_CLR 10 10101 110000 ..... . ............. @n_r_ri
123 WRSOFTINT 10 10110 110000 ..... . ............. @n_r_ri
124 WRTICK_CMPR 10 10111 110000 ..... . ............. @n_r_ri
125 WRSTICK 10 11000 110000 ..... . ............. @n_r_ri
126 WRSTICK_CMPR 10 11001 110000 ..... . ............. @n_r_ri
127 WRMWAIT 10 11100 110000 ..... . ............. @n_r_ri
129 # Before v8, rs1==0 was WRY, and the rest executed as nop.
131 NOP_v7 10 ----- 110000 ----- 0 00000000 -----
132 NOP_v7 10 ----- 110000 ----- 1 -------- -----
137 RDPSR 10 rd:5 101001 00000 0 0000000000000
138 RDHPR_hpstate 10 rd:5 101001 00000 0 0000000000000
140 RDHPR_htstate 10 rd:5 101001 00001 0 0000000000000
141 RDHPR_hintp 10 rd:5 101001 00011 0 0000000000000
142 RDHPR_htba 10 rd:5 101001 00101 0 0000000000000
143 RDHPR_hver 10 rd:5 101001 00110 0 0000000000000
144 RDHPR_hstick_cmpr 10 rd:5 101001 11111 0 0000000000000
147 WRPSR 10 00000 110001 ..... . ............. @n_r_ri
148 SAVED 10 00000 110001 00000 0 0000000000000
150 RESTORED 10 00001 110001 00000 0 0000000000000
157 RDWIM 10 rd:5 101010 00000 0 0000000000000
158 RDPR_tpc 10 rd:5 101010 00000 0 0000000000000
160 RDPR_tnpc 10 rd:5 101010 00001 0 0000000000000
161 RDPR_tstate 10 rd:5 101010 00010 0 0000000000000
162 RDPR_tt 10 rd:5 101010 00011 0 0000000000000
163 RDPR_tick 10 rd:5 101010 00100 0 0000000000000
164 RDPR_tba 10 rd:5 101010 00101 0 0000000000000
165 RDPR_pstate 10 rd:5 101010 00110 0 0000000000000
166 RDPR_tl 10 rd:5 101010 00111 0 0000000000000
167 RDPR_pil 10 rd:5 101010 01000 0 0000000000000
168 RDPR_cwp 10 rd:5 101010 01001 0 0000000000000
169 RDPR_cansave 10 rd:5 101010 01010 0 0000000000000
170 RDPR_canrestore 10 rd:5 101010 01011 0 0000000000000
171 RDPR_cleanwin 10 rd:5 101010 01100 0 0000000000000
172 RDPR_otherwin 10 rd:5 101010 01101 0 0000000000000
173 RDPR_wstate 10 rd:5 101010 01110 0 0000000000000
174 RDPR_gl 10 rd:5 101010 10000 0 0000000000000
175 RDPR_strand_status 10 rd:5 101010 11010 0 0000000000000
176 RDPR_ver 10 rd:5 101010 11111 0 0000000000000
179 WRWIM 10 00000 110010 ..... . ............. @n_r_ri
180 WRPR_tpc 10 00000 110010 ..... . ............. @n_r_ri
182 WRPR_tnpc 10 00001 110010 ..... . ............. @n_r_ri
183 WRPR_tstate 10 00010 110010 ..... . ............. @n_r_ri
184 WRPR_tt 10 00011 110010 ..... . ............. @n_r_ri
185 WRPR_tick 10 00100 110010 ..... . ............. @n_r_ri
186 WRPR_tba 10 00101 110010 ..... . ............. @n_r_ri
187 WRPR_pstate 10 00110 110010 ..... . ............. @n_r_ri
188 WRPR_tl 10 00111 110010 ..... . ............. @n_r_ri
189 WRPR_pil 10 01000 110010 ..... . ............. @n_r_ri
190 WRPR_cwp 10 01001 110010 ..... . ............. @n_r_ri
191 WRPR_cansave 10 01010 110010 ..... . ............. @n_r_ri
192 WRPR_canrestore 10 01011 110010 ..... . ............. @n_r_ri
193 WRPR_cleanwin 10 01100 110010 ..... . ............. @n_r_ri
194 WRPR_otherwin 10 01101 110010 ..... . ............. @n_r_ri
195 WRPR_wstate 10 01110 110010 ..... . ............. @n_r_ri
196 WRPR_gl 10 10000 110010 ..... . ............. @n_r_ri
197 WRPR_strand_status 10 11010 110010 ..... . ............. @n_r_ri
200 FLUSHW 10 00000 101011 00000 0 0000000000000
201 RDTBR 10 rd:5 101011 00000 0 0000000000000
205 WRTBR 10 00000 110011 ..... . ............. @n_r_ri
206 WRHPR_hpstate 10 00000 110011 ..... . ............. @n_r_ri
208 WRHPR_htstate 10 00001 110011 ..... . ............. @n_r_ri
209 WRHPR_hintp 10 00011 110011 ..... . ............. @n_r_ri
210 WRHPR_htba 10 00101 110011 ..... . ............. @n_r_ri
211 WRHPR_hstick_cmpr 10 11111 110011 ..... . ............. @n_r_ri
213 ADD 10 ..... 0.0000 ..... . ............. @r_r_ri_cc
214 AND 10 ..... 0.0001 ..... . ............. @r_r_ri_cc
215 OR 10 ..... 0.0010 ..... . ............. @r_r_ri_cc
216 XOR 10 ..... 0.0011 ..... . ............. @r_r_ri_cc
217 SUB 10 ..... 0.0100 ..... . ............. @r_r_ri_cc
218 ANDN 10 ..... 0.0101 ..... . ............. @r_r_ri_cc
219 ORN 10 ..... 0.0110 ..... . ............. @r_r_ri_cc
220 XORN 10 ..... 0.0111 ..... . ............. @r_r_ri_cc
221 ADDC 10 ..... 0.1000 ..... . ............. @r_r_ri_cc
222 SUBC 10 ..... 0.1100 ..... . ............. @r_r_ri_cc
224 MULX 10 ..... 001001 ..... . ............. @r_r_ri_cc0
225 UMUL 10 ..... 0.1010 ..... . ............. @r_r_ri_cc
226 SMUL 10 ..... 0.1011 ..... . ............. @r_r_ri_cc
227 MULScc 10 ..... 100100 ..... . ............. @r_r_ri_cc1
229 UDIVX 10 ..... 001101 ..... . ............. @r_r_ri
230 SDIVX 10 ..... 101101 ..... . ............. @r_r_ri
231 UDIV 10 ..... 001110 ..... . ............. @r_r_ri
232 UDIVcc 10 ..... 011110 ..... . ............. @r_r_ri_cc1
233 SDIV 10 ..... 0.1111 ..... . ............. @r_r_ri_cc
235 TADDcc 10 ..... 100000 ..... . ............. @r_r_ri_cc1
236 TSUBcc 10 ..... 100001 ..... . ............. @r_r_ri_cc1
237 TADDccTV 10 ..... 100010 ..... . ............. @r_r_ri_cc1
238 TSUBccTV 10 ..... 100011 ..... . ............. @r_r_ri_cc1
240 POPC 10 rd:5 101110 00000 imm:1 rs2_or_imm:s13 \
241 &r_r_ri_cc rs1=0 cc=0
243 &shiftr rd rs1 rs2 x:bool
244 @shiftr .. rd:5 ...... rs1:5 . x:1 ....... rs2:5 &shiftr
246 SLL_r 10 ..... 100101 ..... 0 . 0000000 ..... @shiftr
247 SRL_r 10 ..... 100110 ..... 0 . 0000000 ..... @shiftr
248 SRA_r 10 ..... 100111 ..... 0 . 0000000 ..... @shiftr
250 &shifti rd rs1 i x:bool
251 @shifti .. rd:5 ...... rs1:5 . x:1 ...... i:6 &shifti
253 SLL_i 10 ..... 100101 ..... 1 . 000000 ...... @shifti
254 SRL_i 10 ..... 100110 ..... 1 . 000000 ...... @shifti
255 SRA_i 10 ..... 100111 ..... 1 . 000000 ...... @shifti
257 Tcc_r 10 0 cond:4 111010 rs1:5 0 cc:1 0000000 rs2:5
259 # For v7, the entire simm13 field is present, but masked to 7 bits.
260 # For v8, [12:7] are reserved. However, a compatibility note for
261 # the Tcc insn in the v9 manual suggests that the v8 reserved field
262 # was ignored and did not produce traps.
263 Tcc_i_v7 10 0 cond:4 111010 rs1:5 1 ------ i:7
265 # For v9, bits [12:11] are cc1 and cc0 (and cc0 must be 0).
266 # Bits [10:8] are reserved and the OSA2011 manual says they must be 0.
267 Tcc_i_v9 10 0 cond:4 111010 rs1:5 1 cc:1 0 000 i:8
270 MOVcc 10 rd:5 101100 1 cond:4 imm:1 cc:1 0 rs2_or_imm:s11
271 MOVfcc 10 rd:5 101100 0 cond:4 imm:1 cc:2 rs2_or_imm:s11
272 MOVR 10 rd:5 101111 rs1:5 imm:1 cond:3 rs2_or_imm:s10
274 JMPL 10 ..... 111000 ..... . ............. @r_r_ri
276 RETT 10 00000 111001 ..... . ............. @n_r_ri
277 RETURN 10 00000 111001 ..... . ............. @n_r_ri
279 NOP 10 00000 111011 ----- 0 00000000----- # FLUSH reg+reg
280 NOP 10 00000 111011 ----- 1 ------------- # FLUSH reg+imm
281 SAVE 10 ..... 111100 ..... . ............. @r_r_ri
282 RESTORE 10 ..... 111101 ..... . ............. @r_r_ri
284 DONE 10 00000 111110 00000 0 0000000000000
285 RETRY 10 00001 111110 00000 0 0000000000000
287 FMOVs 10 ..... 110100 00000 0 0000 0001 ..... @r_r2
288 FMOVd 10 ..... 110100 00000 0 0000 0010 ..... @d_d2
289 FMOVq 10 ..... 110100 00000 0 0000 0011 ..... @q_q2
290 FNEGs 10 ..... 110100 00000 0 0000 0101 ..... @r_r2
291 FNEGd 10 ..... 110100 00000 0 0000 0110 ..... @d_d2
292 FNEGq 10 ..... 110100 00000 0 0000 0111 ..... @q_q2
293 FABSs 10 ..... 110100 00000 0 0000 1001 ..... @r_r2
294 FABSd 10 ..... 110100 00000 0 0000 1010 ..... @d_d2
295 FABSq 10 ..... 110100 00000 0 0000 1011 ..... @q_q2
296 FSQRTs 10 ..... 110100 00000 0 0010 1001 ..... @r_r2
297 FSQRTd 10 ..... 110100 00000 0 0010 1010 ..... @d_d2
298 FSQRTq 10 ..... 110100 00000 0 0010 1011 ..... @q_q2
299 FADDs 10 ..... 110100 ..... 0 0100 0001 ..... @r_r_r
300 FADDd 10 ..... 110100 ..... 0 0100 0010 ..... @d_d_d
301 FADDq 10 ..... 110100 ..... 0 0100 0011 ..... @q_q_q
302 FSUBs 10 ..... 110100 ..... 0 0100 0101 ..... @r_r_r
303 FSUBd 10 ..... 110100 ..... 0 0100 0110 ..... @d_d_d
304 FSUBq 10 ..... 110100 ..... 0 0100 0111 ..... @q_q_q
305 FMULs 10 ..... 110100 ..... 0 0100 1001 ..... @r_r_r
306 FMULd 10 ..... 110100 ..... 0 0100 1010 ..... @d_d_d
307 FMULq 10 ..... 110100 ..... 0 0100 1011 ..... @q_q_q
308 FDIVs 10 ..... 110100 ..... 0 0100 1101 ..... @r_r_r
309 FDIVd 10 ..... 110100 ..... 0 0100 1110 ..... @d_d_d
310 FDIVq 10 ..... 110100 ..... 0 0100 1111 ..... @q_q_q
311 FNADDs 10 ..... 110100 ..... 0 0101 0001 ..... @r_r_r
312 FNADDd 10 ..... 110100 ..... 0 0101 0010 ..... @d_d_d
313 FNMULs 10 ..... 110100 ..... 0 0101 1001 ..... @r_r_r
314 FNMULd 10 ..... 110100 ..... 0 0101 1010 ..... @d_d_d
315 FHADDs 10 ..... 110100 ..... 0 0110 0001 ..... @r_r_r
316 FHADDd 10 ..... 110100 ..... 0 0110 0010 ..... @d_d_d
317 FHSUBs 10 ..... 110100 ..... 0 0110 0101 ..... @r_r_r
318 FHSUBd 10 ..... 110100 ..... 0 0110 0110 ..... @d_d_d
319 FsMULd 10 ..... 110100 ..... 0 0110 1001 ..... @d_r_r
320 FdMULq 10 ..... 110100 ..... 0 0110 1110 ..... @q_d_d
321 FNHADDs 10 ..... 110100 ..... 0 0111 0001 ..... @r_r_r
322 FNHADDd 10 ..... 110100 ..... 0 0111 0010 ..... @d_d_d
323 FNsMULd 10 ..... 110100 ..... 0 0111 1001 ..... @d_r_r
324 FsTOx 10 ..... 110100 00000 0 1000 0001 ..... @r_r2
325 FdTOx 10 ..... 110100 00000 0 1000 0010 ..... @r_d2
326 FqTOx 10 ..... 110100 00000 0 1000 0011 ..... @r_q2
327 FxTOs 10 ..... 110100 00000 0 1000 0100 ..... @r_r2
328 FxTOd 10 ..... 110100 00000 0 1000 1000 ..... @d_r2
329 FxTOq 10 ..... 110100 00000 0 1000 1100 ..... @q_r2
330 FiTOs 10 ..... 110100 00000 0 1100 0100 ..... @r_r2
331 FdTOs 10 ..... 110100 00000 0 1100 0110 ..... @r_d2
332 FqTOs 10 ..... 110100 00000 0 1100 0111 ..... @r_q2
333 FiTOd 10 ..... 110100 00000 0 1100 1000 ..... @d_r2
334 FsTOd 10 ..... 110100 00000 0 1100 1001 ..... @d_r2
335 FqTOd 10 ..... 110100 00000 0 1100 1011 ..... @d_q2
336 FiTOq 10 ..... 110100 00000 0 1100 1100 ..... @q_r2
337 FsTOq 10 ..... 110100 00000 0 1100 1101 ..... @q_r2
338 FdTOq 10 ..... 110100 00000 0 1100 1110 ..... @q_d2
339 FsTOi 10 ..... 110100 00000 0 1101 0001 ..... @r_r2
340 FdTOi 10 ..... 110100 00000 0 1101 0010 ..... @r_d2
341 FqTOi 10 ..... 110100 00000 0 1101 0011 ..... @r_q2
343 FMOVscc 10 rd:5 110101 0 cond:4 1 cc:1 0 000001 rs2:5
344 FMOVdcc 10 ..... 110101 0 cond:4 1 cc:1 0 000010 ..... \
345 rd=%dfp_rd rs2=%dfp_rs2
346 FMOVqcc 10 ..... 110101 0 cond:4 1 cc:1 0 000011 ..... \
347 rd=%qfp_rd rs2=%qfp_rs2
349 FMOVsfcc 10 rd:5 110101 0 cond:4 0 cc:2 000001 rs2:5
350 FMOVdfcc 10 ..... 110101 0 cond:4 0 cc:2 000010 ..... \
351 rd=%dfp_rd rs2=%dfp_rs2
352 FMOVqfcc 10 ..... 110101 0 cond:4 0 cc:2 000011 ..... \
353 rd=%qfp_rd rs2=%qfp_rs2
355 FMOVRs 10 rd:5 110101 rs1:5 0 cond:3 00101 rs2:5
356 FMOVRd 10 ..... 110101 rs1:5 0 cond:3 00110 ..... \
357 rd=%dfp_rd rs2=%dfp_rs2
358 FMOVRq 10 ..... 110101 rs1:5 0 cond:3 00111 ..... \
359 rd=%qfp_rd rs2=%qfp_rs2
361 FCMPs 10 000 cc:2 110101 rs1:5 0 0101 0001 rs2:5
362 FCMPd 10 000 cc:2 110101 ..... 0 0101 0010 ..... \
363 rs1=%dfp_rs1 rs2=%dfp_rs2
364 FCMPq 10 000 cc:2 110101 ..... 0 0101 0011 ..... \
365 rs1=%qfp_rs1 rs2=%qfp_rs2
366 FCMPEs 10 000 cc:2 110101 rs1:5 0 0101 0101 rs2:5
367 FCMPEd 10 000 cc:2 110101 ..... 0 0101 0110 ..... \
368 rs1=%dfp_rs1 rs2=%dfp_rs2
369 FCMPEq 10 000 cc:2 110101 ..... 0 0101 0111 ..... \
370 rs1=%qfp_rs1 rs2=%qfp_rs2
374 EDGE8cc 10 ..... 110110 ..... 0 0000 0000 ..... @r_r_r
375 EDGE8N 10 ..... 110110 ..... 0 0000 0001 ..... @r_r_r
376 EDGE8Lcc 10 ..... 110110 ..... 0 0000 0010 ..... @r_r_r
377 EDGE8LN 10 ..... 110110 ..... 0 0000 0011 ..... @r_r_r
378 EDGE16cc 10 ..... 110110 ..... 0 0000 0100 ..... @r_r_r
379 EDGE16N 10 ..... 110110 ..... 0 0000 0101 ..... @r_r_r
380 EDGE16Lcc 10 ..... 110110 ..... 0 0000 0110 ..... @r_r_r
381 EDGE16LN 10 ..... 110110 ..... 0 0000 0111 ..... @r_r_r
382 EDGE32cc 10 ..... 110110 ..... 0 0000 1000 ..... @r_r_r
383 EDGE32N 10 ..... 110110 ..... 0 0000 1001 ..... @r_r_r
384 EDGE32Lcc 10 ..... 110110 ..... 0 0000 1010 ..... @r_r_r
385 EDGE32LN 10 ..... 110110 ..... 0 0000 1011 ..... @r_r_r
387 ARRAY8 10 ..... 110110 ..... 0 0001 0000 ..... @r_r_r
388 ARRAY16 10 ..... 110110 ..... 0 0001 0010 ..... @r_r_r
389 ARRAY32 10 ..... 110110 ..... 0 0001 0100 ..... @r_r_r
391 ADDXC 10 ..... 110110 ..... 0 0001 0001 ..... @r_r_r
392 ADDXCcc 10 ..... 110110 ..... 0 0001 0011 ..... @r_r_r
393 UMULXHI 10 ..... 110110 ..... 0 0001 0110 ..... @r_r_r
394 LZCNT 10 ..... 110110 00000 0 0001 0111 ..... @r_r2
395 XMULX 10 ..... 110110 ..... 1 0001 0101 ..... @r_r_r
396 XMULXHI 10 ..... 110110 ..... 1 0001 0110 ..... @r_r_r
398 ALIGNADDR 10 ..... 110110 ..... 0 0001 1000 ..... @r_r_r
399 ALIGNADDRL 10 ..... 110110 ..... 0 0001 1010 ..... @r_r_r
401 BMASK 10 ..... 110110 ..... 0 0001 1001 ..... @r_r_r
403 CMASK8 10 00000 110110 00000 0 0001 1011 rs2:5
404 CMASK16 10 00000 110110 00000 0 0001 1101 rs2:5
405 CMASK32 10 00000 110110 00000 0 0001 1111 rs2:5
407 FPCMPLE16 10 ..... 110110 ..... 0 0010 0000 ..... @r_d_d
408 FPCMPNE16 10 ..... 110110 ..... 0 0010 0010 ..... @r_d_d
409 FPCMPGT16 10 ..... 110110 ..... 0 0010 1000 ..... @r_d_d
410 FPCMPEQ16 10 ..... 110110 ..... 0 0010 1010 ..... @r_d_d
411 FPCMPLE32 10 ..... 110110 ..... 0 0010 0100 ..... @r_d_d
412 FPCMPNE32 10 ..... 110110 ..... 0 0010 0110 ..... @r_d_d
413 FPCMPGT32 10 ..... 110110 ..... 0 0010 1100 ..... @r_d_d
414 FPCMPEQ32 10 ..... 110110 ..... 0 0010 1110 ..... @r_d_d
416 FSLL16 10 ..... 110110 ..... 0 0010 0001 ..... @d_d_d
417 FSRL16 10 ..... 110110 ..... 0 0010 0011 ..... @d_d_d
418 FSLAS16 10 ..... 110110 ..... 0 0010 1001 ..... @d_d_d
419 FSRA16 10 ..... 110110 ..... 0 0010 1011 ..... @d_d_d
420 FSLL32 10 ..... 110110 ..... 0 0010 0101 ..... @d_d_d
421 FSRL32 10 ..... 110110 ..... 0 0010 0111 ..... @d_d_d
422 FSLAS32 10 ..... 110110 ..... 0 0010 1101 ..... @d_d_d
423 FSRA32 10 ..... 110110 ..... 0 0010 1111 ..... @d_d_d
425 FPCMPULE8 10 ..... 110110 ..... 1 0010 0000 ..... @r_d_d
426 FPCMPUGT8 10 ..... 110110 ..... 1 0010 1000 ..... @r_d_d
427 FPCMPNE8 10 ..... 110110 ..... 1 0010 0010 ..... @r_d_d
428 FPCMPEQ8 10 ..... 110110 ..... 1 0010 1010 ..... @r_d_d
429 FPCMPLE8 10 ..... 110110 ..... 0 0011 0100 ..... @r_d_d
430 FPCMPGT8 10 ..... 110110 ..... 0 0011 1100 ..... @r_d_d
431 FPCMPULE16 10 ..... 110110 ..... 1 0010 1110 ..... @r_d_d
432 FPCMPUGT16 10 ..... 110110 ..... 1 0010 1011 ..... @r_d_d
433 FPCMPULE32 10 ..... 110110 ..... 1 0010 1111 ..... @r_d_d
434 FPCMPUGT32 10 ..... 110110 ..... 1 0010 1100 ..... @r_d_d
436 FMUL8x16 10 ..... 110110 ..... 0 0011 0001 ..... @d_r_d
437 FMUL8x16AU 10 ..... 110110 ..... 0 0011 0011 ..... @d_r_r
438 FMUL8x16AL 10 ..... 110110 ..... 0 0011 0101 ..... @d_r_r
439 FMUL8SUx16 10 ..... 110110 ..... 0 0011 0110 ..... @d_d_d
440 FMUL8ULx16 10 ..... 110110 ..... 0 0011 0111 ..... @d_d_d
441 FMULD8SUx16 10 ..... 110110 ..... 0 0011 1000 ..... @d_r_r
442 FMULD8ULx16 10 ..... 110110 ..... 0 0011 1001 ..... @d_r_r
443 FPACK32 10 ..... 110110 ..... 0 0011 1010 ..... @d_d_d
444 FPACK16 10 ..... 110110 00000 0 0011 1011 ..... @r_d2
445 FPACKFIX 10 ..... 110110 00000 0 0011 1101 ..... @r_d2
446 PDIST 10 ..... 110110 ..... 0 0011 1110 ..... \
447 &r_r_r_r rd=%dfp_rd rs1=%dfp_rd rs2=%dfp_rs1 rs3=%dfp_rs2
448 PDISTN 10 ..... 110110 ..... 0 0011 1111 ..... @r_d_d
450 FMEAN16 10 ..... 110110 ..... 0 0100 0000 ..... @d_d_d
451 SUBXC 10 ..... 110110 ..... 0 0100 0001 ..... @r_r_r
452 SUBXCcc 10 ..... 110110 ..... 0 0100 0011 ..... @r_r_r
453 FCHKSM16 10 ..... 110110 ..... 0 0100 0100 ..... @d_d_d
454 FALIGNDATAg 10 ..... 110110 ..... 0 0100 1000 ..... @d_d_d
455 FPMERGE 10 ..... 110110 ..... 0 0100 1011 ..... @d_r_r
456 BSHUFFLE 10 ..... 110110 ..... 0 0100 1100 ..... @d_d_d
457 FEXPAND 10 ..... 110110 00000 0 0100 1101 ..... @d_r2
458 FALIGNDATAi 10 ..... 110110 ..... 0 0100 1001 ..... @d_r_d
460 FSRCd 10 ..... 110110 ..... 0 0111 0100 00000 @d_d1 # FSRC1d
461 FSRCs 10 ..... 110110 ..... 0 0111 0101 00000 @r_r1 # FSRC1s
462 FSRCd 10 ..... 110110 00000 0 0111 1000 ..... @d_d2 # FSRC2d
463 FSRCs 10 ..... 110110 00000 0 0111 1001 ..... @r_r2 # FSRC2s
464 FNOTd 10 ..... 110110 ..... 0 0110 1010 00000 @d_d1 # FNOT1d
465 FNOTs 10 ..... 110110 ..... 0 0110 1011 00000 @r_r1 # FNOT1s
466 FNOTd 10 ..... 110110 00000 0 0110 0110 ..... @d_d2 # FNOT2d
467 FNOTs 10 ..... 110110 00000 0 0110 0111 ..... @r_r2 # FNOT2s
469 FPADD16 10 ..... 110110 ..... 0 0101 0000 ..... @d_d_d
470 FPADD16s 10 ..... 110110 ..... 0 0101 0001 ..... @r_r_r
471 FPADD32 10 ..... 110110 ..... 0 0101 0010 ..... @d_d_d
472 FPADD32s 10 ..... 110110 ..... 0 0101 0011 ..... @r_r_r
473 FPADD64 10 ..... 110110 ..... 0 0100 0010 ..... @d_d_d
474 FPSUB16 10 ..... 110110 ..... 0 0101 0100 ..... @d_d_d
475 FPSUB16s 10 ..... 110110 ..... 0 0101 0101 ..... @r_r_r
476 FPSUB32 10 ..... 110110 ..... 0 0101 0110 ..... @d_d_d
477 FPSUB32s 10 ..... 110110 ..... 0 0101 0111 ..... @r_r_r
478 FPSUB64 10 ..... 110110 ..... 0 0100 0110 ..... @d_d_d
480 FPADDS16 10 ..... 110110 ..... 0 0101 1000 ..... @d_d_d
481 FPADDS16s 10 ..... 110110 ..... 0 0101 1001 ..... @r_r_r
482 FPADDS32 10 ..... 110110 ..... 0 0101 1010 ..... @d_d_d
483 FPADDS32s 10 ..... 110110 ..... 0 0101 1011 ..... @r_r_r
484 FPSUBS16 10 ..... 110110 ..... 0 0101 1100 ..... @d_d_d
485 FPSUBS16s 10 ..... 110110 ..... 0 0101 1101 ..... @r_r_r
486 FPSUBS32 10 ..... 110110 ..... 0 0101 1110 ..... @d_d_d
487 FPSUBS32s 10 ..... 110110 ..... 0 0101 1111 ..... @r_r_r
489 FNORd 10 ..... 110110 ..... 0 0110 0010 ..... @d_d_d
490 FNORs 10 ..... 110110 ..... 0 0110 0011 ..... @r_r_r
491 FANDNOTd 10 ..... 110110 ..... 0 0110 0100 ..... @d_d_d # FANDNOT2d
492 FANDNOTs 10 ..... 110110 ..... 0 0110 0101 ..... @r_r_r # FANDNOT2s
493 FANDNOTd 10 ..... 110110 ..... 0 0110 1000 ..... @d_d_d_swap # ... 1d
494 FANDNOTs 10 ..... 110110 ..... 0 0110 1001 ..... @r_r_r_swap # ... 1s
495 FXORd 10 ..... 110110 ..... 0 0110 1100 ..... @d_d_d
496 FXORs 10 ..... 110110 ..... 0 0110 1101 ..... @r_r_r
497 FNANDd 10 ..... 110110 ..... 0 0110 1110 ..... @d_d_d
498 FNANDs 10 ..... 110110 ..... 0 0110 1111 ..... @r_r_r
499 FANDd 10 ..... 110110 ..... 0 0111 0000 ..... @d_d_d
500 FANDs 10 ..... 110110 ..... 0 0111 0001 ..... @r_r_r
501 FXNORd 10 ..... 110110 ..... 0 0111 0010 ..... @d_d_d
502 FXNORs 10 ..... 110110 ..... 0 0111 0011 ..... @r_r_r
503 FORNOTd 10 ..... 110110 ..... 0 0111 0110 ..... @d_d_d # FORNOT2d
504 FORNOTs 10 ..... 110110 ..... 0 0111 0111 ..... @r_r_r # FORNOT2s
505 FORNOTd 10 ..... 110110 ..... 0 0111 1010 ..... @d_d_d_swap # ... 1d
506 FORNOTs 10 ..... 110110 ..... 0 0111 1011 ..... @r_r_r_swap # ... 1s
507 FORd 10 ..... 110110 ..... 0 0111 1100 ..... @d_d_d
508 FORs 10 ..... 110110 ..... 0 0111 1101 ..... @r_r_r
510 FZEROd 10 ..... 110110 00000 0 0110 0000 00000 rd=%dfp_rd
511 FZEROs 10 rd:5 110110 00000 0 0110 0001 00000
512 FONEd 10 ..... 110110 00000 0 0111 1110 00000 rd=%dfp_rd
513 FONEs 10 rd:5 110110 00000 0 0111 1111 00000
515 MOVsTOuw 10 ..... 110110 00000 1 0001 0001 ..... @r_r2
516 MOVsTOsw 10 ..... 110110 00000 1 0001 0011 ..... @r_r2
517 MOVwTOs 10 ..... 110110 00000 1 0001 1001 ..... @r_r2
518 MOVdTOx 10 ..... 110110 00000 1 0001 0000 ..... @r_d2
519 MOVxTOd 10 ..... 110110 00000 1 0001 1000 ..... @d_r2
521 FPADD8 10 ..... 110110 ..... 1 0010 0100 ..... @d_d_d
522 FPADDS8 10 ..... 110110 ..... 1 0010 0110 ..... @d_d_d
523 FPADDUS8 10 ..... 110110 ..... 1 0010 0111 ..... @d_d_d
524 FPADDUS16 10 ..... 110110 ..... 1 0010 0011 ..... @d_d_d
525 FPSUB8 10 ..... 110110 ..... 1 0101 0100 ..... @d_d_d
526 FPSUBS8 10 ..... 110110 ..... 1 0101 0110 ..... @d_d_d
527 FPSUBUS8 10 ..... 110110 ..... 1 0101 0111 ..... @d_d_d
528 FPSUBUS16 10 ..... 110110 ..... 1 0101 0011 ..... @d_d_d
530 FPMIN8 10 ..... 110110 ..... 1 0001 1010 ..... @d_d_d
531 FPMIN16 10 ..... 110110 ..... 1 0001 1011 ..... @d_d_d
532 FPMIN32 10 ..... 110110 ..... 1 0001 1100 ..... @d_d_d
533 FPMINU8 10 ..... 110110 ..... 1 0101 1010 ..... @d_d_d
534 FPMINU16 10 ..... 110110 ..... 1 0101 1011 ..... @d_d_d
535 FPMINU32 10 ..... 110110 ..... 1 0101 1100 ..... @d_d_d
537 FPMAX8 10 ..... 110110 ..... 1 0001 1101 ..... @d_d_d
538 FPMAX16 10 ..... 110110 ..... 1 0001 1110 ..... @d_d_d
539 FPMAX32 10 ..... 110110 ..... 1 0001 1111 ..... @d_d_d
540 FPMAXU8 10 ..... 110110 ..... 1 0101 1101 ..... @d_d_d
541 FPMAXU16 10 ..... 110110 ..... 1 0101 1110 ..... @d_d_d
542 FPMAXU32 10 ..... 110110 ..... 1 0101 1111 ..... @d_d_d
544 FLCMPs 10 000 cc:2 110110 rs1:5 1 0101 0001 rs2:5
545 FLCMPd 10 000 cc:2 110110 ..... 1 0101 0010 ..... \
546 rs1=%dfp_rs1 rs2=%dfp_rs2
548 NCP 10 ----- 110110 ----- --------- ----- # v8 CPop1
553 FMADDs 10 ..... 110111 ..... ..... 0001 ..... @r_r_r_r
554 FMADDd 10 ..... 110111 ..... ..... 0010 ..... @d_d_d_d
555 FMSUBs 10 ..... 110111 ..... ..... 0101 ..... @r_r_r_r
556 FMSUBd 10 ..... 110111 ..... ..... 0110 ..... @d_d_d_d
557 FNMSUBs 10 ..... 110111 ..... ..... 1001 ..... @r_r_r_r
558 FNMSUBd 10 ..... 110111 ..... ..... 1010 ..... @d_d_d_d
559 FNMADDs 10 ..... 110111 ..... ..... 1101 ..... @r_r_r_r
560 FNMADDd 10 ..... 110111 ..... ..... 1110 ..... @d_d_d_d
562 FPMADDX 10 ..... 110111 ..... ..... 0000 ..... @d_d_d_d
563 FPMADDXHI 10 ..... 110111 ..... ..... 0100 ..... @d_d_d_d
565 NCP 10 ----- 110111 ----- --------- ----- # v8 CPop2
569 ## Major Opcode 11 -- load and store instructions
572 &r_r_ri_asi rd rs1 rs2_or_imm asi imm:bool
573 @r_r_ri_na .. rd:5 ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri_asi asi=-1
574 @d_r_ri_na .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13 \
575 &r_r_ri_asi rd=%dfp_rd asi=-1
576 @q_r_ri_na .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13 \
577 &r_r_ri_asi rd=%qfp_rd asi=-1
579 @r_r_r_asi .. rd:5 ...... rs1:5 0 asi:8 rs2_or_imm:5 &r_r_ri_asi imm=0
580 @r_r_i_asi .. rd:5 ...... rs1:5 1 rs2_or_imm:s13 \
581 &r_r_ri_asi imm=1 asi=-2
582 @d_r_r_asi .. ..... ...... rs1:5 0 asi:8 rs2_or_imm:5 \
583 &r_r_ri_asi rd=%dfp_rd imm=0
584 @d_r_i_asi .. ..... ...... rs1:5 1 rs2_or_imm:s13 \
585 &r_r_ri_asi rd=%dfp_rd imm=1 asi=-2
586 @q_r_r_asi .. ..... ...... rs1:5 0 asi:8 rs2_or_imm:5 \
587 &r_r_ri_asi rd=%qfp_rd imm=0
588 @q_r_i_asi .. ..... ...... rs1:5 1 rs2_or_imm:s13 \
589 &r_r_ri_asi rd=%qfp_rd imm=1 asi=-2
590 @casa_imm .. rd:5 ...... rs1:5 1 00000000 rs2_or_imm:5 \
591 &r_r_ri_asi imm=1 asi=-2
593 LDUW 11 ..... 000000 ..... . ............. @r_r_ri_na
594 LDUB 11 ..... 000001 ..... . ............. @r_r_ri_na
595 LDUH 11 ..... 000010 ..... . ............. @r_r_ri_na
596 LDD 11 ..... 000011 ..... . ............. @r_r_ri_na
597 LDSW 11 ..... 001000 ..... . ............. @r_r_ri_na
598 LDSB 11 ..... 001001 ..... . ............. @r_r_ri_na
599 LDSH 11 ..... 001010 ..... . ............. @r_r_ri_na
600 LDX 11 ..... 001011 ..... . ............. @r_r_ri_na
602 STW 11 ..... 000100 ..... . ............. @r_r_ri_na
603 STB 11 ..... 000101 ..... . ............. @r_r_ri_na
604 STH 11 ..... 000110 ..... . ............. @r_r_ri_na
605 STD 11 ..... 000111 ..... . ............. @r_r_ri_na
606 STX 11 ..... 001110 ..... . ............. @r_r_ri_na
608 LDUW 11 ..... 010000 ..... . ............. @r_r_r_asi # LDUWA
609 LDUW 11 ..... 010000 ..... . ............. @r_r_i_asi # LDUWA
610 LDUB 11 ..... 010001 ..... . ............. @r_r_r_asi # LDUBA
611 LDUB 11 ..... 010001 ..... . ............. @r_r_i_asi # LDUBA
612 LDUH 11 ..... 010010 ..... . ............. @r_r_r_asi # LDUHA
613 LDUH 11 ..... 010010 ..... . ............. @r_r_i_asi # LDUHA
614 LDD 11 ..... 010011 ..... . ............. @r_r_r_asi # LDDA
615 LDD 11 ..... 010011 ..... . ............. @r_r_i_asi # LDDA
616 LDX 11 ..... 011011 ..... . ............. @r_r_r_asi # LDXA
617 LDX 11 ..... 011011 ..... . ............. @r_r_i_asi # LDXA
618 LDSB 11 ..... 011001 ..... . ............. @r_r_r_asi # LDSBA
619 LDSB 11 ..... 011001 ..... . ............. @r_r_i_asi # LDSBA
620 LDSH 11 ..... 011010 ..... . ............. @r_r_r_asi # LDSHA
621 LDSH 11 ..... 011010 ..... . ............. @r_r_i_asi # LDSHA
622 LDSW 11 ..... 011000 ..... . ............. @r_r_r_asi # LDSWA
623 LDSW 11 ..... 011000 ..... . ............. @r_r_i_asi # LDSWA
625 STW 11 ..... 010100 ..... . ............. @r_r_r_asi # STWA
626 STW 11 ..... 010100 ..... . ............. @r_r_i_asi # STWA
627 STB 11 ..... 010101 ..... . ............. @r_r_r_asi # STBA
628 STB 11 ..... 010101 ..... . ............. @r_r_i_asi # STBA
629 STH 11 ..... 010110 ..... . ............. @r_r_r_asi # STHA
630 STH 11 ..... 010110 ..... . ............. @r_r_i_asi # STHA
631 STD 11 ..... 010111 ..... . ............. @r_r_r_asi # STDA
632 STD 11 ..... 010111 ..... . ............. @r_r_i_asi # STDA
633 STX 11 ..... 011110 ..... . ............. @r_r_r_asi # STXA
634 STX 11 ..... 011110 ..... . ............. @r_r_i_asi # STXA
636 LDF 11 ..... 100000 ..... . ............. @r_r_ri_na
637 LDFSR 11 00000 100001 ..... . ............. @n_r_ri
638 LDXFSR 11 00001 100001 ..... . ............. @n_r_ri
639 LDXEFSR 11 00011 100001 ..... . ............. @n_r_ri
640 LDQF 11 ..... 100010 ..... . ............. @q_r_ri_na
641 LDDF 11 ..... 100011 ..... . ............. @d_r_ri_na
643 STF 11 ..... 100100 ..... . ............. @r_r_ri_na
644 STFSR 11 00000 100101 ..... . ............. @n_r_ri
645 STXFSR 11 00001 100101 ..... . ............. @n_r_ri
647 STQF 11 ..... 100110 ..... . ............. @q_r_ri_na
648 STDFQ 11 ----- 100110 ----- - -------------
650 STDF 11 ..... 100111 ..... . ............. @d_r_ri_na
652 LDSTUB 11 ..... 001101 ..... . ............. @r_r_ri_na
653 LDSTUB 11 ..... 011101 ..... . ............. @r_r_r_asi # LDSTUBA
654 LDSTUB 11 ..... 011101 ..... . ............. @r_r_i_asi # LDSTUBA
656 SWAP 11 ..... 001111 ..... . ............. @r_r_ri_na
657 SWAP 11 ..... 011111 ..... . ............. @r_r_r_asi # SWAPA
658 SWAP 11 ..... 011111 ..... . ............. @r_r_i_asi # SWAPA
660 CASA 11 ..... 111100 ..... . ............. @r_r_r_asi
661 CASA 11 ..... 111100 ..... . ............. @casa_imm
662 CASXA 11 ..... 111110 ..... . ............. @r_r_r_asi
663 CASXA 11 ..... 111110 ..... . ............. @casa_imm
665 NOP_v9 11 ----- 101101 ----- 0 00000000 ----- # PREFETCH
666 NOP_v9 11 ----- 101101 ----- 1 ------------- # PREFETCH
667 NOP_v9 11 ----- 111101 ----- - ------------- # PREFETCHA
671 LDFA 11 ..... 110000 ..... . ............. @r_r_r_asi
672 LDFA 11 ..... 110000 ..... . ............. @r_r_i_asi
674 NCP 11 ----- 110000 ----- --------- ----- # v8 LDC
676 NCP 11 ----- 110001 ----- --------- ----- # v8 LDCSR
677 LDQFA 11 ..... 110010 ..... . ............. @q_r_r_asi
678 LDQFA 11 ..... 110010 ..... . ............. @q_r_i_asi
681 LDDFA 11 ..... 110011 ..... . ............. @d_r_r_asi
682 LDDFA 11 ..... 110011 ..... . ............. @d_r_i_asi
684 NCP 11 ----- 110011 ----- --------- ----- # v8 LDDC
689 STFA 11 ..... 110100 ..... . ............. @r_r_r_asi
690 STFA 11 ..... 110100 ..... . ............. @r_r_i_asi
692 NCP 11 ----- 110100 ----- --------- ----- # v8 STC
694 NCP 11 ----- 110101 ----- --------- ----- # v8 STCSR
697 STQFA 11 ..... 110110 ..... . ............. @q_r_r_asi
698 STQFA 11 ..... 110110 ..... . ............. @q_r_i_asi
700 NCP 11 ----- 110110 ----- --------- ----- # v8 STDCQ
704 STDFA 11 ..... 110111 ..... . ............. @d_r_r_asi
705 STDFA 11 ..... 110111 ..... . ............. @d_r_i_asi
707 NCP 11 ----- 110111 ----- --------- ----- # v8 STDC