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 186SDIVX 10 ..... 101101 ..... . ............. @r_r_ri 187UDIV 10 ..... 001110 ..... . ............. @r_r_ri 188UDIVcc 10 ..... 011110 ..... . ............. @r_r_ri_cc1 189SDIV 10 ..... 0.1111 ..... . ............. @r_r_ri_cc 190 191TADDcc 10 ..... 100000 ..... . ............. @r_r_ri_cc1 192TSUBcc 10 ..... 100001 ..... . ............. @r_r_ri_cc1 193TADDccTV 10 ..... 100010 ..... . ............. @r_r_ri_cc1 194TSUBccTV 10 ..... 100011 ..... . ............. @r_r_ri_cc1 195 196POPC 10 rd:5 101110 00000 imm:1 rs2_or_imm:s13 \ 197 &r_r_ri_cc rs1=0 cc=0 198 199&shiftr rd rs1 rs2 x:bool 200@shiftr .. rd:5 ...... rs1:5 . x:1 ....... rs2:5 &shiftr 201 202SLL_r 10 ..... 100101 ..... 0 . 0000000 ..... @shiftr 203SRL_r 10 ..... 100110 ..... 0 . 0000000 ..... @shiftr 204SRA_r 10 ..... 100111 ..... 0 . 0000000 ..... @shiftr 205 206&shifti rd rs1 i x:bool 207@shifti .. rd:5 ...... rs1:5 . x:1 ...... i:6 &shifti 208 209SLL_i 10 ..... 100101 ..... 1 . 000000 ...... @shifti 210SRL_i 10 ..... 100110 ..... 1 . 000000 ...... @shifti 211SRA_i 10 ..... 100111 ..... 1 . 000000 ...... @shifti 212 213Tcc_r 10 0 cond:4 111010 rs1:5 0 cc:1 0000000 rs2:5 214{ 215 # For v7, the entire simm13 field is present, but masked to 7 bits. 216 # For v8, [12:7] are reserved. However, a compatibility note for 217 # the Tcc insn in the v9 manual suggests that the v8 reserved field 218 # was ignored and did not produce traps. 219 Tcc_i_v7 10 0 cond:4 111010 rs1:5 1 ------ i:7 220 221 # For v9, bits [12:11] are cc1 and cc0 (and cc0 must be 0). 222 # Bits [10:8] are reserved and the OSA2011 manual says they must be 0. 223 Tcc_i_v9 10 0 cond:4 111010 rs1:5 1 cc:1 0 000 i:8 224} 225 226MOVcc 10 rd:5 101100 1 cond:4 imm:1 cc:1 0 rs2_or_imm:s11 227MOVfcc 10 rd:5 101100 0 cond:4 imm:1 cc:2 rs2_or_imm:s11 228MOVR 10 rd:5 101111 rs1:5 imm:1 cond:3 rs2_or_imm:s10 229 230JMPL 10 ..... 111000 ..... . ............. @r_r_ri 231{ 232 RETT 10 00000 111001 ..... . ............. @n_r_ri 233 RETURN 10 00000 111001 ..... . ............. @n_r_ri 234} 235NOP 10 00000 111011 ----- 0 00000000----- # FLUSH reg+reg 236NOP 10 00000 111011 ----- 1 ------------- # FLUSH reg+imm 237SAVE 10 ..... 111100 ..... . ............. @r_r_ri 238RESTORE 10 ..... 111101 ..... . ............. @r_r_ri 239 240DONE 10 00000 111110 00000 0 0000000000000 241RETRY 10 00001 111110 00000 0 0000000000000 242 243FMOVs 10 ..... 110100 00000 0 0000 0001 ..... @r_r2 244FMOVd 10 ..... 110100 00000 0 0000 0010 ..... @r_r2 245FMOVq 10 ..... 110100 00000 0 0000 0011 ..... @r_r2 246FNEGs 10 ..... 110100 00000 0 0000 0101 ..... @r_r2 247FNEGd 10 ..... 110100 00000 0 0000 0110 ..... @r_r2 248FNEGq 10 ..... 110100 00000 0 0000 0111 ..... @r_r2 249FABSs 10 ..... 110100 00000 0 0000 1001 ..... @r_r2 250FABSd 10 ..... 110100 00000 0 0000 1010 ..... @r_r2 251FABSq 10 ..... 110100 00000 0 0000 1011 ..... @r_r2 252FSQRTs 10 ..... 110100 00000 0 0010 1001 ..... @r_r2 253FSQRTd 10 ..... 110100 00000 0 0010 1010 ..... @r_r2 254FSQRTq 10 ..... 110100 00000 0 0010 1011 ..... @r_r2 255FADDs 10 ..... 110100 ..... 0 0100 0001 ..... @r_r_r 256FADDd 10 ..... 110100 ..... 0 0100 0010 ..... @r_r_r 257FADDq 10 ..... 110100 ..... 0 0100 0011 ..... @r_r_r 258FSUBs 10 ..... 110100 ..... 0 0100 0101 ..... @r_r_r 259FSUBd 10 ..... 110100 ..... 0 0100 0110 ..... @r_r_r 260FSUBq 10 ..... 110100 ..... 0 0100 0111 ..... @r_r_r 261FMULs 10 ..... 110100 ..... 0 0100 1001 ..... @r_r_r 262FMULd 10 ..... 110100 ..... 0 0100 1010 ..... @r_r_r 263FMULq 10 ..... 110100 ..... 0 0100 1011 ..... @r_r_r 264FDIVs 10 ..... 110100 ..... 0 0100 1101 ..... @r_r_r 265FDIVd 10 ..... 110100 ..... 0 0100 1110 ..... @r_r_r 266FDIVq 10 ..... 110100 ..... 0 0100 1111 ..... @r_r_r 267FsMULd 10 ..... 110100 ..... 0 0110 1001 ..... @r_r_r 268FdMULq 10 ..... 110100 ..... 0 0110 1110 ..... @r_r_r 269FsTOx 10 ..... 110100 00000 0 1000 0001 ..... @r_r2 270FdTOx 10 ..... 110100 00000 0 1000 0010 ..... @r_r2 271FqTOx 10 ..... 110100 00000 0 1000 0011 ..... @r_r2 272FxTOs 10 ..... 110100 00000 0 1000 0100 ..... @r_r2 273FxTOd 10 ..... 110100 00000 0 1000 1000 ..... @r_r2 274FxTOq 10 ..... 110100 00000 0 1000 1100 ..... @r_r2 275FiTOs 10 ..... 110100 00000 0 1100 0100 ..... @r_r2 276FdTOs 10 ..... 110100 00000 0 1100 0110 ..... @r_r2 277FqTOs 10 ..... 110100 00000 0 1100 0111 ..... @r_r2 278FiTOd 10 ..... 110100 00000 0 1100 1000 ..... @r_r2 279FsTOd 10 ..... 110100 00000 0 1100 1001 ..... @r_r2 280FqTOd 10 ..... 110100 00000 0 1100 1011 ..... @r_r2 281FiTOq 10 ..... 110100 00000 0 1100 1100 ..... @r_r2 282FsTOq 10 ..... 110100 00000 0 1100 1101 ..... @r_r2 283FdTOq 10 ..... 110100 00000 0 1100 1110 ..... @r_r2 284FsTOi 10 ..... 110100 00000 0 1101 0001 ..... @r_r2 285FdTOi 10 ..... 110100 00000 0 1101 0010 ..... @r_r2 286FqTOi 10 ..... 110100 00000 0 1101 0011 ..... @r_r2 287 288FMOVscc 10 rd:5 110101 0 cond:4 1 cc:1 0 000001 rs2:5 289FMOVdcc 10 rd:5 110101 0 cond:4 1 cc:1 0 000010 rs2:5 290FMOVqcc 10 rd:5 110101 0 cond:4 1 cc:1 0 000011 rs2:5 291 292FMOVsfcc 10 rd:5 110101 0 cond:4 0 cc:2 000001 rs2:5 293FMOVdfcc 10 rd:5 110101 0 cond:4 0 cc:2 000010 rs2:5 294FMOVqfcc 10 rd:5 110101 0 cond:4 0 cc:2 000011 rs2:5 295 296FMOVRs 10 rd:5 110101 rs1:5 0 cond:3 00101 rs2:5 297FMOVRd 10 rd:5 110101 rs1:5 0 cond:3 00110 rs2:5 298FMOVRq 10 rd:5 110101 rs1:5 0 cond:3 00111 rs2:5 299 300FCMPs 10 000 cc:2 110101 rs1:5 0 0101 0001 rs2:5 301FCMPd 10 000 cc:2 110101 rs1:5 0 0101 0010 rs2:5 302FCMPq 10 000 cc:2 110101 rs1:5 0 0101 0011 rs2:5 303FCMPEs 10 000 cc:2 110101 rs1:5 0 0101 0101 rs2:5 304FCMPEd 10 000 cc:2 110101 rs1:5 0 0101 0110 rs2:5 305FCMPEq 10 000 cc:2 110101 rs1:5 0 0101 0111 rs2:5 306 307{ 308 [ 309 EDGE8cc 10 ..... 110110 ..... 0 0000 0000 ..... @r_r_r 310 EDGE8N 10 ..... 110110 ..... 0 0000 0001 ..... @r_r_r 311 EDGE8Lcc 10 ..... 110110 ..... 0 0000 0010 ..... @r_r_r 312 EDGE8LN 10 ..... 110110 ..... 0 0000 0011 ..... @r_r_r 313 EDGE16cc 10 ..... 110110 ..... 0 0000 0100 ..... @r_r_r 314 EDGE16N 10 ..... 110110 ..... 0 0000 0101 ..... @r_r_r 315 EDGE16Lcc 10 ..... 110110 ..... 0 0000 0110 ..... @r_r_r 316 EDGE16LN 10 ..... 110110 ..... 0 0000 0111 ..... @r_r_r 317 EDGE32cc 10 ..... 110110 ..... 0 0000 1000 ..... @r_r_r 318 EDGE32N 10 ..... 110110 ..... 0 0000 1001 ..... @r_r_r 319 EDGE32Lcc 10 ..... 110110 ..... 0 0000 1010 ..... @r_r_r 320 EDGE32LN 10 ..... 110110 ..... 0 0000 1011 ..... @r_r_r 321 322 ARRAY8 10 ..... 110110 ..... 0 0001 0000 ..... @r_r_r 323 ARRAY16 10 ..... 110110 ..... 0 0001 0010 ..... @r_r_r 324 ARRAY32 10 ..... 110110 ..... 0 0001 0100 ..... @r_r_r 325 326 ALIGNADDR 10 ..... 110110 ..... 0 0001 1000 ..... @r_r_r 327 ALIGNADDRL 10 ..... 110110 ..... 0 0001 1010 ..... @r_r_r 328 329 BMASK 10 ..... 110110 ..... 0 0001 1001 ..... @r_r_r 330 331 FPCMPLE16 10 ..... 110110 ..... 0 0010 0000 ..... @r_r_r 332 FPCMPNE16 10 ..... 110110 ..... 0 0010 0010 ..... @r_r_r 333 FPCMPGT16 10 ..... 110110 ..... 0 0010 1000 ..... @r_r_r 334 FPCMPEQ16 10 ..... 110110 ..... 0 0010 1010 ..... @r_r_r 335 FPCMPLE32 10 ..... 110110 ..... 0 0010 0100 ..... @r_r_r 336 FPCMPNE32 10 ..... 110110 ..... 0 0010 0110 ..... @r_r_r 337 FPCMPGT32 10 ..... 110110 ..... 0 0010 1100 ..... @r_r_r 338 FPCMPEQ32 10 ..... 110110 ..... 0 0010 1110 ..... @r_r_r 339 340 FMUL8x16 10 ..... 110110 ..... 0 0011 0001 ..... @r_r_r 341 FMUL8x16AU 10 ..... 110110 ..... 0 0011 0011 ..... @r_r_r 342 FMUL8x16AL 10 ..... 110110 ..... 0 0011 0101 ..... @r_r_r 343 FMUL8SUx16 10 ..... 110110 ..... 0 0011 0110 ..... @r_r_r 344 FMUL8ULx16 10 ..... 110110 ..... 0 0011 0111 ..... @r_r_r 345 FMULD8SUx16 10 ..... 110110 ..... 0 0011 1000 ..... @r_r_r 346 FMULD8ULx16 10 ..... 110110 ..... 0 0011 1001 ..... @r_r_r 347 FPACK32 10 ..... 110110 ..... 0 0011 1010 ..... @r_r_r 348 FPACK16 10 ..... 110110 00000 0 0011 1011 ..... @r_r2 349 FPACKFIX 10 ..... 110110 00000 0 0011 1101 ..... @r_r2 350 PDIST 10 ..... 110110 ..... 0 0011 1110 ..... @r_r_r 351 352 FALIGNDATAg 10 ..... 110110 ..... 0 0100 1000 ..... @r_r_r 353 FPMERGE 10 ..... 110110 ..... 0 0100 1011 ..... @r_r_r 354 BSHUFFLE 10 ..... 110110 ..... 0 0100 1100 ..... @r_r_r 355 FEXPAND 10 ..... 110110 ..... 0 0100 1101 ..... @r_r_r 356 357 FSRCd 10 ..... 110110 ..... 0 0111 0100 00000 @r_r1 # FSRC1d 358 FSRCs 10 ..... 110110 ..... 0 0111 0101 00000 @r_r1 # FSRC1s 359 FSRCd 10 ..... 110110 00000 0 0111 1000 ..... @r_r2 # FSRC2d 360 FSRCs 10 ..... 110110 00000 0 0111 1001 ..... @r_r2 # FSRC2s 361 FNOTd 10 ..... 110110 ..... 0 0110 1010 00000 @r_r1 # FNOT1d 362 FNOTs 10 ..... 110110 ..... 0 0110 1011 00000 @r_r1 # FNOT1s 363 FNOTd 10 ..... 110110 00000 0 0110 0110 ..... @r_r2 # FNOT2d 364 FNOTs 10 ..... 110110 00000 0 0110 0111 ..... @r_r2 # FNOT2s 365 366 FPADD16 10 ..... 110110 ..... 0 0101 0000 ..... @r_r_r 367 FPADD16s 10 ..... 110110 ..... 0 0101 0001 ..... @r_r_r 368 FPADD32 10 ..... 110110 ..... 0 0101 0010 ..... @r_r_r 369 FPADD32s 10 ..... 110110 ..... 0 0101 0011 ..... @r_r_r 370 FPSUB16 10 ..... 110110 ..... 0 0101 0100 ..... @r_r_r 371 FPSUB16s 10 ..... 110110 ..... 0 0101 0101 ..... @r_r_r 372 FPSUB32 10 ..... 110110 ..... 0 0101 0110 ..... @r_r_r 373 FPSUB32s 10 ..... 110110 ..... 0 0101 0111 ..... @r_r_r 374 375 FNORd 10 ..... 110110 ..... 0 0110 0010 ..... @r_r_r 376 FNORs 10 ..... 110110 ..... 0 0110 0011 ..... @r_r_r 377 FANDNOTd 10 ..... 110110 ..... 0 0110 0100 ..... @r_r_r # FANDNOT2d 378 FANDNOTs 10 ..... 110110 ..... 0 0110 0101 ..... @r_r_r # FANDNOT2s 379 FANDNOTd 10 ..... 110110 ..... 0 0110 1000 ..... @r_r_r_swap # ... 1d 380 FANDNOTs 10 ..... 110110 ..... 0 0110 1001 ..... @r_r_r_swap # ... 1s 381 FXORd 10 ..... 110110 ..... 0 0110 1100 ..... @r_r_r 382 FXORs 10 ..... 110110 ..... 0 0110 1101 ..... @r_r_r 383 FNANDd 10 ..... 110110 ..... 0 0110 1110 ..... @r_r_r 384 FNANDs 10 ..... 110110 ..... 0 0110 1111 ..... @r_r_r 385 FANDd 10 ..... 110110 ..... 0 0111 0000 ..... @r_r_r 386 FANDs 10 ..... 110110 ..... 0 0111 0001 ..... @r_r_r 387 FXNORd 10 ..... 110110 ..... 0 0111 0010 ..... @r_r_r 388 FXNORs 10 ..... 110110 ..... 0 0111 0011 ..... @r_r_r 389 FORNOTd 10 ..... 110110 ..... 0 0111 0110 ..... @r_r_r # FORNOT2d 390 FORNOTs 10 ..... 110110 ..... 0 0111 0111 ..... @r_r_r # FORNOT2s 391 FORNOTd 10 ..... 110110 ..... 0 0111 1010 ..... @r_r_r_swap # ... 1d 392 FORNOTs 10 ..... 110110 ..... 0 0111 1011 ..... @r_r_r_swap # ... 1s 393 FORd 10 ..... 110110 ..... 0 0111 1100 ..... @r_r_r 394 FORs 10 ..... 110110 ..... 0 0111 1101 ..... @r_r_r 395 396 FZEROd 10 rd:5 110110 00000 0 0110 0000 00000 397 FZEROs 10 rd:5 110110 00000 0 0110 0001 00000 398 FONEd 10 rd:5 110110 00000 0 0111 1110 00000 399 FONEs 10 rd:5 110110 00000 0 0111 1111 00000 400 ] 401 NCP 10 ----- 110110 ----- --------- ----- # v8 CPop1 402} 403 404NCP 10 ----- 110111 ----- --------- ----- # v8 CPop2 405 406## 407## Major Opcode 11 -- load and store instructions 408## 409 410%dfp_rd 25:5 !function=extract_dfpreg 411%qfp_rd 25:5 !function=extract_qfpreg 412 413&r_r_ri_asi rd rs1 rs2_or_imm asi imm:bool 414@r_r_ri_na .. rd:5 ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri_asi asi=-1 415@d_r_ri_na .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13 \ 416 &r_r_ri_asi rd=%dfp_rd asi=-1 417@q_r_ri_na .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13 \ 418 &r_r_ri_asi rd=%qfp_rd asi=-1 419 420@r_r_r_asi .. rd:5 ...... rs1:5 0 asi:8 rs2_or_imm:5 &r_r_ri_asi imm=0 421@r_r_i_asi .. rd:5 ...... rs1:5 1 rs2_or_imm:s13 \ 422 &r_r_ri_asi imm=1 asi=-2 423@d_r_r_asi .. ..... ...... rs1:5 0 asi:8 rs2_or_imm:5 \ 424 &r_r_ri_asi rd=%dfp_rd imm=0 425@d_r_i_asi .. ..... ...... rs1:5 1 rs2_or_imm:s13 \ 426 &r_r_ri_asi rd=%dfp_rd imm=1 asi=-2 427@q_r_r_asi .. ..... ...... rs1:5 0 asi:8 rs2_or_imm:5 \ 428 &r_r_ri_asi rd=%qfp_rd imm=0 429@q_r_i_asi .. ..... ...... rs1:5 1 rs2_or_imm:s13 \ 430 &r_r_ri_asi rd=%qfp_rd imm=1 asi=-2 431@casa_imm .. rd:5 ...... rs1:5 1 00000000 rs2_or_imm:5 \ 432 &r_r_ri_asi imm=1 asi=-2 433 434LDUW 11 ..... 000000 ..... . ............. @r_r_ri_na 435LDUB 11 ..... 000001 ..... . ............. @r_r_ri_na 436LDUH 11 ..... 000010 ..... . ............. @r_r_ri_na 437LDD 11 ..... 000011 ..... . ............. @r_r_ri_na 438LDSW 11 ..... 001000 ..... . ............. @r_r_ri_na 439LDSB 11 ..... 001001 ..... . ............. @r_r_ri_na 440LDSH 11 ..... 001010 ..... . ............. @r_r_ri_na 441LDX 11 ..... 001011 ..... . ............. @r_r_ri_na 442 443STW 11 ..... 000100 ..... . ............. @r_r_ri_na 444STB 11 ..... 000101 ..... . ............. @r_r_ri_na 445STH 11 ..... 000110 ..... . ............. @r_r_ri_na 446STD 11 ..... 000111 ..... . ............. @r_r_ri_na 447STX 11 ..... 001110 ..... . ............. @r_r_ri_na 448 449LDUW 11 ..... 010000 ..... . ............. @r_r_r_asi # LDUWA 450LDUW 11 ..... 010000 ..... . ............. @r_r_i_asi # LDUWA 451LDUB 11 ..... 010001 ..... . ............. @r_r_r_asi # LDUBA 452LDUB 11 ..... 010001 ..... . ............. @r_r_i_asi # LDUBA 453LDUH 11 ..... 010010 ..... . ............. @r_r_r_asi # LDUHA 454LDUH 11 ..... 010010 ..... . ............. @r_r_i_asi # LDUHA 455LDD 11 ..... 010011 ..... . ............. @r_r_r_asi # LDDA 456LDD 11 ..... 010011 ..... . ............. @r_r_i_asi # LDDA 457LDX 11 ..... 011011 ..... . ............. @r_r_r_asi # LDXA 458LDX 11 ..... 011011 ..... . ............. @r_r_i_asi # LDXA 459LDSB 11 ..... 011001 ..... . ............. @r_r_r_asi # LDSBA 460LDSB 11 ..... 011001 ..... . ............. @r_r_i_asi # LDSBA 461LDSH 11 ..... 011010 ..... . ............. @r_r_r_asi # LDSHA 462LDSH 11 ..... 011010 ..... . ............. @r_r_i_asi # LDSHA 463LDSW 11 ..... 011000 ..... . ............. @r_r_r_asi # LDSWA 464LDSW 11 ..... 011000 ..... . ............. @r_r_i_asi # LDSWA 465 466STW 11 ..... 010100 ..... . ............. @r_r_r_asi # STWA 467STW 11 ..... 010100 ..... . ............. @r_r_i_asi # STWA 468STB 11 ..... 010101 ..... . ............. @r_r_r_asi # STBA 469STB 11 ..... 010101 ..... . ............. @r_r_i_asi # STBA 470STH 11 ..... 010110 ..... . ............. @r_r_r_asi # STHA 471STH 11 ..... 010110 ..... . ............. @r_r_i_asi # STHA 472STD 11 ..... 010111 ..... . ............. @r_r_r_asi # STDA 473STD 11 ..... 010111 ..... . ............. @r_r_i_asi # STDA 474STX 11 ..... 011110 ..... . ............. @r_r_r_asi # STXA 475STX 11 ..... 011110 ..... . ............. @r_r_i_asi # STXA 476 477LDF 11 ..... 100000 ..... . ............. @r_r_ri_na 478LDFSR 11 00000 100001 ..... . ............. @n_r_ri 479LDXFSR 11 00001 100001 ..... . ............. @n_r_ri 480LDQF 11 ..... 100010 ..... . ............. @q_r_ri_na 481LDDF 11 ..... 100011 ..... . ............. @d_r_ri_na 482 483STF 11 ..... 100100 ..... . ............. @r_r_ri_na 484STFSR 11 00000 100101 ..... . ............. @n_r_ri 485STXFSR 11 00001 100101 ..... . ............. @n_r_ri 486{ 487 STQF 11 ..... 100110 ..... . ............. @q_r_ri_na 488 STDFQ 11 ----- 100110 ----- - ------------- 489} 490STDF 11 ..... 100111 ..... . ............. @d_r_ri_na 491 492LDSTUB 11 ..... 001101 ..... . ............. @r_r_ri_na 493LDSTUB 11 ..... 011101 ..... . ............. @r_r_r_asi # LDSTUBA 494LDSTUB 11 ..... 011101 ..... . ............. @r_r_i_asi # LDSTUBA 495 496SWAP 11 ..... 001111 ..... . ............. @r_r_ri_na 497SWAP 11 ..... 011111 ..... . ............. @r_r_r_asi # SWAPA 498SWAP 11 ..... 011111 ..... . ............. @r_r_i_asi # SWAPA 499 500CASA 11 ..... 111100 ..... . ............. @r_r_r_asi 501CASA 11 ..... 111100 ..... . ............. @casa_imm 502CASXA 11 ..... 111110 ..... . ............. @r_r_r_asi 503CASXA 11 ..... 111110 ..... . ............. @casa_imm 504 505NOP_v9 11 ----- 101101 ----- 0 00000000 ----- # PREFETCH 506NOP_v9 11 ----- 101101 ----- 1 ------------- # PREFETCH 507NOP_v9 11 ----- 111101 ----- - ------------- # PREFETCHA 508 509{ 510 [ 511 LDFA 11 ..... 110000 ..... . ............. @r_r_r_asi 512 LDFA 11 ..... 110000 ..... . ............. @r_r_i_asi 513 ] 514 NCP 11 ----- 110000 ----- --------- ----- # v8 LDC 515} 516NCP 11 ----- 110001 ----- --------- ----- # v8 LDCSR 517LDQFA 11 ..... 110010 ..... . ............. @q_r_r_asi 518LDQFA 11 ..... 110010 ..... . ............. @q_r_i_asi 519{ 520 [ 521 LDDFA 11 ..... 110011 ..... . ............. @d_r_r_asi 522 LDDFA 11 ..... 110011 ..... . ............. @d_r_i_asi 523 ] 524 NCP 11 ----- 110011 ----- --------- ----- # v8 LDDC 525} 526 527{ 528 [ 529 STFA 11 ..... 110100 ..... . ............. @r_r_r_asi 530 STFA 11 ..... 110100 ..... . ............. @r_r_i_asi 531 ] 532 NCP 11 ----- 110100 ----- --------- ----- # v8 STC 533} 534NCP 11 ----- 110101 ----- --------- ----- # v8 STCSR 535{ 536 [ 537 STQFA 11 ..... 110110 ..... . ............. @q_r_r_asi 538 STQFA 11 ..... 110110 ..... . ............. @q_r_i_asi 539 ] 540 NCP 11 ----- 110110 ----- --------- ----- # v8 STDCQ 541} 542{ 543 [ 544 STDFA 11 ..... 110111 ..... . ............. @d_r_r_asi 545 STDFA 11 ..... 110111 ..... . ............. @d_r_i_asi 546 ] 547 NCP 11 ----- 110111 ----- --------- ----- # v8 STDC 548} 549