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%dfp_rd 25:5 !function=extract_dfpreg 30%dfp_rs1 14:5 !function=extract_dfpreg 31%dfp_rs2 0:5 !function=extract_dfpreg 32%dfp_rs3 9:5 !function=extract_dfpreg 33 34%qfp_rd 25:5 !function=extract_qfpreg 35%qfp_rs1 14:5 !function=extract_qfpreg 36%qfp_rs2 0:5 !function=extract_qfpreg 37 38&r_r_ri rd rs1 rs2_or_imm imm:bool 39@n_r_ri .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri rd=0 40@r_r_ri .. rd:5 ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri 41 42&r_r_ri_cc rd rs1 rs2_or_imm imm:bool cc:bool 43@r_r_ri_cc .. rd:5 . cc:1 .... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri_cc 44@r_r_ri_cc0 .. rd:5 ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri_cc cc=0 45@r_r_ri_cc1 .. rd:5 ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri_cc cc=1 46 47&r_r_r rd rs1 rs2 48@r_r_r .. rd:5 ...... rs1:5 . ........ rs2:5 &r_r_r 49@d_r_r .. ..... ...... rs1:5 . ........ rs2:5 \ 50 &r_r_r rd=%dfp_rd 51@r_d_d .. rd:5 ...... ..... . ........ ..... \ 52 &r_r_r rs1=%dfp_rs1 rs2=%dfp_rs2 53@d_r_d .. ..... ...... rs1:5 . ........ ..... \ 54 &r_r_r rd=%dfp_rd rs2=%dfp_rs2 55@d_d_d .. ..... ...... ..... . ........ ..... \ 56 &r_r_r rd=%dfp_rd rs1=%dfp_rs1 rs2=%dfp_rs2 57@q_q_q .. ..... ...... ..... . ........ ..... \ 58 &r_r_r rd=%qfp_rd rs1=%qfp_rs1 rs2=%qfp_rs2 59@q_d_d .. ..... ...... ..... . ........ ..... \ 60 &r_r_r rd=%qfp_rd rs1=%dfp_rs1 rs2=%dfp_rs2 61 62@r_r_r_swap .. rd:5 ...... rs2:5 . ........ rs1:5 &r_r_r 63@d_d_d_swap .. ..... ...... ..... . ........ ..... \ 64 &r_r_r rd=%dfp_rd rs1=%dfp_rs2 rs2=%dfp_rs1 65 66&r_r rd rs 67@r_r1 .. rd:5 ...... rs:5 . ........ ..... &r_r 68@r_r2 .. rd:5 ...... ..... . ........ rs:5 &r_r 69@r_d2 .. rd:5 ...... ..... . ........ ..... &r_r rs=%dfp_rs2 70@r_q2 .. rd:5 ...... ..... . ........ ..... &r_r rs=%qfp_rs2 71@d_r2 .. ..... ...... ..... . ........ rs:5 &r_r rd=%dfp_rd 72@q_r2 .. ..... ...... ..... . ........ rs:5 &r_r rd=%qfp_rd 73@d_d1 .. ..... ...... ..... . ........ ..... \ 74 &r_r rd=%dfp_rd rs=%dfp_rs1 75@d_d2 .. ..... ...... ..... . ........ ..... \ 76 &r_r rd=%dfp_rd rs=%dfp_rs2 77@d_q2 .. ..... ...... ..... . ........ ..... \ 78 &r_r rd=%dfp_rd rs=%qfp_rs2 79@q_q2 .. ..... ...... ..... . ........ ..... \ 80 &r_r rd=%qfp_rd rs=%qfp_rs2 81@q_d2 .. ..... ...... ..... . ........ ..... \ 82 &r_r rd=%qfp_rd rs=%dfp_rs2 83 84&r_r_r_r rd rs1 rs2 rs3 85@r_r_r_r .. rd:5 ...... rs1:5 rs3:5 .... rs2:5 &r_r_r_r 86@d_d_d_d .. ..... ...... ..... ..... .... ..... \ 87 &r_r_r_r rd=%dfp_rd rs1=%dfp_rs1 rs2=%dfp_rs2 rs3=%dfp_rs3 88 89{ 90 [ 91 STBAR 10 00000 101000 01111 0 0000000000000 92 MEMBAR 10 00000 101000 01111 1 000000 cmask:3 mmask:4 93 94 RDCCR 10 rd:5 101000 00010 0 0000000000000 95 RDASI 10 rd:5 101000 00011 0 0000000000000 96 RDTICK 10 rd:5 101000 00100 0 0000000000000 97 RDPC 10 rd:5 101000 00101 0 0000000000000 98 RDFPRS 10 rd:5 101000 00110 0 0000000000000 99 RDASR17 10 rd:5 101000 10001 0 0000000000000 100 RDGSR 10 rd:5 101000 10011 0 0000000000000 101 RDSOFTINT 10 rd:5 101000 10110 0 0000000000000 102 RDTICK_CMPR 10 rd:5 101000 10111 0 0000000000000 103 RDSTICK 10 rd:5 101000 11000 0 0000000000000 104 RDSTICK_CMPR 10 rd:5 101000 11001 0 0000000000000 105 RDSTRAND_STATUS 10 rd:5 101000 11010 0 0000000000000 106 ] 107 # Before v8, all rs1 accepted; otherwise rs1==0. 108 RDY 10 rd:5 101000 rs1:5 0 0000000000000 109} 110 111{ 112 [ 113 WRY 10 00000 110000 ..... . ............. @n_r_ri 114 WRCCR 10 00010 110000 ..... . ............. @n_r_ri 115 WRASI 10 00011 110000 ..... . ............. @n_r_ri 116 WRFPRS 10 00110 110000 ..... . ............. @n_r_ri 117 { 118 WRGSR 10 10011 110000 ..... . ............. @n_r_ri 119 WRPOWERDOWN 10 10011 110000 ..... . ............. @n_r_ri 120 } 121 WRSOFTINT_SET 10 10100 110000 ..... . ............. @n_r_ri 122 WRSOFTINT_CLR 10 10101 110000 ..... . ............. @n_r_ri 123 WRSOFTINT 10 10110 110000 ..... . ............. @n_r_ri 124 WRTICK_CMPR 10 10111 110000 ..... . ............. @n_r_ri 125 WRSTICK 10 11000 110000 ..... . ............. @n_r_ri 126 WRSTICK_CMPR 10 11001 110000 ..... . ............. @n_r_ri 127 ] 128 # Before v8, rs1==0 was WRY, and the rest executed as nop. 129 [ 130 NOP_v7 10 ----- 110000 ----- 0 00000000 ----- 131 NOP_v7 10 ----- 110000 ----- 1 -------- ----- 132 ] 133} 134 135{ 136 RDPSR 10 rd:5 101001 00000 0 0000000000000 137 RDHPR_hpstate 10 rd:5 101001 00000 0 0000000000000 138} 139RDHPR_htstate 10 rd:5 101001 00001 0 0000000000000 140RDHPR_hintp 10 rd:5 101001 00011 0 0000000000000 141RDHPR_htba 10 rd:5 101001 00101 0 0000000000000 142RDHPR_hver 10 rd:5 101001 00110 0 0000000000000 143RDHPR_hstick_cmpr 10 rd:5 101001 11111 0 0000000000000 144 145{ 146 WRPSR 10 00000 110001 ..... . ............. @n_r_ri 147 SAVED 10 00000 110001 00000 0 0000000000000 148} 149RESTORED 10 00001 110001 00000 0 0000000000000 150# UA2005 ALLCLEAN 151# UA2005 OTHERW 152# UA2005 NORMALW 153# UA2005 INVALW 154 155{ 156 RDWIM 10 rd:5 101010 00000 0 0000000000000 157 RDPR_tpc 10 rd:5 101010 00000 0 0000000000000 158} 159RDPR_tnpc 10 rd:5 101010 00001 0 0000000000000 160RDPR_tstate 10 rd:5 101010 00010 0 0000000000000 161RDPR_tt 10 rd:5 101010 00011 0 0000000000000 162RDPR_tick 10 rd:5 101010 00100 0 0000000000000 163RDPR_tba 10 rd:5 101010 00101 0 0000000000000 164RDPR_pstate 10 rd:5 101010 00110 0 0000000000000 165RDPR_tl 10 rd:5 101010 00111 0 0000000000000 166RDPR_pil 10 rd:5 101010 01000 0 0000000000000 167RDPR_cwp 10 rd:5 101010 01001 0 0000000000000 168RDPR_cansave 10 rd:5 101010 01010 0 0000000000000 169RDPR_canrestore 10 rd:5 101010 01011 0 0000000000000 170RDPR_cleanwin 10 rd:5 101010 01100 0 0000000000000 171RDPR_otherwin 10 rd:5 101010 01101 0 0000000000000 172RDPR_wstate 10 rd:5 101010 01110 0 0000000000000 173RDPR_gl 10 rd:5 101010 10000 0 0000000000000 174RDPR_strand_status 10 rd:5 101010 11010 0 0000000000000 175RDPR_ver 10 rd:5 101010 11111 0 0000000000000 176 177{ 178 WRWIM 10 00000 110010 ..... . ............. @n_r_ri 179 WRPR_tpc 10 00000 110010 ..... . ............. @n_r_ri 180} 181WRPR_tnpc 10 00001 110010 ..... . ............. @n_r_ri 182WRPR_tstate 10 00010 110010 ..... . ............. @n_r_ri 183WRPR_tt 10 00011 110010 ..... . ............. @n_r_ri 184WRPR_tick 10 00100 110010 ..... . ............. @n_r_ri 185WRPR_tba 10 00101 110010 ..... . ............. @n_r_ri 186WRPR_pstate 10 00110 110010 ..... . ............. @n_r_ri 187WRPR_tl 10 00111 110010 ..... . ............. @n_r_ri 188WRPR_pil 10 01000 110010 ..... . ............. @n_r_ri 189WRPR_cwp 10 01001 110010 ..... . ............. @n_r_ri 190WRPR_cansave 10 01010 110010 ..... . ............. @n_r_ri 191WRPR_canrestore 10 01011 110010 ..... . ............. @n_r_ri 192WRPR_cleanwin 10 01100 110010 ..... . ............. @n_r_ri 193WRPR_otherwin 10 01101 110010 ..... . ............. @n_r_ri 194WRPR_wstate 10 01110 110010 ..... . ............. @n_r_ri 195WRPR_gl 10 10000 110010 ..... . ............. @n_r_ri 196WRPR_strand_status 10 11010 110010 ..... . ............. @n_r_ri 197 198{ 199 FLUSHW 10 00000 101011 00000 0 0000000000000 200 RDTBR 10 rd:5 101011 00000 0 0000000000000 201} 202 203{ 204 WRTBR 10 00000 110011 ..... . ............. @n_r_ri 205 WRHPR_hpstate 10 00000 110011 ..... . ............. @n_r_ri 206} 207WRHPR_htstate 10 00001 110011 ..... . ............. @n_r_ri 208WRHPR_hintp 10 00011 110011 ..... . ............. @n_r_ri 209WRHPR_htba 10 00101 110011 ..... . ............. @n_r_ri 210WRHPR_hstick_cmpr 10 11111 110011 ..... . ............. @n_r_ri 211 212ADD 10 ..... 0.0000 ..... . ............. @r_r_ri_cc 213AND 10 ..... 0.0001 ..... . ............. @r_r_ri_cc 214OR 10 ..... 0.0010 ..... . ............. @r_r_ri_cc 215XOR 10 ..... 0.0011 ..... . ............. @r_r_ri_cc 216SUB 10 ..... 0.0100 ..... . ............. @r_r_ri_cc 217ANDN 10 ..... 0.0101 ..... . ............. @r_r_ri_cc 218ORN 10 ..... 0.0110 ..... . ............. @r_r_ri_cc 219XORN 10 ..... 0.0111 ..... . ............. @r_r_ri_cc 220ADDC 10 ..... 0.1000 ..... . ............. @r_r_ri_cc 221SUBC 10 ..... 0.1100 ..... . ............. @r_r_ri_cc 222 223MULX 10 ..... 001001 ..... . ............. @r_r_ri_cc0 224UMUL 10 ..... 0.1010 ..... . ............. @r_r_ri_cc 225SMUL 10 ..... 0.1011 ..... . ............. @r_r_ri_cc 226MULScc 10 ..... 100100 ..... . ............. @r_r_ri_cc1 227 228UDIVX 10 ..... 001101 ..... . ............. @r_r_ri 229SDIVX 10 ..... 101101 ..... . ............. @r_r_ri 230UDIV 10 ..... 001110 ..... . ............. @r_r_ri 231UDIVcc 10 ..... 011110 ..... . ............. @r_r_ri_cc1 232SDIV 10 ..... 0.1111 ..... . ............. @r_r_ri_cc 233 234TADDcc 10 ..... 100000 ..... . ............. @r_r_ri_cc1 235TSUBcc 10 ..... 100001 ..... . ............. @r_r_ri_cc1 236TADDccTV 10 ..... 100010 ..... . ............. @r_r_ri_cc1 237TSUBccTV 10 ..... 100011 ..... . ............. @r_r_ri_cc1 238 239POPC 10 rd:5 101110 00000 imm:1 rs2_or_imm:s13 \ 240 &r_r_ri_cc rs1=0 cc=0 241 242&shiftr rd rs1 rs2 x:bool 243@shiftr .. rd:5 ...... rs1:5 . x:1 ....... rs2:5 &shiftr 244 245SLL_r 10 ..... 100101 ..... 0 . 0000000 ..... @shiftr 246SRL_r 10 ..... 100110 ..... 0 . 0000000 ..... @shiftr 247SRA_r 10 ..... 100111 ..... 0 . 0000000 ..... @shiftr 248 249&shifti rd rs1 i x:bool 250@shifti .. rd:5 ...... rs1:5 . x:1 ...... i:6 &shifti 251 252SLL_i 10 ..... 100101 ..... 1 . 000000 ...... @shifti 253SRL_i 10 ..... 100110 ..... 1 . 000000 ...... @shifti 254SRA_i 10 ..... 100111 ..... 1 . 000000 ...... @shifti 255 256Tcc_r 10 0 cond:4 111010 rs1:5 0 cc:1 0000000 rs2:5 257{ 258 # For v7, the entire simm13 field is present, but masked to 7 bits. 259 # For v8, [12:7] are reserved. However, a compatibility note for 260 # the Tcc insn in the v9 manual suggests that the v8 reserved field 261 # was ignored and did not produce traps. 262 Tcc_i_v7 10 0 cond:4 111010 rs1:5 1 ------ i:7 263 264 # For v9, bits [12:11] are cc1 and cc0 (and cc0 must be 0). 265 # Bits [10:8] are reserved and the OSA2011 manual says they must be 0. 266 Tcc_i_v9 10 0 cond:4 111010 rs1:5 1 cc:1 0 000 i:8 267} 268 269MOVcc 10 rd:5 101100 1 cond:4 imm:1 cc:1 0 rs2_or_imm:s11 270MOVfcc 10 rd:5 101100 0 cond:4 imm:1 cc:2 rs2_or_imm:s11 271MOVR 10 rd:5 101111 rs1:5 imm:1 cond:3 rs2_or_imm:s10 272 273JMPL 10 ..... 111000 ..... . ............. @r_r_ri 274{ 275 RETT 10 00000 111001 ..... . ............. @n_r_ri 276 RETURN 10 00000 111001 ..... . ............. @n_r_ri 277} 278NOP 10 00000 111011 ----- 0 00000000----- # FLUSH reg+reg 279NOP 10 00000 111011 ----- 1 ------------- # FLUSH reg+imm 280SAVE 10 ..... 111100 ..... . ............. @r_r_ri 281RESTORE 10 ..... 111101 ..... . ............. @r_r_ri 282 283DONE 10 00000 111110 00000 0 0000000000000 284RETRY 10 00001 111110 00000 0 0000000000000 285 286FMOVs 10 ..... 110100 00000 0 0000 0001 ..... @r_r2 287FMOVd 10 ..... 110100 00000 0 0000 0010 ..... @d_d2 288FMOVq 10 ..... 110100 00000 0 0000 0011 ..... @q_q2 289FNEGs 10 ..... 110100 00000 0 0000 0101 ..... @r_r2 290FNEGd 10 ..... 110100 00000 0 0000 0110 ..... @d_d2 291FNEGq 10 ..... 110100 00000 0 0000 0111 ..... @q_q2 292FABSs 10 ..... 110100 00000 0 0000 1001 ..... @r_r2 293FABSd 10 ..... 110100 00000 0 0000 1010 ..... @d_d2 294FABSq 10 ..... 110100 00000 0 0000 1011 ..... @q_q2 295FSQRTs 10 ..... 110100 00000 0 0010 1001 ..... @r_r2 296FSQRTd 10 ..... 110100 00000 0 0010 1010 ..... @d_d2 297FSQRTq 10 ..... 110100 00000 0 0010 1011 ..... @q_q2 298FADDs 10 ..... 110100 ..... 0 0100 0001 ..... @r_r_r 299FADDd 10 ..... 110100 ..... 0 0100 0010 ..... @d_d_d 300FADDq 10 ..... 110100 ..... 0 0100 0011 ..... @q_q_q 301FSUBs 10 ..... 110100 ..... 0 0100 0101 ..... @r_r_r 302FSUBd 10 ..... 110100 ..... 0 0100 0110 ..... @d_d_d 303FSUBq 10 ..... 110100 ..... 0 0100 0111 ..... @q_q_q 304FMULs 10 ..... 110100 ..... 0 0100 1001 ..... @r_r_r 305FMULd 10 ..... 110100 ..... 0 0100 1010 ..... @d_d_d 306FMULq 10 ..... 110100 ..... 0 0100 1011 ..... @q_q_q 307FDIVs 10 ..... 110100 ..... 0 0100 1101 ..... @r_r_r 308FDIVd 10 ..... 110100 ..... 0 0100 1110 ..... @d_d_d 309FDIVq 10 ..... 110100 ..... 0 0100 1111 ..... @q_q_q 310FsMULd 10 ..... 110100 ..... 0 0110 1001 ..... @d_r_r 311FdMULq 10 ..... 110100 ..... 0 0110 1110 ..... @q_d_d 312FsTOx 10 ..... 110100 00000 0 1000 0001 ..... @r_r2 313FdTOx 10 ..... 110100 00000 0 1000 0010 ..... @r_d2 314FqTOx 10 ..... 110100 00000 0 1000 0011 ..... @r_q2 315FxTOs 10 ..... 110100 00000 0 1000 0100 ..... @r_r2 316FxTOd 10 ..... 110100 00000 0 1000 1000 ..... @d_r2 317FxTOq 10 ..... 110100 00000 0 1000 1100 ..... @q_r2 318FiTOs 10 ..... 110100 00000 0 1100 0100 ..... @r_r2 319FdTOs 10 ..... 110100 00000 0 1100 0110 ..... @r_d2 320FqTOs 10 ..... 110100 00000 0 1100 0111 ..... @r_q2 321FiTOd 10 ..... 110100 00000 0 1100 1000 ..... @d_r2 322FsTOd 10 ..... 110100 00000 0 1100 1001 ..... @d_r2 323FqTOd 10 ..... 110100 00000 0 1100 1011 ..... @d_q2 324FiTOq 10 ..... 110100 00000 0 1100 1100 ..... @q_r2 325FsTOq 10 ..... 110100 00000 0 1100 1101 ..... @q_r2 326FdTOq 10 ..... 110100 00000 0 1100 1110 ..... @q_d2 327FsTOi 10 ..... 110100 00000 0 1101 0001 ..... @r_r2 328FdTOi 10 ..... 110100 00000 0 1101 0010 ..... @r_d2 329FqTOi 10 ..... 110100 00000 0 1101 0011 ..... @r_q2 330 331FMOVscc 10 rd:5 110101 0 cond:4 1 cc:1 0 000001 rs2:5 332FMOVdcc 10 ..... 110101 0 cond:4 1 cc:1 0 000010 ..... \ 333 rd=%dfp_rd rs2=%dfp_rs2 334FMOVqcc 10 ..... 110101 0 cond:4 1 cc:1 0 000011 ..... \ 335 rd=%qfp_rd rs2=%qfp_rs2 336 337FMOVsfcc 10 rd:5 110101 0 cond:4 0 cc:2 000001 rs2:5 338FMOVdfcc 10 ..... 110101 0 cond:4 0 cc:2 000010 ..... \ 339 rd=%dfp_rd rs2=%dfp_rs2 340FMOVqfcc 10 ..... 110101 0 cond:4 0 cc:2 000011 ..... \ 341 rd=%qfp_rd rs2=%qfp_rs2 342 343FMOVRs 10 rd:5 110101 rs1:5 0 cond:3 00101 rs2:5 344FMOVRd 10 ..... 110101 rs1:5 0 cond:3 00110 ..... \ 345 rd=%dfp_rd rs2=%dfp_rs2 346FMOVRq 10 ..... 110101 rs1:5 0 cond:3 00111 ..... \ 347 rd=%qfp_rd rs2=%qfp_rs2 348 349FCMPs 10 000 cc:2 110101 rs1:5 0 0101 0001 rs2:5 350FCMPd 10 000 cc:2 110101 ..... 0 0101 0010 ..... \ 351 rs1=%dfp_rs1 rs2=%dfp_rs2 352FCMPq 10 000 cc:2 110101 ..... 0 0101 0011 ..... \ 353 rs1=%qfp_rs1 rs2=%qfp_rs2 354FCMPEs 10 000 cc:2 110101 rs1:5 0 0101 0101 rs2:5 355FCMPEd 10 000 cc:2 110101 ..... 0 0101 0110 ..... \ 356 rs1=%dfp_rs1 rs2=%dfp_rs2 357FCMPEq 10 000 cc:2 110101 ..... 0 0101 0111 ..... \ 358 rs1=%qfp_rs1 rs2=%qfp_rs2 359 360{ 361 [ 362 EDGE8cc 10 ..... 110110 ..... 0 0000 0000 ..... @r_r_r 363 EDGE8N 10 ..... 110110 ..... 0 0000 0001 ..... @r_r_r 364 EDGE8Lcc 10 ..... 110110 ..... 0 0000 0010 ..... @r_r_r 365 EDGE8LN 10 ..... 110110 ..... 0 0000 0011 ..... @r_r_r 366 EDGE16cc 10 ..... 110110 ..... 0 0000 0100 ..... @r_r_r 367 EDGE16N 10 ..... 110110 ..... 0 0000 0101 ..... @r_r_r 368 EDGE16Lcc 10 ..... 110110 ..... 0 0000 0110 ..... @r_r_r 369 EDGE16LN 10 ..... 110110 ..... 0 0000 0111 ..... @r_r_r 370 EDGE32cc 10 ..... 110110 ..... 0 0000 1000 ..... @r_r_r 371 EDGE32N 10 ..... 110110 ..... 0 0000 1001 ..... @r_r_r 372 EDGE32Lcc 10 ..... 110110 ..... 0 0000 1010 ..... @r_r_r 373 EDGE32LN 10 ..... 110110 ..... 0 0000 1011 ..... @r_r_r 374 375 ARRAY8 10 ..... 110110 ..... 0 0001 0000 ..... @r_r_r 376 ARRAY16 10 ..... 110110 ..... 0 0001 0010 ..... @r_r_r 377 ARRAY32 10 ..... 110110 ..... 0 0001 0100 ..... @r_r_r 378 379 ALIGNADDR 10 ..... 110110 ..... 0 0001 1000 ..... @r_r_r 380 ALIGNADDRL 10 ..... 110110 ..... 0 0001 1010 ..... @r_r_r 381 382 BMASK 10 ..... 110110 ..... 0 0001 1001 ..... @r_r_r 383 384 FPCMPLE16 10 ..... 110110 ..... 0 0010 0000 ..... @r_d_d 385 FPCMPNE16 10 ..... 110110 ..... 0 0010 0010 ..... @r_d_d 386 FPCMPGT16 10 ..... 110110 ..... 0 0010 1000 ..... @r_d_d 387 FPCMPEQ16 10 ..... 110110 ..... 0 0010 1010 ..... @r_d_d 388 FPCMPLE32 10 ..... 110110 ..... 0 0010 0100 ..... @r_d_d 389 FPCMPNE32 10 ..... 110110 ..... 0 0010 0110 ..... @r_d_d 390 FPCMPGT32 10 ..... 110110 ..... 0 0010 1100 ..... @r_d_d 391 FPCMPEQ32 10 ..... 110110 ..... 0 0010 1110 ..... @r_d_d 392 393 FMUL8x16 10 ..... 110110 ..... 0 0011 0001 ..... @d_r_d 394 FMUL8x16AU 10 ..... 110110 ..... 0 0011 0011 ..... @d_r_r 395 FMUL8x16AL 10 ..... 110110 ..... 0 0011 0101 ..... @d_r_r 396 FMUL8SUx16 10 ..... 110110 ..... 0 0011 0110 ..... @d_d_d 397 FMUL8ULx16 10 ..... 110110 ..... 0 0011 0111 ..... @d_d_d 398 FMULD8SUx16 10 ..... 110110 ..... 0 0011 1000 ..... @d_r_r 399 FMULD8ULx16 10 ..... 110110 ..... 0 0011 1001 ..... @d_r_r 400 FPACK32 10 ..... 110110 ..... 0 0011 1010 ..... @d_d_d 401 FPACK16 10 ..... 110110 00000 0 0011 1011 ..... @r_d2 402 FPACKFIX 10 ..... 110110 00000 0 0011 1101 ..... @r_d2 403 PDIST 10 ..... 110110 ..... 0 0011 1110 ..... \ 404 &r_r_r_r rd=%dfp_rd rs1=%dfp_rd rs2=%dfp_rs1 rs3=%dfp_rs2 405 406 FALIGNDATAg 10 ..... 110110 ..... 0 0100 1000 ..... @d_d_d 407 FPMERGE 10 ..... 110110 ..... 0 0100 1011 ..... @d_r_r 408 BSHUFFLE 10 ..... 110110 ..... 0 0100 1100 ..... @d_d_d 409 FEXPAND 10 ..... 110110 00000 0 0100 1101 ..... @d_r2 410 411 FSRCd 10 ..... 110110 ..... 0 0111 0100 00000 @d_d1 # FSRC1d 412 FSRCs 10 ..... 110110 ..... 0 0111 0101 00000 @r_r1 # FSRC1s 413 FSRCd 10 ..... 110110 00000 0 0111 1000 ..... @d_d2 # FSRC2d 414 FSRCs 10 ..... 110110 00000 0 0111 1001 ..... @r_r2 # FSRC2s 415 FNOTd 10 ..... 110110 ..... 0 0110 1010 00000 @d_d1 # FNOT1d 416 FNOTs 10 ..... 110110 ..... 0 0110 1011 00000 @r_r1 # FNOT1s 417 FNOTd 10 ..... 110110 00000 0 0110 0110 ..... @d_d2 # FNOT2d 418 FNOTs 10 ..... 110110 00000 0 0110 0111 ..... @r_r2 # FNOT2s 419 420 FPADD16 10 ..... 110110 ..... 0 0101 0000 ..... @d_d_d 421 FPADD16s 10 ..... 110110 ..... 0 0101 0001 ..... @r_r_r 422 FPADD32 10 ..... 110110 ..... 0 0101 0010 ..... @d_d_d 423 FPADD32s 10 ..... 110110 ..... 0 0101 0011 ..... @r_r_r 424 FPSUB16 10 ..... 110110 ..... 0 0101 0100 ..... @d_d_d 425 FPSUB16s 10 ..... 110110 ..... 0 0101 0101 ..... @r_r_r 426 FPSUB32 10 ..... 110110 ..... 0 0101 0110 ..... @d_d_d 427 FPSUB32s 10 ..... 110110 ..... 0 0101 0111 ..... @r_r_r 428 429 FNORd 10 ..... 110110 ..... 0 0110 0010 ..... @d_d_d 430 FNORs 10 ..... 110110 ..... 0 0110 0011 ..... @r_r_r 431 FANDNOTd 10 ..... 110110 ..... 0 0110 0100 ..... @d_d_d # FANDNOT2d 432 FANDNOTs 10 ..... 110110 ..... 0 0110 0101 ..... @r_r_r # FANDNOT2s 433 FANDNOTd 10 ..... 110110 ..... 0 0110 1000 ..... @d_d_d_swap # ... 1d 434 FANDNOTs 10 ..... 110110 ..... 0 0110 1001 ..... @r_r_r_swap # ... 1s 435 FXORd 10 ..... 110110 ..... 0 0110 1100 ..... @d_d_d 436 FXORs 10 ..... 110110 ..... 0 0110 1101 ..... @r_r_r 437 FNANDd 10 ..... 110110 ..... 0 0110 1110 ..... @d_d_d 438 FNANDs 10 ..... 110110 ..... 0 0110 1111 ..... @r_r_r 439 FANDd 10 ..... 110110 ..... 0 0111 0000 ..... @d_d_d 440 FANDs 10 ..... 110110 ..... 0 0111 0001 ..... @r_r_r 441 FXNORd 10 ..... 110110 ..... 0 0111 0010 ..... @d_d_d 442 FXNORs 10 ..... 110110 ..... 0 0111 0011 ..... @r_r_r 443 FORNOTd 10 ..... 110110 ..... 0 0111 0110 ..... @d_d_d # FORNOT2d 444 FORNOTs 10 ..... 110110 ..... 0 0111 0111 ..... @r_r_r # FORNOT2s 445 FORNOTd 10 ..... 110110 ..... 0 0111 1010 ..... @d_d_d_swap # ... 1d 446 FORNOTs 10 ..... 110110 ..... 0 0111 1011 ..... @r_r_r_swap # ... 1s 447 FORd 10 ..... 110110 ..... 0 0111 1100 ..... @d_d_d 448 FORs 10 ..... 110110 ..... 0 0111 1101 ..... @r_r_r 449 450 FZEROd 10 ..... 110110 00000 0 0110 0000 00000 rd=%dfp_rd 451 FZEROs 10 rd:5 110110 00000 0 0110 0001 00000 452 FONEd 10 ..... 110110 00000 0 0111 1110 00000 rd=%dfp_rd 453 FONEs 10 rd:5 110110 00000 0 0111 1111 00000 454 ] 455 NCP 10 ----- 110110 ----- --------- ----- # v8 CPop1 456} 457 458{ 459 [ 460 FMADDs 10 ..... 110111 ..... ..... 0001 ..... @r_r_r_r 461 FMADDd 10 ..... 110111 ..... ..... 0010 ..... @d_d_d_d 462 FMSUBs 10 ..... 110111 ..... ..... 0101 ..... @r_r_r_r 463 FMSUBd 10 ..... 110111 ..... ..... 0110 ..... @d_d_d_d 464 FNMSUBs 10 ..... 110111 ..... ..... 1001 ..... @r_r_r_r 465 FNMSUBd 10 ..... 110111 ..... ..... 1010 ..... @d_d_d_d 466 FNMADDs 10 ..... 110111 ..... ..... 1101 ..... @r_r_r_r 467 FNMADDd 10 ..... 110111 ..... ..... 1110 ..... @d_d_d_d 468 ] 469 NCP 10 ----- 110111 ----- --------- ----- # v8 CPop2 470} 471 472## 473## Major Opcode 11 -- load and store instructions 474## 475 476&r_r_ri_asi rd rs1 rs2_or_imm asi imm:bool 477@r_r_ri_na .. rd:5 ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri_asi asi=-1 478@d_r_ri_na .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13 \ 479 &r_r_ri_asi rd=%dfp_rd asi=-1 480@q_r_ri_na .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13 \ 481 &r_r_ri_asi rd=%qfp_rd asi=-1 482 483@r_r_r_asi .. rd:5 ...... rs1:5 0 asi:8 rs2_or_imm:5 &r_r_ri_asi imm=0 484@r_r_i_asi .. rd:5 ...... rs1:5 1 rs2_or_imm:s13 \ 485 &r_r_ri_asi imm=1 asi=-2 486@d_r_r_asi .. ..... ...... rs1:5 0 asi:8 rs2_or_imm:5 \ 487 &r_r_ri_asi rd=%dfp_rd imm=0 488@d_r_i_asi .. ..... ...... rs1:5 1 rs2_or_imm:s13 \ 489 &r_r_ri_asi rd=%dfp_rd imm=1 asi=-2 490@q_r_r_asi .. ..... ...... rs1:5 0 asi:8 rs2_or_imm:5 \ 491 &r_r_ri_asi rd=%qfp_rd imm=0 492@q_r_i_asi .. ..... ...... rs1:5 1 rs2_or_imm:s13 \ 493 &r_r_ri_asi rd=%qfp_rd imm=1 asi=-2 494@casa_imm .. rd:5 ...... rs1:5 1 00000000 rs2_or_imm:5 \ 495 &r_r_ri_asi imm=1 asi=-2 496 497LDUW 11 ..... 000000 ..... . ............. @r_r_ri_na 498LDUB 11 ..... 000001 ..... . ............. @r_r_ri_na 499LDUH 11 ..... 000010 ..... . ............. @r_r_ri_na 500LDD 11 ..... 000011 ..... . ............. @r_r_ri_na 501LDSW 11 ..... 001000 ..... . ............. @r_r_ri_na 502LDSB 11 ..... 001001 ..... . ............. @r_r_ri_na 503LDSH 11 ..... 001010 ..... . ............. @r_r_ri_na 504LDX 11 ..... 001011 ..... . ............. @r_r_ri_na 505 506STW 11 ..... 000100 ..... . ............. @r_r_ri_na 507STB 11 ..... 000101 ..... . ............. @r_r_ri_na 508STH 11 ..... 000110 ..... . ............. @r_r_ri_na 509STD 11 ..... 000111 ..... . ............. @r_r_ri_na 510STX 11 ..... 001110 ..... . ............. @r_r_ri_na 511 512LDUW 11 ..... 010000 ..... . ............. @r_r_r_asi # LDUWA 513LDUW 11 ..... 010000 ..... . ............. @r_r_i_asi # LDUWA 514LDUB 11 ..... 010001 ..... . ............. @r_r_r_asi # LDUBA 515LDUB 11 ..... 010001 ..... . ............. @r_r_i_asi # LDUBA 516LDUH 11 ..... 010010 ..... . ............. @r_r_r_asi # LDUHA 517LDUH 11 ..... 010010 ..... . ............. @r_r_i_asi # LDUHA 518LDD 11 ..... 010011 ..... . ............. @r_r_r_asi # LDDA 519LDD 11 ..... 010011 ..... . ............. @r_r_i_asi # LDDA 520LDX 11 ..... 011011 ..... . ............. @r_r_r_asi # LDXA 521LDX 11 ..... 011011 ..... . ............. @r_r_i_asi # LDXA 522LDSB 11 ..... 011001 ..... . ............. @r_r_r_asi # LDSBA 523LDSB 11 ..... 011001 ..... . ............. @r_r_i_asi # LDSBA 524LDSH 11 ..... 011010 ..... . ............. @r_r_r_asi # LDSHA 525LDSH 11 ..... 011010 ..... . ............. @r_r_i_asi # LDSHA 526LDSW 11 ..... 011000 ..... . ............. @r_r_r_asi # LDSWA 527LDSW 11 ..... 011000 ..... . ............. @r_r_i_asi # LDSWA 528 529STW 11 ..... 010100 ..... . ............. @r_r_r_asi # STWA 530STW 11 ..... 010100 ..... . ............. @r_r_i_asi # STWA 531STB 11 ..... 010101 ..... . ............. @r_r_r_asi # STBA 532STB 11 ..... 010101 ..... . ............. @r_r_i_asi # STBA 533STH 11 ..... 010110 ..... . ............. @r_r_r_asi # STHA 534STH 11 ..... 010110 ..... . ............. @r_r_i_asi # STHA 535STD 11 ..... 010111 ..... . ............. @r_r_r_asi # STDA 536STD 11 ..... 010111 ..... . ............. @r_r_i_asi # STDA 537STX 11 ..... 011110 ..... . ............. @r_r_r_asi # STXA 538STX 11 ..... 011110 ..... . ............. @r_r_i_asi # STXA 539 540LDF 11 ..... 100000 ..... . ............. @r_r_ri_na 541LDFSR 11 00000 100001 ..... . ............. @n_r_ri 542LDXFSR 11 00001 100001 ..... . ............. @n_r_ri 543LDQF 11 ..... 100010 ..... . ............. @q_r_ri_na 544LDDF 11 ..... 100011 ..... . ............. @d_r_ri_na 545 546STF 11 ..... 100100 ..... . ............. @r_r_ri_na 547STFSR 11 00000 100101 ..... . ............. @n_r_ri 548STXFSR 11 00001 100101 ..... . ............. @n_r_ri 549{ 550 STQF 11 ..... 100110 ..... . ............. @q_r_ri_na 551 STDFQ 11 ----- 100110 ----- - ------------- 552} 553STDF 11 ..... 100111 ..... . ............. @d_r_ri_na 554 555LDSTUB 11 ..... 001101 ..... . ............. @r_r_ri_na 556LDSTUB 11 ..... 011101 ..... . ............. @r_r_r_asi # LDSTUBA 557LDSTUB 11 ..... 011101 ..... . ............. @r_r_i_asi # LDSTUBA 558 559SWAP 11 ..... 001111 ..... . ............. @r_r_ri_na 560SWAP 11 ..... 011111 ..... . ............. @r_r_r_asi # SWAPA 561SWAP 11 ..... 011111 ..... . ............. @r_r_i_asi # SWAPA 562 563CASA 11 ..... 111100 ..... . ............. @r_r_r_asi 564CASA 11 ..... 111100 ..... . ............. @casa_imm 565CASXA 11 ..... 111110 ..... . ............. @r_r_r_asi 566CASXA 11 ..... 111110 ..... . ............. @casa_imm 567 568NOP_v9 11 ----- 101101 ----- 0 00000000 ----- # PREFETCH 569NOP_v9 11 ----- 101101 ----- 1 ------------- # PREFETCH 570NOP_v9 11 ----- 111101 ----- - ------------- # PREFETCHA 571 572{ 573 [ 574 LDFA 11 ..... 110000 ..... . ............. @r_r_r_asi 575 LDFA 11 ..... 110000 ..... . ............. @r_r_i_asi 576 ] 577 NCP 11 ----- 110000 ----- --------- ----- # v8 LDC 578} 579NCP 11 ----- 110001 ----- --------- ----- # v8 LDCSR 580LDQFA 11 ..... 110010 ..... . ............. @q_r_r_asi 581LDQFA 11 ..... 110010 ..... . ............. @q_r_i_asi 582{ 583 [ 584 LDDFA 11 ..... 110011 ..... . ............. @d_r_r_asi 585 LDDFA 11 ..... 110011 ..... . ............. @d_r_i_asi 586 ] 587 NCP 11 ----- 110011 ----- --------- ----- # v8 LDDC 588} 589 590{ 591 [ 592 STFA 11 ..... 110100 ..... . ............. @r_r_r_asi 593 STFA 11 ..... 110100 ..... . ............. @r_r_i_asi 594 ] 595 NCP 11 ----- 110100 ----- --------- ----- # v8 STC 596} 597NCP 11 ----- 110101 ----- --------- ----- # v8 STCSR 598{ 599 [ 600 STQFA 11 ..... 110110 ..... . ............. @q_r_r_asi 601 STQFA 11 ..... 110110 ..... . ............. @q_r_i_asi 602 ] 603 NCP 11 ----- 110110 ----- --------- ----- # v8 STDCQ 604} 605{ 606 [ 607 STDFA 11 ..... 110111 ..... . ............. @d_r_r_asi 608 STDFA 11 ..... 110111 ..... . ............. @d_r_i_asi 609 ] 610 NCP 11 ----- 110111 ----- --------- ----- # v8 STDC 611} 612