xref: /openbmc/qemu/target/sparc/insns.decode (revision 5e3b17bbe9cc49c67d68f4a676113361944c8709)
1# SPDX-License-Identifier: LGPL-2.0+
2#
3# Sparc instruction decode definitions.
4# Copyright (c) 2023 Richard Henderson <rth@twiddle.net>
5
6##
7## Major Opcodes 00 and 01 -- branches, call, and sethi.
8##
9
10&bcc    i a cond cc
11BPcc    00 a:1 cond:4   001 cc:1 0 - i:s19                 &bcc
12Bicc    00 a:1 cond:4   010          i:s22                 &bcc cc=0
13FBPfcc  00 a:1 cond:4   101 cc:2   - i:s19                 &bcc
14FBfcc   00 a:1 cond:4   110          i:s22                 &bcc cc=0
15
16%d16    20:s2 0:14
17BPr     00 a:1 0 cond:3 011 ..     - rs1:5 ..............  i=%d16
18
19NCP     00 -   ----     111 ----------------------         # CBcc
20
21SETHI   00 rd:5         100 i:22
22
23CALL    01 i:s30
24
25##
26## Major Opcode 10 -- integer, floating-point, vis, and system insns.
27##
28
29&r_r_ri     rd rs1 rs2_or_imm imm:bool
30@n_r_ri     .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13     &r_r_ri rd=0
31@r_r_ri     .. rd:5  ...... rs1:5 imm:1 rs2_or_imm:s13     &r_r_ri
32
33&r_r_ri_cc  rd rs1 rs2_or_imm imm:bool cc:bool
34@r_r_ri_cc  .. rd:5  . cc:1 .... rs1:5 imm:1 rs2_or_imm:s13    &r_r_ri_cc
35@r_r_ri_cc0 .. rd:5  ...... rs1:5 imm:1 rs2_or_imm:s13         &r_r_ri_cc cc=0
36@r_r_ri_cc1 .. rd:5  ...... rs1:5 imm:1 rs2_or_imm:s13         &r_r_ri_cc cc=1
37
38&r_r_r      rd rs1 rs2
39@r_r_r      .. rd:5  ...... rs1:5 . ........ rs2:5         &r_r_r
40@r_r_r_swap .. rd:5  ...... rs2:5 . ........ rs1:5         &r_r_r
41
42&r_r        rd rs
43@r_r1       .. rd:5  ...... rs:5  . ........ .....         &r_r
44@r_r2       .. rd:5  ...... ..... . ........ rs:5          &r_r
45
46{
47  [
48    STBAR           10 00000 101000 01111 0 0000000000000
49    MEMBAR          10 00000 101000 01111 1 000000 cmask:3 mmask:4
50
51    RDCCR           10 rd:5  101000 00010 0 0000000000000
52    RDASI           10 rd:5  101000 00011 0 0000000000000
53    RDTICK          10 rd:5  101000 00100 0 0000000000000
54    RDPC            10 rd:5  101000 00101 0 0000000000000
55    RDFPRS          10 rd:5  101000 00110 0 0000000000000
56    RDASR17         10 rd:5  101000 10001 0 0000000000000
57    RDGSR           10 rd:5  101000 10011 0 0000000000000
58    RDSOFTINT       10 rd:5  101000 10110 0 0000000000000
59    RDTICK_CMPR     10 rd:5  101000 10111 0 0000000000000
60    RDSTICK         10 rd:5  101000 11000 0 0000000000000
61    RDSTICK_CMPR    10 rd:5  101000 11001 0 0000000000000
62    RDSTRAND_STATUS 10 rd:5  101000 11010 0 0000000000000
63  ]
64  # Before v8, all rs1 accepted; otherwise rs1==0.
65  RDY               10 rd:5  101000 rs1:5 0 0000000000000
66}
67
68{
69  [
70    WRY             10 00000 110000 ..... . .............  @n_r_ri
71    WRCCR           10 00010 110000 ..... . .............  @n_r_ri
72    WRASI           10 00011 110000 ..... . .............  @n_r_ri
73    WRFPRS          10 00110 110000 ..... . .............  @n_r_ri
74    {
75      WRGSR         10 10011 110000 ..... . .............  @n_r_ri
76      WRPOWERDOWN   10 10011 110000 ..... . .............  @n_r_ri
77    }
78    WRSOFTINT_SET   10 10100 110000 ..... . .............  @n_r_ri
79    WRSOFTINT_CLR   10 10101 110000 ..... . .............  @n_r_ri
80    WRSOFTINT       10 10110 110000 ..... . .............  @n_r_ri
81    WRTICK_CMPR     10 10111 110000 ..... . .............  @n_r_ri
82    WRSTICK         10 11000 110000 ..... . .............  @n_r_ri
83    WRSTICK_CMPR    10 11001 110000 ..... . .............  @n_r_ri
84  ]
85  # Before v8, rs1==0 was WRY, and the rest executed as nop.
86  [
87    NOP_v7          10 ----- 110000 ----- 0 00000000 -----
88    NOP_v7          10 ----- 110000 ----- 1 -------- -----
89  ]
90}
91
92{
93  RDPSR             10 rd:5  101001 00000 0 0000000000000
94  RDHPR_hpstate     10 rd:5  101001 00000 0 0000000000000
95}
96RDHPR_htstate       10 rd:5  101001 00001 0 0000000000000
97RDHPR_hintp         10 rd:5  101001 00011 0 0000000000000
98RDHPR_htba          10 rd:5  101001 00101 0 0000000000000
99RDHPR_hver          10 rd:5  101001 00110 0 0000000000000
100RDHPR_hstick_cmpr   10 rd:5  101001 11111 0 0000000000000
101
102{
103  WRPSR             10 00000 110001 ..... . .............  @n_r_ri
104  SAVED             10 00000 110001 00000 0 0000000000000
105}
106RESTORED            10 00001 110001 00000 0 0000000000000
107# UA2005 ALLCLEAN
108# UA2005 OTHERW
109# UA2005 NORMALW
110# UA2005 INVALW
111
112{
113  RDWIM             10 rd:5  101010 00000 0 0000000000000
114  RDPR_tpc          10 rd:5  101010 00000 0 0000000000000
115}
116RDPR_tnpc           10 rd:5  101010 00001 0 0000000000000
117RDPR_tstate         10 rd:5  101010 00010 0 0000000000000
118RDPR_tt             10 rd:5  101010 00011 0 0000000000000
119RDPR_tick           10 rd:5  101010 00100 0 0000000000000
120RDPR_tba            10 rd:5  101010 00101 0 0000000000000
121RDPR_pstate         10 rd:5  101010 00110 0 0000000000000
122RDPR_tl             10 rd:5  101010 00111 0 0000000000000
123RDPR_pil            10 rd:5  101010 01000 0 0000000000000
124RDPR_cwp            10 rd:5  101010 01001 0 0000000000000
125RDPR_cansave        10 rd:5  101010 01010 0 0000000000000
126RDPR_canrestore     10 rd:5  101010 01011 0 0000000000000
127RDPR_cleanwin       10 rd:5  101010 01100 0 0000000000000
128RDPR_otherwin       10 rd:5  101010 01101 0 0000000000000
129RDPR_wstate         10 rd:5  101010 01110 0 0000000000000
130RDPR_gl             10 rd:5  101010 10000 0 0000000000000
131RDPR_strand_status  10 rd:5  101010 11010 0 0000000000000
132RDPR_ver            10 rd:5  101010 11111 0 0000000000000
133
134{
135  WRWIM             10 00000 110010 ..... . .............  @n_r_ri
136  WRPR_tpc          10 00000 110010 ..... . .............  @n_r_ri
137}
138WRPR_tnpc           10 00001 110010 ..... . .............  @n_r_ri
139WRPR_tstate         10 00010 110010 ..... . .............  @n_r_ri
140WRPR_tt             10 00011 110010 ..... . .............  @n_r_ri
141WRPR_tick           10 00100 110010 ..... . .............  @n_r_ri
142WRPR_tba            10 00101 110010 ..... . .............  @n_r_ri
143WRPR_pstate         10 00110 110010 ..... . .............  @n_r_ri
144WRPR_tl             10 00111 110010 ..... . .............  @n_r_ri
145WRPR_pil            10 01000 110010 ..... . .............  @n_r_ri
146WRPR_cwp            10 01001 110010 ..... . .............  @n_r_ri
147WRPR_cansave        10 01010 110010 ..... . .............  @n_r_ri
148WRPR_canrestore     10 01011 110010 ..... . .............  @n_r_ri
149WRPR_cleanwin       10 01100 110010 ..... . .............  @n_r_ri
150WRPR_otherwin       10 01101 110010 ..... . .............  @n_r_ri
151WRPR_wstate         10 01110 110010 ..... . .............  @n_r_ri
152WRPR_gl             10 10000 110010 ..... . .............  @n_r_ri
153WRPR_strand_status  10 11010 110010 ..... . .............  @n_r_ri
154
155{
156  FLUSHW    10 00000 101011 00000 0 0000000000000
157  RDTBR     10 rd:5  101011 00000 0 0000000000000
158}
159
160{
161  WRTBR             10 00000 110011 ..... . .............  @n_r_ri
162  WRHPR_hpstate     10 00000 110011 ..... . .............  @n_r_ri
163}
164WRHPR_htstate       10 00001 110011 ..... . .............  @n_r_ri
165WRHPR_hintp         10 00011 110011 ..... . .............  @n_r_ri
166WRHPR_htba          10 00101 110011 ..... . .............  @n_r_ri
167WRHPR_hstick_cmpr   10 11111 110011 ..... . .............  @n_r_ri
168
169ADD         10 ..... 0.0000 ..... . .............          @r_r_ri_cc
170AND         10 ..... 0.0001 ..... . .............          @r_r_ri_cc
171OR          10 ..... 0.0010 ..... . .............          @r_r_ri_cc
172XOR         10 ..... 0.0011 ..... . .............          @r_r_ri_cc
173SUB         10 ..... 0.0100 ..... . .............          @r_r_ri_cc
174ANDN        10 ..... 0.0101 ..... . .............          @r_r_ri_cc
175ORN         10 ..... 0.0110 ..... . .............          @r_r_ri_cc
176XORN        10 ..... 0.0111 ..... . .............          @r_r_ri_cc
177ADDC        10 ..... 0.1000 ..... . .............          @r_r_ri_cc
178SUBC        10 ..... 0.1100 ..... . .............          @r_r_ri_cc
179
180MULX        10 ..... 001001 ..... . .............          @r_r_ri_cc0
181UMUL        10 ..... 0.1010 ..... . .............          @r_r_ri_cc
182SMUL        10 ..... 0.1011 ..... . .............          @r_r_ri_cc
183MULScc      10 ..... 100100 ..... . .............          @r_r_ri_cc1
184
185UDIVX       10 ..... 001101 ..... . .............          @r_r_ri_cc0
186SDIVX       10 ..... 101101 ..... . .............          @r_r_ri_cc0
187UDIV        10 ..... 0.1110 ..... . .............          @r_r_ri_cc
188SDIV        10 ..... 0.1111 ..... . .............          @r_r_ri_cc
189
190TADDcc      10 ..... 100000 ..... . .............          @r_r_ri_cc1
191TSUBcc      10 ..... 100001 ..... . .............          @r_r_ri_cc1
192TADDccTV    10 ..... 100010 ..... . .............          @r_r_ri_cc1
193TSUBccTV    10 ..... 100011 ..... . .............          @r_r_ri_cc1
194
195POPC        10 rd:5  101110 00000 imm:1 rs2_or_imm:s13     \
196            &r_r_ri_cc rs1=0 cc=0
197
198&shiftr     rd rs1 rs2 x:bool
199@shiftr     .. rd:5  ...... rs1:5 . x:1 ....... rs2:5      &shiftr
200
201SLL_r       10 ..... 100101 ..... 0 .   0000000 .....      @shiftr
202SRL_r       10 ..... 100110 ..... 0 .   0000000 .....      @shiftr
203SRA_r       10 ..... 100111 ..... 0 .   0000000 .....      @shiftr
204
205&shifti     rd rs1 i x:bool
206@shifti     .. rd:5  ...... rs1:5 . x:1 ...... i:6         &shifti
207
208SLL_i       10 ..... 100101 ..... 1 .   000000 ......      @shifti
209SRL_i       10 ..... 100110 ..... 1 .   000000 ......      @shifti
210SRA_i       10 ..... 100111 ..... 1 .   000000 ......      @shifti
211
212Tcc_r       10 0 cond:4 111010 rs1:5 0 cc:1 0000000 rs2:5
213{
214  # For v7, the entire simm13 field is present, but masked to 7 bits.
215  # For v8, [12:7] are reserved.  However, a compatibility note for
216  # the Tcc insn in the v9 manual suggests that the v8 reserved field
217  # was ignored and did not produce traps.
218  Tcc_i_v7  10 0 cond:4 111010 rs1:5 1 ------ i:7
219
220  # For v9, bits [12:11] are cc1 and cc0 (and cc0 must be 0).
221  # Bits [10:8] are reserved and the OSA2011 manual says they must be 0.
222  Tcc_i_v9  10 0 cond:4 111010 rs1:5 1 cc:1 0 000 i:8
223}
224
225MOVcc       10 rd:5  101100 1 cond:4 imm:1 cc:1 0 rs2_or_imm:s11
226MOVfcc      10 rd:5  101100 0 cond:4 imm:1 cc:2   rs2_or_imm:s11
227MOVR        10 rd:5  101111 rs1:5    imm:1 cond:3 rs2_or_imm:s10
228
229JMPL        10 ..... 111000 ..... . .............          @r_r_ri
230{
231  RETT      10 00000 111001 ..... . .............          @n_r_ri
232  RETURN    10 00000 111001 ..... . .............          @n_r_ri
233}
234NOP         10 00000 111011 ----- 0 00000000-----          # FLUSH reg+reg
235NOP         10 00000 111011 ----- 1 -------------          # FLUSH reg+imm
236SAVE        10 ..... 111100 ..... . .............          @r_r_ri
237RESTORE     10 ..... 111101 ..... . .............          @r_r_ri
238
239DONE        10 00000 111110 00000 0 0000000000000
240RETRY       10 00001 111110 00000 0 0000000000000
241
242FMOVs       10 ..... 110100 00000 0 0000 0001 .....        @r_r2
243FMOVd       10 ..... 110100 00000 0 0000 0010 .....        @r_r2
244FNEGs       10 ..... 110100 00000 0 0000 0101 .....        @r_r2
245FNEGd       10 ..... 110100 00000 0 0000 0110 .....        @r_r2
246FABSs       10 ..... 110100 00000 0 0000 1001 .....        @r_r2
247FABSd       10 ..... 110100 00000 0 0000 1010 .....        @r_r2
248FSQRTs      10 ..... 110100 00000 0 0010 1001 .....        @r_r2
249FSQRTd      10 ..... 110100 00000 0 0010 1010 .....        @r_r2
250FSQRTq      10 ..... 110100 00000 0 0010 1011 .....        @r_r2
251FADDs       10 ..... 110100 ..... 0 0100 0001 .....        @r_r_r
252FADDd       10 ..... 110100 ..... 0 0100 0010 .....        @r_r_r
253FADDq       10 ..... 110100 ..... 0 0100 0011 .....        @r_r_r
254FSUBs       10 ..... 110100 ..... 0 0100 0101 .....        @r_r_r
255FSUBd       10 ..... 110100 ..... 0 0100 0110 .....        @r_r_r
256FSUBq       10 ..... 110100 ..... 0 0100 0111 .....        @r_r_r
257FMULs       10 ..... 110100 ..... 0 0100 1001 .....        @r_r_r
258FMULd       10 ..... 110100 ..... 0 0100 1010 .....        @r_r_r
259FMULq       10 ..... 110100 ..... 0 0100 1011 .....        @r_r_r
260FDIVs       10 ..... 110100 ..... 0 0100 1101 .....        @r_r_r
261FDIVd       10 ..... 110100 ..... 0 0100 1110 .....        @r_r_r
262FDIVq       10 ..... 110100 ..... 0 0100 1111 .....        @r_r_r
263FsMULd      10 ..... 110100 ..... 0 0110 1001 .....        @r_r_r
264FdMULq      10 ..... 110100 ..... 0 0110 1110 .....        @r_r_r
265FdTOx       10 ..... 110100 00000 0 1000 0010 .....        @r_r2
266FxTOd       10 ..... 110100 00000 0 1000 1000 .....        @r_r2
267FiTOs       10 ..... 110100 00000 0 1100 0100 .....        @r_r2
268FsTOi       10 ..... 110100 00000 0 1101 0001 .....        @r_r2
269
270{
271  [
272    EDGE8cc     10 ..... 110110 ..... 0 0000 0000 .....    @r_r_r
273    EDGE8N      10 ..... 110110 ..... 0 0000 0001 .....    @r_r_r
274    EDGE8Lcc    10 ..... 110110 ..... 0 0000 0010 .....    @r_r_r
275    EDGE8LN     10 ..... 110110 ..... 0 0000 0011 .....    @r_r_r
276    EDGE16cc    10 ..... 110110 ..... 0 0000 0100 .....    @r_r_r
277    EDGE16N     10 ..... 110110 ..... 0 0000 0101 .....    @r_r_r
278    EDGE16Lcc   10 ..... 110110 ..... 0 0000 0110 .....    @r_r_r
279    EDGE16LN    10 ..... 110110 ..... 0 0000 0111 .....    @r_r_r
280    EDGE32cc    10 ..... 110110 ..... 0 0000 1000 .....    @r_r_r
281    EDGE32N     10 ..... 110110 ..... 0 0000 1001 .....    @r_r_r
282    EDGE32Lcc   10 ..... 110110 ..... 0 0000 1010 .....    @r_r_r
283    EDGE32LN    10 ..... 110110 ..... 0 0000 1011 .....    @r_r_r
284
285    ARRAY8      10 ..... 110110 ..... 0 0001 0000 .....    @r_r_r
286    ARRAY16     10 ..... 110110 ..... 0 0001 0010 .....    @r_r_r
287    ARRAY32     10 ..... 110110 ..... 0 0001 0100 .....    @r_r_r
288
289    ALIGNADDR   10 ..... 110110 ..... 0 0001 1000 .....    @r_r_r
290    ALIGNADDRL  10 ..... 110110 ..... 0 0001 1010 .....    @r_r_r
291
292    BMASK       10 ..... 110110 ..... 0 0001 1001 .....    @r_r_r
293
294    FMUL8x16    10 ..... 110110 ..... 0 0011 0001 .....    @r_r_r
295    FMUL8x16AU  10 ..... 110110 ..... 0 0011 0011 .....    @r_r_r
296    FMUL8x16AL  10 ..... 110110 ..... 0 0011 0101 .....    @r_r_r
297    FMUL8SUx16  10 ..... 110110 ..... 0 0011 0110 .....    @r_r_r
298    FMUL8ULx16  10 ..... 110110 ..... 0 0011 0111 .....    @r_r_r
299    FMULD8SUx16 10 ..... 110110 ..... 0 0011 1000 .....    @r_r_r
300    FMULD8ULx16 10 ..... 110110 ..... 0 0011 1001 .....    @r_r_r
301    FPACK32     10 ..... 110110 ..... 0 0011 1010 .....    @r_r_r
302    PDIST       10 ..... 110110 ..... 0 0011 1110 .....    @r_r_r
303
304    FALIGNDATAg 10 ..... 110110 ..... 0 0100 1000 .....    @r_r_r
305    FPMERGE     10 ..... 110110 ..... 0 0100 1011 .....    @r_r_r
306    BSHUFFLE    10 ..... 110110 ..... 0 0100 1100 .....    @r_r_r
307    FEXPAND     10 ..... 110110 ..... 0 0100 1101 .....    @r_r_r
308
309    FSRCd       10 ..... 110110 ..... 0 0111 0100 00000    @r_r1  # FSRC1d
310    FSRCs       10 ..... 110110 ..... 0 0111 0101 00000    @r_r1  # FSRC1s
311    FSRCd       10 ..... 110110 00000 0 0111 1000 .....    @r_r2  # FSRC2d
312    FSRCs       10 ..... 110110 00000 0 0111 1001 .....    @r_r2  # FSRC2s
313    FNOTd       10 ..... 110110 ..... 0 0110 1010 00000    @r_r1  # FNOT1d
314    FNOTs       10 ..... 110110 ..... 0 0110 1011 00000    @r_r1  # FNOT1s
315    FNOTd       10 ..... 110110 00000 0 0110 0110 .....    @r_r2  # FNOT2d
316    FNOTs       10 ..... 110110 00000 0 0110 0111 .....    @r_r2  # FNOT2s
317
318    FPADD16     10 ..... 110110 ..... 0 0101 0000 .....    @r_r_r
319    FPADD16s    10 ..... 110110 ..... 0 0101 0001 .....    @r_r_r
320    FPADD32     10 ..... 110110 ..... 0 0101 0010 .....    @r_r_r
321    FPADD32s    10 ..... 110110 ..... 0 0101 0011 .....    @r_r_r
322    FPSUB16     10 ..... 110110 ..... 0 0101 0100 .....    @r_r_r
323    FPSUB16s    10 ..... 110110 ..... 0 0101 0101 .....    @r_r_r
324    FPSUB32     10 ..... 110110 ..... 0 0101 0110 .....    @r_r_r
325    FPSUB32s    10 ..... 110110 ..... 0 0101 0111 .....    @r_r_r
326
327    FNORd       10 ..... 110110 ..... 0 0110 0010 .....    @r_r_r
328    FNORs       10 ..... 110110 ..... 0 0110 0011 .....    @r_r_r
329    FANDNOTd    10 ..... 110110 ..... 0 0110 0100 .....    @r_r_r   # FANDNOT2d
330    FANDNOTs    10 ..... 110110 ..... 0 0110 0101 .....    @r_r_r   # FANDNOT2s
331    FANDNOTd    10 ..... 110110 ..... 0 0110 1000 .....    @r_r_r_swap # ... 1d
332    FANDNOTs    10 ..... 110110 ..... 0 0110 1001 .....    @r_r_r_swap # ... 1s
333    FXORd       10 ..... 110110 ..... 0 0110 1100 .....    @r_r_r
334    FXORs       10 ..... 110110 ..... 0 0110 1101 .....    @r_r_r
335    FNANDd      10 ..... 110110 ..... 0 0110 1110 .....    @r_r_r
336    FNANDs      10 ..... 110110 ..... 0 0110 1111 .....    @r_r_r
337    FANDd       10 ..... 110110 ..... 0 0111 0000 .....    @r_r_r
338    FANDs       10 ..... 110110 ..... 0 0111 0001 .....    @r_r_r
339    FXNORd      10 ..... 110110 ..... 0 0111 0010 .....    @r_r_r
340    FXNORs      10 ..... 110110 ..... 0 0111 0011 .....    @r_r_r
341    FORNOTd     10 ..... 110110 ..... 0 0111 0110 .....    @r_r_r    # FORNOT2d
342    FORNOTs     10 ..... 110110 ..... 0 0111 0111 .....    @r_r_r    # FORNOT2s
343    FORNOTd     10 ..... 110110 ..... 0 0111 1010 .....    @r_r_r_swap # ... 1d
344    FORNOTs     10 ..... 110110 ..... 0 0111 1011 .....    @r_r_r_swap # ... 1s
345    FORd        10 ..... 110110 ..... 0 0111 1100 .....    @r_r_r
346    FORs        10 ..... 110110 ..... 0 0111 1101 .....    @r_r_r
347  ]
348  NCP           10 ----- 110110 ----- --------- -----      # v8 CPop1
349}
350
351NCP         10 ----- 110111 ----- --------- -----          # v8 CPop2
352
353##
354## Major Opcode 11 -- load and store instructions
355##
356
357%dfp_rd     25:5 !function=extract_dfpreg
358%qfp_rd     25:5 !function=extract_qfpreg
359
360&r_r_ri_asi rd rs1 rs2_or_imm asi imm:bool
361@r_r_ri_na  .. rd:5  ...... rs1:5 imm:1 rs2_or_imm:s13     &r_r_ri_asi asi=-1
362@d_r_ri_na  .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13     \
363            &r_r_ri_asi rd=%dfp_rd asi=-1
364@q_r_ri_na  .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13     \
365            &r_r_ri_asi rd=%qfp_rd asi=-1
366
367@r_r_r_asi  .. rd:5  ...... rs1:5 0     asi:8 rs2_or_imm:5 &r_r_ri_asi imm=0
368@r_r_i_asi  .. rd:5  ...... rs1:5 1     rs2_or_imm:s13     \
369            &r_r_ri_asi imm=1 asi=-2
370@d_r_r_asi  .. ..... ...... rs1:5 0     asi:8 rs2_or_imm:5 \
371            &r_r_ri_asi rd=%dfp_rd imm=0
372@d_r_i_asi  .. ..... ...... rs1:5 1     rs2_or_imm:s13     \
373            &r_r_ri_asi rd=%dfp_rd imm=1 asi=-2
374@q_r_r_asi  .. ..... ...... rs1:5 0     asi:8 rs2_or_imm:5 \
375            &r_r_ri_asi rd=%qfp_rd imm=0
376@q_r_i_asi  .. ..... ...... rs1:5 1     rs2_or_imm:s13     \
377            &r_r_ri_asi rd=%qfp_rd imm=1 asi=-2
378@casa_imm   .. rd:5  ...... rs1:5 1 00000000 rs2_or_imm:5  \
379            &r_r_ri_asi imm=1 asi=-2
380
381LDUW        11 ..... 000000 ..... . .............          @r_r_ri_na
382LDUB        11 ..... 000001 ..... . .............          @r_r_ri_na
383LDUH        11 ..... 000010 ..... . .............          @r_r_ri_na
384LDD         11 ..... 000011 ..... . .............          @r_r_ri_na
385LDSW        11 ..... 001000 ..... . .............          @r_r_ri_na
386LDSB        11 ..... 001001 ..... . .............          @r_r_ri_na
387LDSH        11 ..... 001010 ..... . .............          @r_r_ri_na
388LDX         11 ..... 001011 ..... . .............          @r_r_ri_na
389
390STW         11 ..... 000100 ..... . .............          @r_r_ri_na
391STB         11 ..... 000101 ..... . .............          @r_r_ri_na
392STH         11 ..... 000110 ..... . .............          @r_r_ri_na
393STD         11 ..... 000111 ..... . .............          @r_r_ri_na
394STX         11 ..... 001110 ..... . .............          @r_r_ri_na
395
396LDUW        11 ..... 010000 ..... . .............          @r_r_r_asi # LDUWA
397LDUW        11 ..... 010000 ..... . .............          @r_r_i_asi # LDUWA
398LDUB        11 ..... 010001 ..... . .............          @r_r_r_asi # LDUBA
399LDUB        11 ..... 010001 ..... . .............          @r_r_i_asi # LDUBA
400LDUH        11 ..... 010010 ..... . .............          @r_r_r_asi # LDUHA
401LDUH        11 ..... 010010 ..... . .............          @r_r_i_asi # LDUHA
402LDD         11 ..... 010011 ..... . .............          @r_r_r_asi # LDDA
403LDD         11 ..... 010011 ..... . .............          @r_r_i_asi # LDDA
404LDX         11 ..... 011011 ..... . .............          @r_r_r_asi # LDXA
405LDX         11 ..... 011011 ..... . .............          @r_r_i_asi # LDXA
406LDSB        11 ..... 011001 ..... . .............          @r_r_r_asi # LDSBA
407LDSB        11 ..... 011001 ..... . .............          @r_r_i_asi # LDSBA
408LDSH        11 ..... 011010 ..... . .............          @r_r_r_asi # LDSHA
409LDSH        11 ..... 011010 ..... . .............          @r_r_i_asi # LDSHA
410LDSW        11 ..... 011000 ..... . .............          @r_r_r_asi # LDSWA
411LDSW        11 ..... 011000 ..... . .............          @r_r_i_asi # LDSWA
412
413STW         11 ..... 010100 ..... . .............          @r_r_r_asi # STWA
414STW         11 ..... 010100 ..... . .............          @r_r_i_asi # STWA
415STB         11 ..... 010101 ..... . .............          @r_r_r_asi # STBA
416STB         11 ..... 010101 ..... . .............          @r_r_i_asi # STBA
417STH         11 ..... 010110 ..... . .............          @r_r_r_asi # STHA
418STH         11 ..... 010110 ..... . .............          @r_r_i_asi # STHA
419STD         11 ..... 010111 ..... . .............          @r_r_r_asi # STDA
420STD         11 ..... 010111 ..... . .............          @r_r_i_asi # STDA
421STX         11 ..... 011110 ..... . .............          @r_r_r_asi # STXA
422STX         11 ..... 011110 ..... . .............          @r_r_i_asi # STXA
423
424LDF         11 ..... 100000 ..... . .............          @r_r_ri_na
425LDFSR       11 00000 100001 ..... . .............          @n_r_ri
426LDXFSR      11 00001 100001 ..... . .............          @n_r_ri
427LDQF        11 ..... 100010 ..... . .............          @q_r_ri_na
428LDDF        11 ..... 100011 ..... . .............          @d_r_ri_na
429
430STF         11 ..... 100100 ..... . .............          @r_r_ri_na
431STFSR       11 00000 100101 ..... . .............          @n_r_ri
432STXFSR      11 00001 100101 ..... . .............          @n_r_ri
433{
434  STQF      11 ..... 100110 ..... . .............          @q_r_ri_na
435  STDFQ     11 ----- 100110 ----- - -------------
436}
437STDF        11 ..... 100111 ..... . .............          @d_r_ri_na
438
439LDSTUB      11 ..... 001101 ..... . .............          @r_r_ri_na
440LDSTUB      11 ..... 011101 ..... . .............          @r_r_r_asi # LDSTUBA
441LDSTUB      11 ..... 011101 ..... . .............          @r_r_i_asi # LDSTUBA
442
443SWAP        11 ..... 001111 ..... . .............          @r_r_ri_na
444SWAP        11 ..... 011111 ..... . .............          @r_r_r_asi # SWAPA
445SWAP        11 ..... 011111 ..... . .............          @r_r_i_asi # SWAPA
446
447CASA        11 ..... 111100 ..... . .............          @r_r_r_asi
448CASA        11 ..... 111100 ..... . .............          @casa_imm
449CASXA       11 ..... 111110 ..... . .............          @r_r_r_asi
450CASXA       11 ..... 111110 ..... . .............          @casa_imm
451
452NOP_v9      11 ----- 101101 ----- 0 00000000 -----         # PREFETCH
453NOP_v9      11 ----- 101101 ----- 1 -------------          # PREFETCH
454NOP_v9      11 ----- 111101 ----- - -------------          # PREFETCHA
455
456{
457  [
458    LDFA    11 ..... 110000 ..... . .............          @r_r_r_asi
459    LDFA    11 ..... 110000 ..... . .............          @r_r_i_asi
460  ]
461  NCP       11 ----- 110000 ----- --------- -----          # v8 LDC
462}
463NCP         11 ----- 110001 ----- --------- -----          # v8 LDCSR
464LDQFA       11 ..... 110010 ..... . .............          @q_r_r_asi
465LDQFA       11 ..... 110010 ..... . .............          @q_r_i_asi
466{
467  [
468    LDDFA   11 ..... 110011 ..... . .............          @d_r_r_asi
469    LDDFA   11 ..... 110011 ..... . .............          @d_r_i_asi
470  ]
471  NCP       11 ----- 110011 ----- --------- -----          # v8 LDDC
472}
473
474{
475  [
476    STFA    11 ..... 110100 ..... . .............          @r_r_r_asi
477    STFA    11 ..... 110100 ..... . .............          @r_r_i_asi
478  ]
479  NCP       11 ----- 110100 ----- --------- -----          # v8 STC
480}
481NCP         11 ----- 110101 ----- --------- -----          # v8 STCSR
482{
483  [
484    STQFA   11 ..... 110110 ..... . .............          @q_r_r_asi
485    STQFA   11 ..... 110110 ..... . .............          @q_r_i_asi
486  ]
487  NCP       11 ----- 110110 ----- --------- -----          # v8 STDCQ
488}
489{
490  [
491    STDFA   11 ..... 110111 ..... . .............          @d_r_r_asi
492    STDFA   11 ..... 110111 ..... . .............          @d_r_i_asi
493  ]
494  NCP       11 ----- 110111 ----- --------- -----          # v8 STDC
495}
496