xref: /qemu/target/sparc/insns.decode (revision 8c94bcd8507afd3f492d4b0dd7aefe5aaa9aab9a)
1878cc677SRichard Henderson# SPDX-License-Identifier: LGPL-2.0+
2878cc677SRichard Henderson#
3878cc677SRichard Henderson# Sparc instruction decode definitions.
4878cc677SRichard Henderson# Copyright (c) 2023 Richard Henderson <rth@twiddle.net>
5878cc677SRichard Henderson
66d2a0768SRichard Henderson##
76d2a0768SRichard Henderson## Major Opcodes 00 and 01 -- branches, call, and sethi.
86d2a0768SRichard Henderson##
96d2a0768SRichard Henderson
10276567aaSRichard Henderson&bcc    i a cond cc
11276567aaSRichard HendersonBPcc    00 a:1 cond:4   001 cc:1 0 - i:s19                 &bcc
12276567aaSRichard HendersonBicc    00 a:1 cond:4   010          i:s22                 &bcc cc=0
1345196ea4SRichard HendersonFBPfcc  00 a:1 cond:4   101 cc:2   - i:s19                 &bcc
1445196ea4SRichard HendersonFBfcc   00 a:1 cond:4   110          i:s22                 &bcc cc=0
15276567aaSRichard Henderson
16ab9ffe98SRichard Henderson%d16    20:s2 0:14
17ab9ffe98SRichard HendersonBPr     00 a:1 0 cond:3 011 ..     - rs1:5 ..............  i=%d16
18ab9ffe98SRichard Henderson
1945196ea4SRichard HendersonNCP     00 -   ----     111 ----------------------         # CBcc
2045196ea4SRichard Henderson
216d2a0768SRichard HendersonSETHI   00 rd:5         100 i:22
226d2a0768SRichard Henderson
2323ada1b1SRichard HendersonCALL    01 i:s30
2430376636SRichard Henderson
250faef01bSRichard Henderson##
260faef01bSRichard Henderson## Major Opcode 10 -- integer, floating-point, vis, and system insns.
270faef01bSRichard Henderson##
280faef01bSRichard Henderson
290faef01bSRichard Henderson&r_r_ri     rd rs1 rs2_or_imm imm:bool
300faef01bSRichard Henderson@n_r_ri     .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13     &r_r_ri rd=0
3186b82fe0SRichard Henderson@r_r_ri     .. rd:5  ...... rs1:5 imm:1 rs2_or_imm:s13     &r_r_ri
320faef01bSRichard Henderson
33428881deSRichard Henderson&r_r_ri_cc  rd rs1 rs2_or_imm imm:bool cc:bool
34428881deSRichard Henderson@r_r_ri_cc  .. rd:5  . cc:1 .... rs1:5 imm:1 rs2_or_imm:s13    &r_r_ri_cc
3522188d7dSRichard Henderson@r_r_ri_cc0 .. rd:5  ...... rs1:5 imm:1 rs2_or_imm:s13         &r_r_ri_cc cc=0
36a9aba13dSRichard Henderson@r_r_ri_cc1 .. rd:5  ...... rs1:5 imm:1 rs2_or_imm:s13         &r_r_ri_cc cc=1
37428881deSRichard Henderson
38b88ce6f2SRichard Henderson&r_r_r      rd rs1 rs2
39b88ce6f2SRichard Henderson@r_r_r      .. rd:5  ...... rs1:5 . ........ rs2:5         &r_r_r
407f10b52fSRichard Henderson@r_r_r_swap .. rd:5  ...... rs2:5 . ........ rs1:5         &r_r_r
41b88ce6f2SRichard Henderson
42baf3dbf2SRichard Henderson&r_r        rd rs
43baf3dbf2SRichard Henderson@r_r1       .. rd:5  ...... rs:5  . ........ .....         &r_r
44baf3dbf2SRichard Henderson@r_r2       .. rd:5  ...... ..... . ........ rs:5          &r_r
45baf3dbf2SRichard Henderson
46af25071cSRichard Henderson{
47af25071cSRichard Henderson  [
48af25071cSRichard Henderson    STBAR           10 00000 101000 01111 0 0000000000000
49af25071cSRichard Henderson    MEMBAR          10 00000 101000 01111 1 000000 cmask:3 mmask:4
50af25071cSRichard Henderson
51af25071cSRichard Henderson    RDCCR           10 rd:5  101000 00010 0 0000000000000
52af25071cSRichard Henderson    RDASI           10 rd:5  101000 00011 0 0000000000000
53af25071cSRichard Henderson    RDTICK          10 rd:5  101000 00100 0 0000000000000
54af25071cSRichard Henderson    RDPC            10 rd:5  101000 00101 0 0000000000000
55af25071cSRichard Henderson    RDFPRS          10 rd:5  101000 00110 0 0000000000000
56af25071cSRichard Henderson    RDASR17         10 rd:5  101000 10001 0 0000000000000
57af25071cSRichard Henderson    RDGSR           10 rd:5  101000 10011 0 0000000000000
58af25071cSRichard Henderson    RDSOFTINT       10 rd:5  101000 10110 0 0000000000000
59af25071cSRichard Henderson    RDTICK_CMPR     10 rd:5  101000 10111 0 0000000000000
60af25071cSRichard Henderson    RDSTICK         10 rd:5  101000 11000 0 0000000000000
61af25071cSRichard Henderson    RDSTICK_CMPR    10 rd:5  101000 11001 0 0000000000000
62af25071cSRichard Henderson    RDSTRAND_STATUS 10 rd:5  101000 11010 0 0000000000000
63af25071cSRichard Henderson  ]
64af25071cSRichard Henderson  # Before v8, all rs1 accepted; otherwise rs1==0.
65af25071cSRichard Henderson  RDY               10 rd:5  101000 rs1:5 0 0000000000000
66af25071cSRichard Henderson}
67af25071cSRichard Henderson
68668bb9b7SRichard Henderson{
690faef01bSRichard Henderson  [
700faef01bSRichard Henderson    WRY             10 00000 110000 ..... . .............  @n_r_ri
710faef01bSRichard Henderson    WRCCR           10 00010 110000 ..... . .............  @n_r_ri
720faef01bSRichard Henderson    WRASI           10 00011 110000 ..... . .............  @n_r_ri
730faef01bSRichard Henderson    WRFPRS          10 00110 110000 ..... . .............  @n_r_ri
740faef01bSRichard Henderson    {
750faef01bSRichard Henderson      WRGSR         10 10011 110000 ..... . .............  @n_r_ri
760faef01bSRichard Henderson      WRPOWERDOWN   10 10011 110000 ..... . .............  @n_r_ri
770faef01bSRichard Henderson    }
780faef01bSRichard Henderson    WRSOFTINT_SET   10 10100 110000 ..... . .............  @n_r_ri
790faef01bSRichard Henderson    WRSOFTINT_CLR   10 10101 110000 ..... . .............  @n_r_ri
800faef01bSRichard Henderson    WRSOFTINT       10 10110 110000 ..... . .............  @n_r_ri
810faef01bSRichard Henderson    WRTICK_CMPR     10 10111 110000 ..... . .............  @n_r_ri
820faef01bSRichard Henderson    WRSTICK         10 11000 110000 ..... . .............  @n_r_ri
830faef01bSRichard Henderson    WRSTICK_CMPR    10 11001 110000 ..... . .............  @n_r_ri
840faef01bSRichard Henderson  ]
850faef01bSRichard Henderson  # Before v8, rs1==0 was WRY, and the rest executed as nop.
860faef01bSRichard Henderson  [
870faef01bSRichard Henderson    NOP_v7          10 ----- 110000 ----- 0 00000000 -----
880faef01bSRichard Henderson    NOP_v7          10 ----- 110000 ----- 1 -------- -----
890faef01bSRichard Henderson  ]
900faef01bSRichard Henderson}
910faef01bSRichard Henderson
920faef01bSRichard Henderson{
93668bb9b7SRichard Henderson  RDPSR             10 rd:5  101001 00000 0 0000000000000
94668bb9b7SRichard Henderson  RDHPR_hpstate     10 rd:5  101001 00000 0 0000000000000
95668bb9b7SRichard Henderson}
96668bb9b7SRichard HendersonRDHPR_htstate       10 rd:5  101001 00001 0 0000000000000
97668bb9b7SRichard HendersonRDHPR_hintp         10 rd:5  101001 00011 0 0000000000000
98668bb9b7SRichard HendersonRDHPR_htba          10 rd:5  101001 00101 0 0000000000000
99668bb9b7SRichard HendersonRDHPR_hver          10 rd:5  101001 00110 0 0000000000000
100668bb9b7SRichard HendersonRDHPR_hstick_cmpr   10 rd:5  101001 11111 0 0000000000000
101668bb9b7SRichard Henderson
1025d617bfbSRichard Henderson{
10325524734SRichard Henderson  WRPSR             10 00000 110001 ..... . .............  @n_r_ri
10425524734SRichard Henderson  SAVED             10 00000 110001 00000 0 0000000000000
10525524734SRichard Henderson}
10625524734SRichard HendersonRESTORED            10 00001 110001 00000 0 0000000000000
10725524734SRichard Henderson# UA2005 ALLCLEAN
10825524734SRichard Henderson# UA2005 OTHERW
10925524734SRichard Henderson# UA2005 NORMALW
11025524734SRichard Henderson# UA2005 INVALW
11125524734SRichard Henderson
11225524734SRichard Henderson{
1135d617bfbSRichard Henderson  RDWIM             10 rd:5  101010 00000 0 0000000000000
1145d617bfbSRichard Henderson  RDPR_tpc          10 rd:5  101010 00000 0 0000000000000
1155d617bfbSRichard Henderson}
1165d617bfbSRichard HendersonRDPR_tnpc           10 rd:5  101010 00001 0 0000000000000
1175d617bfbSRichard HendersonRDPR_tstate         10 rd:5  101010 00010 0 0000000000000
1185d617bfbSRichard HendersonRDPR_tt             10 rd:5  101010 00011 0 0000000000000
1195d617bfbSRichard HendersonRDPR_tick           10 rd:5  101010 00100 0 0000000000000
1205d617bfbSRichard HendersonRDPR_tba            10 rd:5  101010 00101 0 0000000000000
1215d617bfbSRichard HendersonRDPR_pstate         10 rd:5  101010 00110 0 0000000000000
1225d617bfbSRichard HendersonRDPR_tl             10 rd:5  101010 00111 0 0000000000000
1235d617bfbSRichard HendersonRDPR_pil            10 rd:5  101010 01000 0 0000000000000
1245d617bfbSRichard HendersonRDPR_cwp            10 rd:5  101010 01001 0 0000000000000
1255d617bfbSRichard HendersonRDPR_cansave        10 rd:5  101010 01010 0 0000000000000
1265d617bfbSRichard HendersonRDPR_canrestore     10 rd:5  101010 01011 0 0000000000000
1275d617bfbSRichard HendersonRDPR_cleanwin       10 rd:5  101010 01100 0 0000000000000
1285d617bfbSRichard HendersonRDPR_otherwin       10 rd:5  101010 01101 0 0000000000000
1295d617bfbSRichard HendersonRDPR_wstate         10 rd:5  101010 01110 0 0000000000000
1305d617bfbSRichard HendersonRDPR_gl             10 rd:5  101010 10000 0 0000000000000
1315d617bfbSRichard HendersonRDPR_strand_status  10 rd:5  101010 11010 0 0000000000000
1325d617bfbSRichard HendersonRDPR_ver            10 rd:5  101010 11111 0 0000000000000
1335d617bfbSRichard Henderson
134e8325dc0SRichard Henderson{
1359422278eSRichard Henderson  WRWIM             10 00000 110010 ..... . .............  @n_r_ri
1369422278eSRichard Henderson  WRPR_tpc          10 00000 110010 ..... . .............  @n_r_ri
1379422278eSRichard Henderson}
1389422278eSRichard HendersonWRPR_tnpc           10 00001 110010 ..... . .............  @n_r_ri
1399422278eSRichard HendersonWRPR_tstate         10 00010 110010 ..... . .............  @n_r_ri
1409422278eSRichard HendersonWRPR_tt             10 00011 110010 ..... . .............  @n_r_ri
1419422278eSRichard HendersonWRPR_tick           10 00100 110010 ..... . .............  @n_r_ri
1429422278eSRichard HendersonWRPR_tba            10 00101 110010 ..... . .............  @n_r_ri
1439422278eSRichard HendersonWRPR_pstate         10 00110 110010 ..... . .............  @n_r_ri
1449422278eSRichard HendersonWRPR_tl             10 00111 110010 ..... . .............  @n_r_ri
1459422278eSRichard HendersonWRPR_pil            10 01000 110010 ..... . .............  @n_r_ri
1469422278eSRichard HendersonWRPR_cwp            10 01001 110010 ..... . .............  @n_r_ri
1479422278eSRichard HendersonWRPR_cansave        10 01010 110010 ..... . .............  @n_r_ri
1489422278eSRichard HendersonWRPR_canrestore     10 01011 110010 ..... . .............  @n_r_ri
1499422278eSRichard HendersonWRPR_cleanwin       10 01100 110010 ..... . .............  @n_r_ri
1509422278eSRichard HendersonWRPR_otherwin       10 01101 110010 ..... . .............  @n_r_ri
1519422278eSRichard HendersonWRPR_wstate         10 01110 110010 ..... . .............  @n_r_ri
1529422278eSRichard HendersonWRPR_gl             10 10000 110010 ..... . .............  @n_r_ri
1539422278eSRichard HendersonWRPR_strand_status  10 11010 110010 ..... . .............  @n_r_ri
1549422278eSRichard Henderson
1559422278eSRichard Henderson{
156e8325dc0SRichard Henderson  FLUSHW    10 00000 101011 00000 0 0000000000000
157e8325dc0SRichard Henderson  RDTBR     10 rd:5  101011 00000 0 0000000000000
158e8325dc0SRichard Henderson}
159e8325dc0SRichard Henderson
160bb97f2f5SRichard Henderson{
161bb97f2f5SRichard Henderson  WRTBR             10 00000 110011 ..... . .............  @n_r_ri
162bb97f2f5SRichard Henderson  WRHPR_hpstate     10 00000 110011 ..... . .............  @n_r_ri
163bb97f2f5SRichard Henderson}
164bb97f2f5SRichard HendersonWRHPR_htstate       10 00001 110011 ..... . .............  @n_r_ri
165bb97f2f5SRichard HendersonWRHPR_hintp         10 00011 110011 ..... . .............  @n_r_ri
166bb97f2f5SRichard HendersonWRHPR_htba          10 00101 110011 ..... . .............  @n_r_ri
167bb97f2f5SRichard HendersonWRHPR_hstick_cmpr   10 11111 110011 ..... . .............  @n_r_ri
168bb97f2f5SRichard Henderson
169428881deSRichard HendersonADD         10 ..... 0.0000 ..... . .............          @r_r_ri_cc
170428881deSRichard HendersonAND         10 ..... 0.0001 ..... . .............          @r_r_ri_cc
171428881deSRichard HendersonOR          10 ..... 0.0010 ..... . .............          @r_r_ri_cc
172428881deSRichard HendersonXOR         10 ..... 0.0011 ..... . .............          @r_r_ri_cc
173428881deSRichard HendersonSUB         10 ..... 0.0100 ..... . .............          @r_r_ri_cc
174428881deSRichard HendersonANDN        10 ..... 0.0101 ..... . .............          @r_r_ri_cc
175428881deSRichard HendersonORN         10 ..... 0.0110 ..... . .............          @r_r_ri_cc
176428881deSRichard HendersonXORN        10 ..... 0.0111 ..... . .............          @r_r_ri_cc
177420a187dSRichard HendersonADDC        10 ..... 0.1000 ..... . .............          @r_r_ri_cc
178dfebb950SRichard HendersonSUBC        10 ..... 0.1100 ..... . .............          @r_r_ri_cc
179428881deSRichard Henderson
18022188d7dSRichard HendersonMULX        10 ..... 001001 ..... . .............          @r_r_ri_cc0
181b5372650SRichard HendersonUMUL        10 ..... 0.1010 ..... . .............          @r_r_ri_cc
182b5372650SRichard HendersonSMUL        10 ..... 0.1011 ..... . .............          @r_r_ri_cc
183a9aba13dSRichard HendersonMULScc      10 ..... 100100 ..... . .............          @r_r_ri_cc1
18422188d7dSRichard Henderson
1854ee85ea9SRichard HendersonUDIVX       10 ..... 001101 ..... . .............          @r_r_ri_cc0
1864ee85ea9SRichard HendersonSDIVX       10 ..... 101101 ..... . .............          @r_r_ri_cc0
187c2636853SRichard HendersonUDIV        10 ..... 0.1110 ..... . .............          @r_r_ri_cc
188c2636853SRichard HendersonSDIV        10 ..... 0.1111 ..... . .............          @r_r_ri_cc
1894ee85ea9SRichard Henderson
190a9aba13dSRichard HendersonTADDcc      10 ..... 100000 ..... . .............          @r_r_ri_cc1
191a9aba13dSRichard HendersonTSUBcc      10 ..... 100001 ..... . .............          @r_r_ri_cc1
192a9aba13dSRichard HendersonTADDccTV    10 ..... 100010 ..... . .............          @r_r_ri_cc1
193a9aba13dSRichard HendersonTSUBccTV    10 ..... 100011 ..... . .............          @r_r_ri_cc1
194a9aba13dSRichard Henderson
1959c6ec5bcSRichard HendersonPOPC        10 rd:5  101110 00000 imm:1 rs2_or_imm:s13     \
1969c6ec5bcSRichard Henderson            &r_r_ri_cc rs1=0 cc=0
1979c6ec5bcSRichard Henderson
1985fc546eeSRichard Henderson&shiftr     rd rs1 rs2 x:bool
1995fc546eeSRichard Henderson@shiftr     .. rd:5  ...... rs1:5 . x:1 ....... rs2:5      &shiftr
2005fc546eeSRichard Henderson
2015fc546eeSRichard HendersonSLL_r       10 ..... 100101 ..... 0 .   0000000 .....      @shiftr
2025fc546eeSRichard HendersonSRL_r       10 ..... 100110 ..... 0 .   0000000 .....      @shiftr
2035fc546eeSRichard HendersonSRA_r       10 ..... 100111 ..... 0 .   0000000 .....      @shiftr
2045fc546eeSRichard Henderson
2055fc546eeSRichard Henderson&shifti     rd rs1 i x:bool
2065fc546eeSRichard Henderson@shifti     .. rd:5  ...... rs1:5 . x:1 ...... i:6         &shifti
2075fc546eeSRichard Henderson
2085fc546eeSRichard HendersonSLL_i       10 ..... 100101 ..... 1 .   000000 ......      @shifti
2095fc546eeSRichard HendersonSRL_i       10 ..... 100110 ..... 1 .   000000 ......      @shifti
2105fc546eeSRichard HendersonSRA_i       10 ..... 100111 ..... 1 .   000000 ......      @shifti
2115fc546eeSRichard Henderson
21230376636SRichard HendersonTcc_r       10 0 cond:4 111010 rs1:5 0 cc:1 0000000 rs2:5
21330376636SRichard Henderson{
21430376636SRichard Henderson  # For v7, the entire simm13 field is present, but masked to 7 bits.
21530376636SRichard Henderson  # For v8, [12:7] are reserved.  However, a compatibility note for
21630376636SRichard Henderson  # the Tcc insn in the v9 manual suggests that the v8 reserved field
21730376636SRichard Henderson  # was ignored and did not produce traps.
21830376636SRichard Henderson  Tcc_i_v7  10 0 cond:4 111010 rs1:5 1 ------ i:7
21930376636SRichard Henderson
22030376636SRichard Henderson  # For v9, bits [12:11] are cc1 and cc0 (and cc0 must be 0).
22130376636SRichard Henderson  # Bits [10:8] are reserved and the OSA2011 manual says they must be 0.
22230376636SRichard Henderson  Tcc_i_v9  10 0 cond:4 111010 rs1:5 1 cc:1 0 000 i:8
22330376636SRichard Henderson}
224fb4ed7aaSRichard Henderson
225fb4ed7aaSRichard HendersonMOVcc       10 rd:5  101100 1 cond:4 imm:1 cc:1 0 rs2_or_imm:s11
226fb4ed7aaSRichard HendersonMOVfcc      10 rd:5  101100 0 cond:4 imm:1 cc:2   rs2_or_imm:s11
227fb4ed7aaSRichard HendersonMOVR        10 rd:5  101111 rs1:5    imm:1 cond:3 rs2_or_imm:s10
228d3c7e8adSRichard Henderson
22986b82fe0SRichard HendersonJMPL        10 ..... 111000 ..... . .............          @r_r_ri
23086b82fe0SRichard Henderson{
23186b82fe0SRichard Henderson  RETT      10 00000 111001 ..... . .............          @n_r_ri
23286b82fe0SRichard Henderson  RETURN    10 00000 111001 ..... . .............          @n_r_ri
23386b82fe0SRichard Henderson}
234d3825800SRichard HendersonNOP         10 00000 111011 ----- 0 00000000-----          # FLUSH reg+reg
235d3825800SRichard HendersonNOP         10 00000 111011 ----- 1 -------------          # FLUSH reg+imm
236d3825800SRichard HendersonSAVE        10 ..... 111100 ..... . .............          @r_r_ri
237d3825800SRichard HendersonRESTORE     10 ..... 111101 ..... . .............          @r_r_ri
23886b82fe0SRichard Henderson
2398f75b8a4SRichard HendersonDONE        10 00000 111110 00000 0 0000000000000
2408f75b8a4SRichard HendersonRETRY       10 00001 111110 00000 0 0000000000000
2418f75b8a4SRichard Henderson
242baf3dbf2SRichard HendersonFMOVs       10 ..... 110100 00000 0 0000 0001 .....        @r_r2
243c6d83e4fSRichard HendersonFMOVd       10 ..... 110100 00000 0 0000 0010 .....        @r_r2
244baf3dbf2SRichard HendersonFNEGs       10 ..... 110100 00000 0 0000 0101 .....        @r_r2
245c6d83e4fSRichard HendersonFNEGd       10 ..... 110100 00000 0 0000 0110 .....        @r_r2
246baf3dbf2SRichard HendersonFABSs       10 ..... 110100 00000 0 0000 1001 .....        @r_r2
247c6d83e4fSRichard HendersonFABSd       10 ..... 110100 00000 0 0000 1010 .....        @r_r2
248119cb94fSRichard HendersonFSQRTs      10 ..... 110100 00000 0 0010 1001 .....        @r_r2
2498aa418b3SRichard HendersonFSQRTd      10 ..... 110100 00000 0 0010 1010 .....        @r_r2
250c995216bSRichard HendersonFSQRTq      10 ..... 110100 00000 0 0010 1011 .....        @r_r2
251c1514961SRichard HendersonFADDs       10 ..... 110100 ..... 0 0100 0001 .....        @r_r_r
252f2a59b0aSRichard HendersonFADDd       10 ..... 110100 ..... 0 0100 0010 .....        @r_r_r
253a4056239SRichard HendersonFADDq       10 ..... 110100 ..... 0 0100 0011 .....        @r_r_r
254c1514961SRichard HendersonFSUBs       10 ..... 110100 ..... 0 0100 0101 .....        @r_r_r
255f2a59b0aSRichard HendersonFSUBd       10 ..... 110100 ..... 0 0100 0110 .....        @r_r_r
256a4056239SRichard HendersonFSUBq       10 ..... 110100 ..... 0 0100 0111 .....        @r_r_r
257c1514961SRichard HendersonFMULs       10 ..... 110100 ..... 0 0100 1001 .....        @r_r_r
258f2a59b0aSRichard HendersonFMULd       10 ..... 110100 ..... 0 0100 1010 .....        @r_r_r
259a4056239SRichard HendersonFMULq       10 ..... 110100 ..... 0 0100 1011 .....        @r_r_r
260c1514961SRichard HendersonFDIVs       10 ..... 110100 ..... 0 0100 1101 .....        @r_r_r
261f2a59b0aSRichard HendersonFDIVd       10 ..... 110100 ..... 0 0100 1110 .....        @r_r_r
262a4056239SRichard HendersonFDIVq       10 ..... 110100 ..... 0 0100 1111 .....        @r_r_r
263ff4c711bSRichard HendersonFsMULd      10 ..... 110100 ..... 0 0110 1001 .....        @r_r_r
2645e3b17bbSRichard HendersonFdMULq      10 ..... 110100 ..... 0 0110 1110 .....        @r_r_r
2658aa418b3SRichard HendersonFdTOx       10 ..... 110100 00000 0 1000 0010 .....        @r_r2
266*8c94bcd8SRichard HendersonFxTOs       10 ..... 110100 00000 0 1000 0100 .....        @r_r2
2678aa418b3SRichard HendersonFxTOd       10 ..... 110100 00000 0 1000 1000 .....        @r_r2
268119cb94fSRichard HendersonFiTOs       10 ..... 110100 00000 0 1100 0100 .....        @r_r2
269*8c94bcd8SRichard HendersonFdTOs       10 ..... 110100 00000 0 1100 0110 .....        @r_r2
270119cb94fSRichard HendersonFsTOi       10 ..... 110100 00000 0 1101 0001 .....        @r_r2
271*8c94bcd8SRichard HendersonFdTOi       10 ..... 110100 00000 0 1101 0010 .....        @r_r2
272baf3dbf2SRichard Henderson
273b88ce6f2SRichard Henderson{
274b88ce6f2SRichard Henderson  [
275b88ce6f2SRichard Henderson    EDGE8cc     10 ..... 110110 ..... 0 0000 0000 .....    @r_r_r
276b88ce6f2SRichard Henderson    EDGE8N      10 ..... 110110 ..... 0 0000 0001 .....    @r_r_r
277b88ce6f2SRichard Henderson    EDGE8Lcc    10 ..... 110110 ..... 0 0000 0010 .....    @r_r_r
278b88ce6f2SRichard Henderson    EDGE8LN     10 ..... 110110 ..... 0 0000 0011 .....    @r_r_r
279b88ce6f2SRichard Henderson    EDGE16cc    10 ..... 110110 ..... 0 0000 0100 .....    @r_r_r
280b88ce6f2SRichard Henderson    EDGE16N     10 ..... 110110 ..... 0 0000 0101 .....    @r_r_r
281b88ce6f2SRichard Henderson    EDGE16Lcc   10 ..... 110110 ..... 0 0000 0110 .....    @r_r_r
282b88ce6f2SRichard Henderson    EDGE16LN    10 ..... 110110 ..... 0 0000 0111 .....    @r_r_r
283b88ce6f2SRichard Henderson    EDGE32cc    10 ..... 110110 ..... 0 0000 1000 .....    @r_r_r
284b88ce6f2SRichard Henderson    EDGE32N     10 ..... 110110 ..... 0 0000 1001 .....    @r_r_r
285b88ce6f2SRichard Henderson    EDGE32Lcc   10 ..... 110110 ..... 0 0000 1010 .....    @r_r_r
286b88ce6f2SRichard Henderson    EDGE32LN    10 ..... 110110 ..... 0 0000 1011 .....    @r_r_r
28745bfed3bSRichard Henderson
28845bfed3bSRichard Henderson    ARRAY8      10 ..... 110110 ..... 0 0001 0000 .....    @r_r_r
28945bfed3bSRichard Henderson    ARRAY16     10 ..... 110110 ..... 0 0001 0010 .....    @r_r_r
29045bfed3bSRichard Henderson    ARRAY32     10 ..... 110110 ..... 0 0001 0100 .....    @r_r_r
2919e20ca94SRichard Henderson
2929e20ca94SRichard Henderson    ALIGNADDR   10 ..... 110110 ..... 0 0001 1000 .....    @r_r_r
2939e20ca94SRichard Henderson    ALIGNADDRL  10 ..... 110110 ..... 0 0001 1010 .....    @r_r_r
29439ca3490SRichard Henderson
29539ca3490SRichard Henderson    BMASK       10 ..... 110110 ..... 0 0001 1001 .....    @r_r_r
296baf3dbf2SRichard Henderson
297e06c9f83SRichard Henderson    FMUL8x16    10 ..... 110110 ..... 0 0011 0001 .....    @r_r_r
298e06c9f83SRichard Henderson    FMUL8x16AU  10 ..... 110110 ..... 0 0011 0011 .....    @r_r_r
299e06c9f83SRichard Henderson    FMUL8x16AL  10 ..... 110110 ..... 0 0011 0101 .....    @r_r_r
300e06c9f83SRichard Henderson    FMUL8SUx16  10 ..... 110110 ..... 0 0011 0110 .....    @r_r_r
301e06c9f83SRichard Henderson    FMUL8ULx16  10 ..... 110110 ..... 0 0011 0111 .....    @r_r_r
302e06c9f83SRichard Henderson    FMULD8SUx16 10 ..... 110110 ..... 0 0011 1000 .....    @r_r_r
303e06c9f83SRichard Henderson    FMULD8ULx16 10 ..... 110110 ..... 0 0011 1001 .....    @r_r_r
3044b6edc0aSRichard Henderson    FPACK32     10 ..... 110110 ..... 0 0011 1010 .....    @r_r_r
305afb04344SRichard Henderson    PDIST       10 ..... 110110 ..... 0 0011 1110 .....    @r_r_r
306e06c9f83SRichard Henderson
3074b6edc0aSRichard Henderson    FALIGNDATAg 10 ..... 110110 ..... 0 0100 1000 .....    @r_r_r
308e06c9f83SRichard Henderson    FPMERGE     10 ..... 110110 ..... 0 0100 1011 .....    @r_r_r
3094b6edc0aSRichard Henderson    BSHUFFLE    10 ..... 110110 ..... 0 0100 1100 .....    @r_r_r
310e06c9f83SRichard Henderson    FEXPAND     10 ..... 110110 ..... 0 0100 1101 .....    @r_r_r
311e06c9f83SRichard Henderson
312c6d83e4fSRichard Henderson    FSRCd       10 ..... 110110 ..... 0 0111 0100 00000    @r_r1  # FSRC1d
313baf3dbf2SRichard Henderson    FSRCs       10 ..... 110110 ..... 0 0111 0101 00000    @r_r1  # FSRC1s
314c6d83e4fSRichard Henderson    FSRCd       10 ..... 110110 00000 0 0111 1000 .....    @r_r2  # FSRC2d
315baf3dbf2SRichard Henderson    FSRCs       10 ..... 110110 00000 0 0111 1001 .....    @r_r2  # FSRC2s
316c6d83e4fSRichard Henderson    FNOTd       10 ..... 110110 ..... 0 0110 1010 00000    @r_r1  # FNOT1d
317baf3dbf2SRichard Henderson    FNOTs       10 ..... 110110 ..... 0 0110 1011 00000    @r_r1  # FNOT1s
318c6d83e4fSRichard Henderson    FNOTd       10 ..... 110110 00000 0 0110 0110 .....    @r_r2  # FNOT2d
319baf3dbf2SRichard Henderson    FNOTs       10 ..... 110110 00000 0 0110 0111 .....    @r_r2  # FNOT2s
3207f10b52fSRichard Henderson
321e06c9f83SRichard Henderson    FPADD16     10 ..... 110110 ..... 0 0101 0000 .....    @r_r_r
3227f10b52fSRichard Henderson    FPADD16s    10 ..... 110110 ..... 0 0101 0001 .....    @r_r_r
323e06c9f83SRichard Henderson    FPADD32     10 ..... 110110 ..... 0 0101 0010 .....    @r_r_r
3247f10b52fSRichard Henderson    FPADD32s    10 ..... 110110 ..... 0 0101 0011 .....    @r_r_r
325e06c9f83SRichard Henderson    FPSUB16     10 ..... 110110 ..... 0 0101 0100 .....    @r_r_r
3267f10b52fSRichard Henderson    FPSUB16s    10 ..... 110110 ..... 0 0101 0101 .....    @r_r_r
327e06c9f83SRichard Henderson    FPSUB32     10 ..... 110110 ..... 0 0101 0110 .....    @r_r_r
3287f10b52fSRichard Henderson    FPSUB32s    10 ..... 110110 ..... 0 0101 0111 .....    @r_r_r
329e06c9f83SRichard Henderson
330e06c9f83SRichard Henderson    FNORd       10 ..... 110110 ..... 0 0110 0010 .....    @r_r_r
3317f10b52fSRichard Henderson    FNORs       10 ..... 110110 ..... 0 0110 0011 .....    @r_r_r
332e06c9f83SRichard Henderson    FANDNOTd    10 ..... 110110 ..... 0 0110 0100 .....    @r_r_r   # FANDNOT2d
3337f10b52fSRichard Henderson    FANDNOTs    10 ..... 110110 ..... 0 0110 0101 .....    @r_r_r   # FANDNOT2s
334e06c9f83SRichard Henderson    FANDNOTd    10 ..... 110110 ..... 0 0110 1000 .....    @r_r_r_swap # ... 1d
3357f10b52fSRichard Henderson    FANDNOTs    10 ..... 110110 ..... 0 0110 1001 .....    @r_r_r_swap # ... 1s
336e06c9f83SRichard Henderson    FXORd       10 ..... 110110 ..... 0 0110 1100 .....    @r_r_r
3377f10b52fSRichard Henderson    FXORs       10 ..... 110110 ..... 0 0110 1101 .....    @r_r_r
338e06c9f83SRichard Henderson    FNANDd      10 ..... 110110 ..... 0 0110 1110 .....    @r_r_r
3397f10b52fSRichard Henderson    FNANDs      10 ..... 110110 ..... 0 0110 1111 .....    @r_r_r
340e06c9f83SRichard Henderson    FANDd       10 ..... 110110 ..... 0 0111 0000 .....    @r_r_r
3417f10b52fSRichard Henderson    FANDs       10 ..... 110110 ..... 0 0111 0001 .....    @r_r_r
342e06c9f83SRichard Henderson    FXNORd      10 ..... 110110 ..... 0 0111 0010 .....    @r_r_r
3437f10b52fSRichard Henderson    FXNORs      10 ..... 110110 ..... 0 0111 0011 .....    @r_r_r
344e06c9f83SRichard Henderson    FORNOTd     10 ..... 110110 ..... 0 0111 0110 .....    @r_r_r    # FORNOT2d
3457f10b52fSRichard Henderson    FORNOTs     10 ..... 110110 ..... 0 0111 0111 .....    @r_r_r    # FORNOT2s
346e06c9f83SRichard Henderson    FORNOTd     10 ..... 110110 ..... 0 0111 1010 .....    @r_r_r_swap # ... 1d
3477f10b52fSRichard Henderson    FORNOTs     10 ..... 110110 ..... 0 0111 1011 .....    @r_r_r_swap # ... 1s
348e06c9f83SRichard Henderson    FORd        10 ..... 110110 ..... 0 0111 1100 .....    @r_r_r
3497f10b52fSRichard Henderson    FORs        10 ..... 110110 ..... 0 0111 1101 .....    @r_r_r
350b88ce6f2SRichard Henderson  ]
3515458fd31SRichard Henderson  NCP           10 ----- 110110 ----- --------- -----      # v8 CPop1
352b88ce6f2SRichard Henderson}
353b88ce6f2SRichard Henderson
3545458fd31SRichard HendersonNCP         10 ----- 110111 ----- --------- -----          # v8 CPop2
3555458fd31SRichard Henderson
3560880d20bSRichard Henderson##
3570880d20bSRichard Henderson## Major Opcode 11 -- load and store instructions
3580880d20bSRichard Henderson##
3590880d20bSRichard Henderson
36006c060d9SRichard Henderson%dfp_rd     25:5 !function=extract_dfpreg
36106c060d9SRichard Henderson%qfp_rd     25:5 !function=extract_qfpreg
36206c060d9SRichard Henderson
3630880d20bSRichard Henderson&r_r_ri_asi rd rs1 rs2_or_imm asi imm:bool
3640880d20bSRichard Henderson@r_r_ri_na  .. rd:5  ...... rs1:5 imm:1 rs2_or_imm:s13     &r_r_ri_asi asi=-1
36506c060d9SRichard Henderson@d_r_ri_na  .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13     \
36606c060d9SRichard Henderson            &r_r_ri_asi rd=%dfp_rd asi=-1
36706c060d9SRichard Henderson@q_r_ri_na  .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13     \
36806c060d9SRichard Henderson            &r_r_ri_asi rd=%qfp_rd asi=-1
36906c060d9SRichard Henderson
37042071fc1SRichard Henderson@r_r_r_asi  .. rd:5  ...... rs1:5 0     asi:8 rs2_or_imm:5 &r_r_ri_asi imm=0
37142071fc1SRichard Henderson@r_r_i_asi  .. rd:5  ...... rs1:5 1     rs2_or_imm:s13     \
37242071fc1SRichard Henderson            &r_r_ri_asi imm=1 asi=-2
373287b1152SRichard Henderson@d_r_r_asi  .. ..... ...... rs1:5 0     asi:8 rs2_or_imm:5 \
374287b1152SRichard Henderson            &r_r_ri_asi rd=%dfp_rd imm=0
375287b1152SRichard Henderson@d_r_i_asi  .. ..... ...... rs1:5 1     rs2_or_imm:s13     \
376287b1152SRichard Henderson            &r_r_ri_asi rd=%dfp_rd imm=1 asi=-2
377287b1152SRichard Henderson@q_r_r_asi  .. ..... ...... rs1:5 0     asi:8 rs2_or_imm:5 \
378287b1152SRichard Henderson            &r_r_ri_asi rd=%qfp_rd imm=0
379287b1152SRichard Henderson@q_r_i_asi  .. ..... ...... rs1:5 1     rs2_or_imm:s13     \
380287b1152SRichard Henderson            &r_r_ri_asi rd=%qfp_rd imm=1 asi=-2
381d0a11d25SRichard Henderson@casa_imm   .. rd:5  ...... rs1:5 1 00000000 rs2_or_imm:5  \
382d0a11d25SRichard Henderson            &r_r_ri_asi imm=1 asi=-2
3830880d20bSRichard Henderson
3840880d20bSRichard HendersonLDUW        11 ..... 000000 ..... . .............          @r_r_ri_na
3850880d20bSRichard HendersonLDUB        11 ..... 000001 ..... . .............          @r_r_ri_na
3860880d20bSRichard HendersonLDUH        11 ..... 000010 ..... . .............          @r_r_ri_na
3870880d20bSRichard HendersonLDD         11 ..... 000011 ..... . .............          @r_r_ri_na
3880880d20bSRichard HendersonLDSW        11 ..... 001000 ..... . .............          @r_r_ri_na
3890880d20bSRichard HendersonLDSB        11 ..... 001001 ..... . .............          @r_r_ri_na
3900880d20bSRichard HendersonLDSH        11 ..... 001010 ..... . .............          @r_r_ri_na
3910880d20bSRichard HendersonLDX         11 ..... 001011 ..... . .............          @r_r_ri_na
3920880d20bSRichard Henderson
3930880d20bSRichard HendersonSTW         11 ..... 000100 ..... . .............          @r_r_ri_na
3940880d20bSRichard HendersonSTB         11 ..... 000101 ..... . .............          @r_r_ri_na
3950880d20bSRichard HendersonSTH         11 ..... 000110 ..... . .............          @r_r_ri_na
3960880d20bSRichard HendersonSTD         11 ..... 000111 ..... . .............          @r_r_ri_na
3970880d20bSRichard HendersonSTX         11 ..... 001110 ..... . .............          @r_r_ri_na
3980880d20bSRichard Henderson
39942071fc1SRichard HendersonLDUW        11 ..... 010000 ..... . .............          @r_r_r_asi # LDUWA
40042071fc1SRichard HendersonLDUW        11 ..... 010000 ..... . .............          @r_r_i_asi # LDUWA
40142071fc1SRichard HendersonLDUB        11 ..... 010001 ..... . .............          @r_r_r_asi # LDUBA
40242071fc1SRichard HendersonLDUB        11 ..... 010001 ..... . .............          @r_r_i_asi # LDUBA
40342071fc1SRichard HendersonLDUH        11 ..... 010010 ..... . .............          @r_r_r_asi # LDUHA
40442071fc1SRichard HendersonLDUH        11 ..... 010010 ..... . .............          @r_r_i_asi # LDUHA
40542071fc1SRichard HendersonLDD         11 ..... 010011 ..... . .............          @r_r_r_asi # LDDA
40642071fc1SRichard HendersonLDD         11 ..... 010011 ..... . .............          @r_r_i_asi # LDDA
40742071fc1SRichard HendersonLDX         11 ..... 011011 ..... . .............          @r_r_r_asi # LDXA
40842071fc1SRichard HendersonLDX         11 ..... 011011 ..... . .............          @r_r_i_asi # LDXA
40942071fc1SRichard HendersonLDSB        11 ..... 011001 ..... . .............          @r_r_r_asi # LDSBA
41042071fc1SRichard HendersonLDSB        11 ..... 011001 ..... . .............          @r_r_i_asi # LDSBA
41142071fc1SRichard HendersonLDSH        11 ..... 011010 ..... . .............          @r_r_r_asi # LDSHA
41242071fc1SRichard HendersonLDSH        11 ..... 011010 ..... . .............          @r_r_i_asi # LDSHA
41342071fc1SRichard HendersonLDSW        11 ..... 011000 ..... . .............          @r_r_r_asi # LDSWA
41442071fc1SRichard HendersonLDSW        11 ..... 011000 ..... . .............          @r_r_i_asi # LDSWA
41542071fc1SRichard Henderson
41642071fc1SRichard HendersonSTW         11 ..... 010100 ..... . .............          @r_r_r_asi # STWA
41742071fc1SRichard HendersonSTW         11 ..... 010100 ..... . .............          @r_r_i_asi # STWA
41842071fc1SRichard HendersonSTB         11 ..... 010101 ..... . .............          @r_r_r_asi # STBA
41942071fc1SRichard HendersonSTB         11 ..... 010101 ..... . .............          @r_r_i_asi # STBA
42042071fc1SRichard HendersonSTH         11 ..... 010110 ..... . .............          @r_r_r_asi # STHA
42142071fc1SRichard HendersonSTH         11 ..... 010110 ..... . .............          @r_r_i_asi # STHA
42242071fc1SRichard HendersonSTD         11 ..... 010111 ..... . .............          @r_r_r_asi # STDA
42342071fc1SRichard HendersonSTD         11 ..... 010111 ..... . .............          @r_r_i_asi # STDA
42442071fc1SRichard HendersonSTX         11 ..... 011110 ..... . .............          @r_r_r_asi # STXA
42542071fc1SRichard HendersonSTX         11 ..... 011110 ..... . .............          @r_r_i_asi # STXA
42642071fc1SRichard Henderson
42706c060d9SRichard HendersonLDF         11 ..... 100000 ..... . .............          @r_r_ri_na
4283d3c0673SRichard HendersonLDFSR       11 00000 100001 ..... . .............          @n_r_ri
4293d3c0673SRichard HendersonLDXFSR      11 00001 100001 ..... . .............          @n_r_ri
43006c060d9SRichard HendersonLDQF        11 ..... 100010 ..... . .............          @q_r_ri_na
43106c060d9SRichard HendersonLDDF        11 ..... 100011 ..... . .............          @d_r_ri_na
43206c060d9SRichard Henderson
43306c060d9SRichard HendersonSTF         11 ..... 100100 ..... . .............          @r_r_ri_na
4343d3c0673SRichard HendersonSTFSR       11 00000 100101 ..... . .............          @n_r_ri
4353d3c0673SRichard HendersonSTXFSR      11 00001 100101 ..... . .............          @n_r_ri
43606c060d9SRichard Henderson{
43706c060d9SRichard Henderson  STQF      11 ..... 100110 ..... . .............          @q_r_ri_na
43806c060d9SRichard Henderson  STDFQ     11 ----- 100110 ----- - -------------
43906c060d9SRichard Henderson}
44006c060d9SRichard HendersonSTDF        11 ..... 100111 ..... . .............          @d_r_ri_na
44106c060d9SRichard Henderson
442cf07cd1eSRichard HendersonLDSTUB      11 ..... 001101 ..... . .............          @r_r_ri_na
443cf07cd1eSRichard HendersonLDSTUB      11 ..... 011101 ..... . .............          @r_r_r_asi # LDSTUBA
444cf07cd1eSRichard HendersonLDSTUB      11 ..... 011101 ..... . .............          @r_r_i_asi # LDSTUBA
445cf07cd1eSRichard Henderson
446dca544b9SRichard HendersonSWAP        11 ..... 001111 ..... . .............          @r_r_ri_na
447dca544b9SRichard HendersonSWAP        11 ..... 011111 ..... . .............          @r_r_r_asi # SWAPA
448dca544b9SRichard HendersonSWAP        11 ..... 011111 ..... . .............          @r_r_i_asi # SWAPA
449dca544b9SRichard Henderson
450d0a11d25SRichard HendersonCASA        11 ..... 111100 ..... . .............          @r_r_r_asi
451d0a11d25SRichard HendersonCASA        11 ..... 111100 ..... . .............          @casa_imm
452d0a11d25SRichard HendersonCASXA       11 ..... 111110 ..... . .............          @r_r_r_asi
453d0a11d25SRichard HendersonCASXA       11 ..... 111110 ..... . .............          @casa_imm
454d0a11d25SRichard Henderson
4555458fd31SRichard HendersonNOP_v9      11 ----- 101101 ----- 0 00000000 -----         # PREFETCH
4565458fd31SRichard HendersonNOP_v9      11 ----- 101101 ----- 1 -------------          # PREFETCH
4575458fd31SRichard HendersonNOP_v9      11 ----- 111101 ----- - -------------          # PREFETCHA
458d3c7e8adSRichard Henderson
459287b1152SRichard Henderson{
460287b1152SRichard Henderson  [
461287b1152SRichard Henderson    LDFA    11 ..... 110000 ..... . .............          @r_r_r_asi
462287b1152SRichard Henderson    LDFA    11 ..... 110000 ..... . .............          @r_r_i_asi
463287b1152SRichard Henderson  ]
464d3c7e8adSRichard Henderson  NCP       11 ----- 110000 ----- --------- -----          # v8 LDC
465287b1152SRichard Henderson}
466d3c7e8adSRichard HendersonNCP         11 ----- 110001 ----- --------- -----          # v8 LDCSR
467287b1152SRichard HendersonLDQFA       11 ..... 110010 ..... . .............          @q_r_r_asi
468287b1152SRichard HendersonLDQFA       11 ..... 110010 ..... . .............          @q_r_i_asi
469287b1152SRichard Henderson{
470287b1152SRichard Henderson  [
471287b1152SRichard Henderson    LDDFA   11 ..... 110011 ..... . .............          @d_r_r_asi
472287b1152SRichard Henderson    LDDFA   11 ..... 110011 ..... . .............          @d_r_i_asi
473287b1152SRichard Henderson  ]
474d3c7e8adSRichard Henderson  NCP       11 ----- 110011 ----- --------- -----          # v8 LDDC
475287b1152SRichard Henderson}
476287b1152SRichard Henderson
477287b1152SRichard Henderson{
478287b1152SRichard Henderson  [
479287b1152SRichard Henderson    STFA    11 ..... 110100 ..... . .............          @r_r_r_asi
480287b1152SRichard Henderson    STFA    11 ..... 110100 ..... . .............          @r_r_i_asi
481287b1152SRichard Henderson  ]
482d3c7e8adSRichard Henderson  NCP       11 ----- 110100 ----- --------- -----          # v8 STC
483287b1152SRichard Henderson}
484d3c7e8adSRichard HendersonNCP         11 ----- 110101 ----- --------- -----          # v8 STCSR
485287b1152SRichard Henderson{
486287b1152SRichard Henderson  [
487287b1152SRichard Henderson    STQFA   11 ..... 110110 ..... . .............          @q_r_r_asi
488287b1152SRichard Henderson    STQFA   11 ..... 110110 ..... . .............          @q_r_i_asi
489287b1152SRichard Henderson  ]
490d3c7e8adSRichard Henderson  NCP       11 ----- 110110 ----- --------- -----          # v8 STDCQ
491287b1152SRichard Henderson}
492287b1152SRichard Henderson{
493287b1152SRichard Henderson  [
494287b1152SRichard Henderson    STDFA   11 ..... 110111 ..... . .............          @d_r_r_asi
495287b1152SRichard Henderson    STDFA   11 ..... 110111 ..... . .............          @d_r_i_asi
496287b1152SRichard Henderson  ]
497d3c7e8adSRichard Henderson  NCP       11 ----- 110111 ----- --------- -----          # v8 STDC
498287b1152SRichard Henderson}
499