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 310faef01bSRichard Henderson 32428881deSRichard Henderson&r_r_ri_cc rd rs1 rs2_or_imm imm:bool cc:bool 33428881deSRichard Henderson@r_r_ri_cc .. rd:5 . cc:1 .... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri_cc 3422188d7dSRichard Henderson@r_r_ri_cc0 .. rd:5 ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri_cc cc=0 35*a9aba13dSRichard Henderson@r_r_ri_cc1 .. rd:5 ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri_cc cc=1 36428881deSRichard Henderson 37af25071cSRichard Henderson{ 38af25071cSRichard Henderson [ 39af25071cSRichard Henderson STBAR 10 00000 101000 01111 0 0000000000000 40af25071cSRichard Henderson MEMBAR 10 00000 101000 01111 1 000000 cmask:3 mmask:4 41af25071cSRichard Henderson 42af25071cSRichard Henderson RDCCR 10 rd:5 101000 00010 0 0000000000000 43af25071cSRichard Henderson RDASI 10 rd:5 101000 00011 0 0000000000000 44af25071cSRichard Henderson RDTICK 10 rd:5 101000 00100 0 0000000000000 45af25071cSRichard Henderson RDPC 10 rd:5 101000 00101 0 0000000000000 46af25071cSRichard Henderson RDFPRS 10 rd:5 101000 00110 0 0000000000000 47af25071cSRichard Henderson RDASR17 10 rd:5 101000 10001 0 0000000000000 48af25071cSRichard Henderson RDGSR 10 rd:5 101000 10011 0 0000000000000 49af25071cSRichard Henderson RDSOFTINT 10 rd:5 101000 10110 0 0000000000000 50af25071cSRichard Henderson RDTICK_CMPR 10 rd:5 101000 10111 0 0000000000000 51af25071cSRichard Henderson RDSTICK 10 rd:5 101000 11000 0 0000000000000 52af25071cSRichard Henderson RDSTICK_CMPR 10 rd:5 101000 11001 0 0000000000000 53af25071cSRichard Henderson RDSTRAND_STATUS 10 rd:5 101000 11010 0 0000000000000 54af25071cSRichard Henderson ] 55af25071cSRichard Henderson # Before v8, all rs1 accepted; otherwise rs1==0. 56af25071cSRichard Henderson RDY 10 rd:5 101000 rs1:5 0 0000000000000 57af25071cSRichard Henderson} 58af25071cSRichard Henderson 59668bb9b7SRichard Henderson{ 600faef01bSRichard Henderson [ 610faef01bSRichard Henderson WRY 10 00000 110000 ..... . ............. @n_r_ri 620faef01bSRichard Henderson WRCCR 10 00010 110000 ..... . ............. @n_r_ri 630faef01bSRichard Henderson WRASI 10 00011 110000 ..... . ............. @n_r_ri 640faef01bSRichard Henderson WRFPRS 10 00110 110000 ..... . ............. @n_r_ri 650faef01bSRichard Henderson { 660faef01bSRichard Henderson WRGSR 10 10011 110000 ..... . ............. @n_r_ri 670faef01bSRichard Henderson WRPOWERDOWN 10 10011 110000 ..... . ............. @n_r_ri 680faef01bSRichard Henderson } 690faef01bSRichard Henderson WRSOFTINT_SET 10 10100 110000 ..... . ............. @n_r_ri 700faef01bSRichard Henderson WRSOFTINT_CLR 10 10101 110000 ..... . ............. @n_r_ri 710faef01bSRichard Henderson WRSOFTINT 10 10110 110000 ..... . ............. @n_r_ri 720faef01bSRichard Henderson WRTICK_CMPR 10 10111 110000 ..... . ............. @n_r_ri 730faef01bSRichard Henderson WRSTICK 10 11000 110000 ..... . ............. @n_r_ri 740faef01bSRichard Henderson WRSTICK_CMPR 10 11001 110000 ..... . ............. @n_r_ri 750faef01bSRichard Henderson ] 760faef01bSRichard Henderson # Before v8, rs1==0 was WRY, and the rest executed as nop. 770faef01bSRichard Henderson [ 780faef01bSRichard Henderson NOP_v7 10 ----- 110000 ----- 0 00000000 ----- 790faef01bSRichard Henderson NOP_v7 10 ----- 110000 ----- 1 -------- ----- 800faef01bSRichard Henderson ] 810faef01bSRichard Henderson} 820faef01bSRichard Henderson 830faef01bSRichard Henderson{ 84668bb9b7SRichard Henderson RDPSR 10 rd:5 101001 00000 0 0000000000000 85668bb9b7SRichard Henderson RDHPR_hpstate 10 rd:5 101001 00000 0 0000000000000 86668bb9b7SRichard Henderson} 87668bb9b7SRichard HendersonRDHPR_htstate 10 rd:5 101001 00001 0 0000000000000 88668bb9b7SRichard HendersonRDHPR_hintp 10 rd:5 101001 00011 0 0000000000000 89668bb9b7SRichard HendersonRDHPR_htba 10 rd:5 101001 00101 0 0000000000000 90668bb9b7SRichard HendersonRDHPR_hver 10 rd:5 101001 00110 0 0000000000000 91668bb9b7SRichard HendersonRDHPR_hstick_cmpr 10 rd:5 101001 11111 0 0000000000000 92668bb9b7SRichard Henderson 935d617bfbSRichard Henderson{ 9425524734SRichard Henderson WRPSR 10 00000 110001 ..... . ............. @n_r_ri 9525524734SRichard Henderson SAVED 10 00000 110001 00000 0 0000000000000 9625524734SRichard Henderson} 9725524734SRichard HendersonRESTORED 10 00001 110001 00000 0 0000000000000 9825524734SRichard Henderson# UA2005 ALLCLEAN 9925524734SRichard Henderson# UA2005 OTHERW 10025524734SRichard Henderson# UA2005 NORMALW 10125524734SRichard Henderson# UA2005 INVALW 10225524734SRichard Henderson 10325524734SRichard Henderson{ 1045d617bfbSRichard Henderson RDWIM 10 rd:5 101010 00000 0 0000000000000 1055d617bfbSRichard Henderson RDPR_tpc 10 rd:5 101010 00000 0 0000000000000 1065d617bfbSRichard Henderson} 1075d617bfbSRichard HendersonRDPR_tnpc 10 rd:5 101010 00001 0 0000000000000 1085d617bfbSRichard HendersonRDPR_tstate 10 rd:5 101010 00010 0 0000000000000 1095d617bfbSRichard HendersonRDPR_tt 10 rd:5 101010 00011 0 0000000000000 1105d617bfbSRichard HendersonRDPR_tick 10 rd:5 101010 00100 0 0000000000000 1115d617bfbSRichard HendersonRDPR_tba 10 rd:5 101010 00101 0 0000000000000 1125d617bfbSRichard HendersonRDPR_pstate 10 rd:5 101010 00110 0 0000000000000 1135d617bfbSRichard HendersonRDPR_tl 10 rd:5 101010 00111 0 0000000000000 1145d617bfbSRichard HendersonRDPR_pil 10 rd:5 101010 01000 0 0000000000000 1155d617bfbSRichard HendersonRDPR_cwp 10 rd:5 101010 01001 0 0000000000000 1165d617bfbSRichard HendersonRDPR_cansave 10 rd:5 101010 01010 0 0000000000000 1175d617bfbSRichard HendersonRDPR_canrestore 10 rd:5 101010 01011 0 0000000000000 1185d617bfbSRichard HendersonRDPR_cleanwin 10 rd:5 101010 01100 0 0000000000000 1195d617bfbSRichard HendersonRDPR_otherwin 10 rd:5 101010 01101 0 0000000000000 1205d617bfbSRichard HendersonRDPR_wstate 10 rd:5 101010 01110 0 0000000000000 1215d617bfbSRichard HendersonRDPR_gl 10 rd:5 101010 10000 0 0000000000000 1225d617bfbSRichard HendersonRDPR_strand_status 10 rd:5 101010 11010 0 0000000000000 1235d617bfbSRichard HendersonRDPR_ver 10 rd:5 101010 11111 0 0000000000000 1245d617bfbSRichard Henderson 125e8325dc0SRichard Henderson{ 1269422278eSRichard Henderson WRWIM 10 00000 110010 ..... . ............. @n_r_ri 1279422278eSRichard Henderson WRPR_tpc 10 00000 110010 ..... . ............. @n_r_ri 1289422278eSRichard Henderson} 1299422278eSRichard HendersonWRPR_tnpc 10 00001 110010 ..... . ............. @n_r_ri 1309422278eSRichard HendersonWRPR_tstate 10 00010 110010 ..... . ............. @n_r_ri 1319422278eSRichard HendersonWRPR_tt 10 00011 110010 ..... . ............. @n_r_ri 1329422278eSRichard HendersonWRPR_tick 10 00100 110010 ..... . ............. @n_r_ri 1339422278eSRichard HendersonWRPR_tba 10 00101 110010 ..... . ............. @n_r_ri 1349422278eSRichard HendersonWRPR_pstate 10 00110 110010 ..... . ............. @n_r_ri 1359422278eSRichard HendersonWRPR_tl 10 00111 110010 ..... . ............. @n_r_ri 1369422278eSRichard HendersonWRPR_pil 10 01000 110010 ..... . ............. @n_r_ri 1379422278eSRichard HendersonWRPR_cwp 10 01001 110010 ..... . ............. @n_r_ri 1389422278eSRichard HendersonWRPR_cansave 10 01010 110010 ..... . ............. @n_r_ri 1399422278eSRichard HendersonWRPR_canrestore 10 01011 110010 ..... . ............. @n_r_ri 1409422278eSRichard HendersonWRPR_cleanwin 10 01100 110010 ..... . ............. @n_r_ri 1419422278eSRichard HendersonWRPR_otherwin 10 01101 110010 ..... . ............. @n_r_ri 1429422278eSRichard HendersonWRPR_wstate 10 01110 110010 ..... . ............. @n_r_ri 1439422278eSRichard HendersonWRPR_gl 10 10000 110010 ..... . ............. @n_r_ri 1449422278eSRichard HendersonWRPR_strand_status 10 11010 110010 ..... . ............. @n_r_ri 1459422278eSRichard Henderson 1469422278eSRichard Henderson{ 147e8325dc0SRichard Henderson FLUSHW 10 00000 101011 00000 0 0000000000000 148e8325dc0SRichard Henderson RDTBR 10 rd:5 101011 00000 0 0000000000000 149e8325dc0SRichard Henderson} 150e8325dc0SRichard Henderson 151bb97f2f5SRichard Henderson{ 152bb97f2f5SRichard Henderson WRTBR 10 00000 110011 ..... . ............. @n_r_ri 153bb97f2f5SRichard Henderson WRHPR_hpstate 10 00000 110011 ..... . ............. @n_r_ri 154bb97f2f5SRichard Henderson} 155bb97f2f5SRichard HendersonWRHPR_htstate 10 00001 110011 ..... . ............. @n_r_ri 156bb97f2f5SRichard HendersonWRHPR_hintp 10 00011 110011 ..... . ............. @n_r_ri 157bb97f2f5SRichard HendersonWRHPR_htba 10 00101 110011 ..... . ............. @n_r_ri 158bb97f2f5SRichard HendersonWRHPR_hstick_cmpr 10 11111 110011 ..... . ............. @n_r_ri 159bb97f2f5SRichard Henderson 160428881deSRichard HendersonADD 10 ..... 0.0000 ..... . ............. @r_r_ri_cc 161428881deSRichard HendersonAND 10 ..... 0.0001 ..... . ............. @r_r_ri_cc 162428881deSRichard HendersonOR 10 ..... 0.0010 ..... . ............. @r_r_ri_cc 163428881deSRichard HendersonXOR 10 ..... 0.0011 ..... . ............. @r_r_ri_cc 164428881deSRichard HendersonSUB 10 ..... 0.0100 ..... . ............. @r_r_ri_cc 165428881deSRichard HendersonANDN 10 ..... 0.0101 ..... . ............. @r_r_ri_cc 166428881deSRichard HendersonORN 10 ..... 0.0110 ..... . ............. @r_r_ri_cc 167428881deSRichard HendersonXORN 10 ..... 0.0111 ..... . ............. @r_r_ri_cc 168420a187dSRichard HendersonADDC 10 ..... 0.1000 ..... . ............. @r_r_ri_cc 169dfebb950SRichard HendersonSUBC 10 ..... 0.1100 ..... . ............. @r_r_ri_cc 170428881deSRichard Henderson 17122188d7dSRichard HendersonMULX 10 ..... 001001 ..... . ............. @r_r_ri_cc0 172b5372650SRichard HendersonUMUL 10 ..... 0.1010 ..... . ............. @r_r_ri_cc 173b5372650SRichard HendersonSMUL 10 ..... 0.1011 ..... . ............. @r_r_ri_cc 174*a9aba13dSRichard HendersonMULScc 10 ..... 100100 ..... . ............. @r_r_ri_cc1 17522188d7dSRichard Henderson 1764ee85ea9SRichard HendersonUDIVX 10 ..... 001101 ..... . ............. @r_r_ri_cc0 1774ee85ea9SRichard HendersonSDIVX 10 ..... 101101 ..... . ............. @r_r_ri_cc0 178c2636853SRichard HendersonUDIV 10 ..... 0.1110 ..... . ............. @r_r_ri_cc 179c2636853SRichard HendersonSDIV 10 ..... 0.1111 ..... . ............. @r_r_ri_cc 1804ee85ea9SRichard Henderson 181*a9aba13dSRichard HendersonTADDcc 10 ..... 100000 ..... . ............. @r_r_ri_cc1 182*a9aba13dSRichard HendersonTSUBcc 10 ..... 100001 ..... . ............. @r_r_ri_cc1 183*a9aba13dSRichard HendersonTADDccTV 10 ..... 100010 ..... . ............. @r_r_ri_cc1 184*a9aba13dSRichard HendersonTSUBccTV 10 ..... 100011 ..... . ............. @r_r_ri_cc1 185*a9aba13dSRichard Henderson 18630376636SRichard HendersonTcc_r 10 0 cond:4 111010 rs1:5 0 cc:1 0000000 rs2:5 18730376636SRichard Henderson{ 18830376636SRichard Henderson # For v7, the entire simm13 field is present, but masked to 7 bits. 18930376636SRichard Henderson # For v8, [12:7] are reserved. However, a compatibility note for 19030376636SRichard Henderson # the Tcc insn in the v9 manual suggests that the v8 reserved field 19130376636SRichard Henderson # was ignored and did not produce traps. 19230376636SRichard Henderson Tcc_i_v7 10 0 cond:4 111010 rs1:5 1 ------ i:7 19330376636SRichard Henderson 19430376636SRichard Henderson # For v9, bits [12:11] are cc1 and cc0 (and cc0 must be 0). 19530376636SRichard Henderson # Bits [10:8] are reserved and the OSA2011 manual says they must be 0. 19630376636SRichard Henderson Tcc_i_v9 10 0 cond:4 111010 rs1:5 1 cc:1 0 000 i:8 19730376636SRichard Henderson} 198