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 WRMWAIT 10 11100 110000 ..... . ............. @n_r_ri 128 ] 129 # Before v8, rs1==0 was WRY, and the rest executed as nop. 130 [ 131 NOP_v7 10 ----- 110000 ----- 0 00000000 ----- 132 NOP_v7 10 ----- 110000 ----- 1 -------- ----- 133 ] 134} 135 136{ 137 RDPSR 10 rd:5 101001 00000 0 0000000000000 138 RDHPR_hpstate 10 rd:5 101001 00000 0 0000000000000 139} 140RDHPR_htstate 10 rd:5 101001 00001 0 0000000000000 141RDHPR_hintp 10 rd:5 101001 00011 0 0000000000000 142RDHPR_htba 10 rd:5 101001 00101 0 0000000000000 143RDHPR_hver 10 rd:5 101001 00110 0 0000000000000 144RDHPR_hstick_cmpr 10 rd:5 101001 11111 0 0000000000000 145 146{ 147 WRPSR 10 00000 110001 ..... . ............. @n_r_ri 148 SAVED 10 00000 110001 00000 0 0000000000000 149} 150RESTORED 10 00001 110001 00000 0 0000000000000 151# UA2005 ALLCLEAN 152# UA2005 OTHERW 153# UA2005 NORMALW 154# UA2005 INVALW 155 156{ 157 RDWIM 10 rd:5 101010 00000 0 0000000000000 158 RDPR_tpc 10 rd:5 101010 00000 0 0000000000000 159} 160RDPR_tnpc 10 rd:5 101010 00001 0 0000000000000 161RDPR_tstate 10 rd:5 101010 00010 0 0000000000000 162RDPR_tt 10 rd:5 101010 00011 0 0000000000000 163RDPR_tick 10 rd:5 101010 00100 0 0000000000000 164RDPR_tba 10 rd:5 101010 00101 0 0000000000000 165RDPR_pstate 10 rd:5 101010 00110 0 0000000000000 166RDPR_tl 10 rd:5 101010 00111 0 0000000000000 167RDPR_pil 10 rd:5 101010 01000 0 0000000000000 168RDPR_cwp 10 rd:5 101010 01001 0 0000000000000 169RDPR_cansave 10 rd:5 101010 01010 0 0000000000000 170RDPR_canrestore 10 rd:5 101010 01011 0 0000000000000 171RDPR_cleanwin 10 rd:5 101010 01100 0 0000000000000 172RDPR_otherwin 10 rd:5 101010 01101 0 0000000000000 173RDPR_wstate 10 rd:5 101010 01110 0 0000000000000 174RDPR_gl 10 rd:5 101010 10000 0 0000000000000 175RDPR_strand_status 10 rd:5 101010 11010 0 0000000000000 176RDPR_ver 10 rd:5 101010 11111 0 0000000000000 177 178{ 179 WRWIM 10 00000 110010 ..... . ............. @n_r_ri 180 WRPR_tpc 10 00000 110010 ..... . ............. @n_r_ri 181} 182WRPR_tnpc 10 00001 110010 ..... . ............. @n_r_ri 183WRPR_tstate 10 00010 110010 ..... . ............. @n_r_ri 184WRPR_tt 10 00011 110010 ..... . ............. @n_r_ri 185WRPR_tick 10 00100 110010 ..... . ............. @n_r_ri 186WRPR_tba 10 00101 110010 ..... . ............. @n_r_ri 187WRPR_pstate 10 00110 110010 ..... . ............. @n_r_ri 188WRPR_tl 10 00111 110010 ..... . ............. @n_r_ri 189WRPR_pil 10 01000 110010 ..... . ............. @n_r_ri 190WRPR_cwp 10 01001 110010 ..... . ............. @n_r_ri 191WRPR_cansave 10 01010 110010 ..... . ............. @n_r_ri 192WRPR_canrestore 10 01011 110010 ..... . ............. @n_r_ri 193WRPR_cleanwin 10 01100 110010 ..... . ............. @n_r_ri 194WRPR_otherwin 10 01101 110010 ..... . ............. @n_r_ri 195WRPR_wstate 10 01110 110010 ..... . ............. @n_r_ri 196WRPR_gl 10 10000 110010 ..... . ............. @n_r_ri 197WRPR_strand_status 10 11010 110010 ..... . ............. @n_r_ri 198 199{ 200 FLUSHW 10 00000 101011 00000 0 0000000000000 201 RDTBR 10 rd:5 101011 00000 0 0000000000000 202} 203 204{ 205 WRTBR 10 00000 110011 ..... . ............. @n_r_ri 206 WRHPR_hpstate 10 00000 110011 ..... . ............. @n_r_ri 207} 208WRHPR_htstate 10 00001 110011 ..... . ............. @n_r_ri 209WRHPR_hintp 10 00011 110011 ..... . ............. @n_r_ri 210WRHPR_htba 10 00101 110011 ..... . ............. @n_r_ri 211WRHPR_hstick_cmpr 10 11111 110011 ..... . ............. @n_r_ri 212 213ADD 10 ..... 0.0000 ..... . ............. @r_r_ri_cc 214AND 10 ..... 0.0001 ..... . ............. @r_r_ri_cc 215OR 10 ..... 0.0010 ..... . ............. @r_r_ri_cc 216XOR 10 ..... 0.0011 ..... . ............. @r_r_ri_cc 217SUB 10 ..... 0.0100 ..... . ............. @r_r_ri_cc 218ANDN 10 ..... 0.0101 ..... . ............. @r_r_ri_cc 219ORN 10 ..... 0.0110 ..... . ............. @r_r_ri_cc 220XORN 10 ..... 0.0111 ..... . ............. @r_r_ri_cc 221ADDC 10 ..... 0.1000 ..... . ............. @r_r_ri_cc 222SUBC 10 ..... 0.1100 ..... . ............. @r_r_ri_cc 223 224MULX 10 ..... 001001 ..... . ............. @r_r_ri_cc0 225UMUL 10 ..... 0.1010 ..... . ............. @r_r_ri_cc 226SMUL 10 ..... 0.1011 ..... . ............. @r_r_ri_cc 227MULScc 10 ..... 100100 ..... . ............. @r_r_ri_cc1 228 229UDIVX 10 ..... 001101 ..... . ............. @r_r_ri 230SDIVX 10 ..... 101101 ..... . ............. @r_r_ri 231UDIV 10 ..... 001110 ..... . ............. @r_r_ri 232UDIVcc 10 ..... 011110 ..... . ............. @r_r_ri_cc1 233SDIV 10 ..... 0.1111 ..... . ............. @r_r_ri_cc 234 235TADDcc 10 ..... 100000 ..... . ............. @r_r_ri_cc1 236TSUBcc 10 ..... 100001 ..... . ............. @r_r_ri_cc1 237TADDccTV 10 ..... 100010 ..... . ............. @r_r_ri_cc1 238TSUBccTV 10 ..... 100011 ..... . ............. @r_r_ri_cc1 239 240POPC 10 rd:5 101110 00000 imm:1 rs2_or_imm:s13 \ 241 &r_r_ri_cc rs1=0 cc=0 242 243&shiftr rd rs1 rs2 x:bool 244@shiftr .. rd:5 ...... rs1:5 . x:1 ....... rs2:5 &shiftr 245 246SLL_r 10 ..... 100101 ..... 0 . 0000000 ..... @shiftr 247SRL_r 10 ..... 100110 ..... 0 . 0000000 ..... @shiftr 248SRA_r 10 ..... 100111 ..... 0 . 0000000 ..... @shiftr 249 250&shifti rd rs1 i x:bool 251@shifti .. rd:5 ...... rs1:5 . x:1 ...... i:6 &shifti 252 253SLL_i 10 ..... 100101 ..... 1 . 000000 ...... @shifti 254SRL_i 10 ..... 100110 ..... 1 . 000000 ...... @shifti 255SRA_i 10 ..... 100111 ..... 1 . 000000 ...... @shifti 256 257Tcc_r 10 0 cond:4 111010 rs1:5 0 cc:1 0000000 rs2:5 258{ 259 # For v7, the entire simm13 field is present, but masked to 7 bits. 260 # For v8, [12:7] are reserved. However, a compatibility note for 261 # the Tcc insn in the v9 manual suggests that the v8 reserved field 262 # was ignored and did not produce traps. 263 Tcc_i_v7 10 0 cond:4 111010 rs1:5 1 ------ i:7 264 265 # For v9, bits [12:11] are cc1 and cc0 (and cc0 must be 0). 266 # Bits [10:8] are reserved and the OSA2011 manual says they must be 0. 267 Tcc_i_v9 10 0 cond:4 111010 rs1:5 1 cc:1 0 000 i:8 268} 269 270MOVcc 10 rd:5 101100 1 cond:4 imm:1 cc:1 0 rs2_or_imm:s11 271MOVfcc 10 rd:5 101100 0 cond:4 imm:1 cc:2 rs2_or_imm:s11 272MOVR 10 rd:5 101111 rs1:5 imm:1 cond:3 rs2_or_imm:s10 273 274JMPL 10 ..... 111000 ..... . ............. @r_r_ri 275{ 276 RETT 10 00000 111001 ..... . ............. @n_r_ri 277 RETURN 10 00000 111001 ..... . ............. @n_r_ri 278} 279NOP 10 00000 111011 ----- 0 00000000----- # FLUSH reg+reg 280NOP 10 00000 111011 ----- 1 ------------- # FLUSH reg+imm 281SAVE 10 ..... 111100 ..... . ............. @r_r_ri 282RESTORE 10 ..... 111101 ..... . ............. @r_r_ri 283 284DONE 10 00000 111110 00000 0 0000000000000 285RETRY 10 00001 111110 00000 0 0000000000000 286 287FMOVs 10 ..... 110100 00000 0 0000 0001 ..... @r_r2 288FMOVd 10 ..... 110100 00000 0 0000 0010 ..... @d_d2 289FMOVq 10 ..... 110100 00000 0 0000 0011 ..... @q_q2 290FNEGs 10 ..... 110100 00000 0 0000 0101 ..... @r_r2 291FNEGd 10 ..... 110100 00000 0 0000 0110 ..... @d_d2 292FNEGq 10 ..... 110100 00000 0 0000 0111 ..... @q_q2 293FABSs 10 ..... 110100 00000 0 0000 1001 ..... @r_r2 294FABSd 10 ..... 110100 00000 0 0000 1010 ..... @d_d2 295FABSq 10 ..... 110100 00000 0 0000 1011 ..... @q_q2 296FSQRTs 10 ..... 110100 00000 0 0010 1001 ..... @r_r2 297FSQRTd 10 ..... 110100 00000 0 0010 1010 ..... @d_d2 298FSQRTq 10 ..... 110100 00000 0 0010 1011 ..... @q_q2 299FADDs 10 ..... 110100 ..... 0 0100 0001 ..... @r_r_r 300FADDd 10 ..... 110100 ..... 0 0100 0010 ..... @d_d_d 301FADDq 10 ..... 110100 ..... 0 0100 0011 ..... @q_q_q 302FSUBs 10 ..... 110100 ..... 0 0100 0101 ..... @r_r_r 303FSUBd 10 ..... 110100 ..... 0 0100 0110 ..... @d_d_d 304FSUBq 10 ..... 110100 ..... 0 0100 0111 ..... @q_q_q 305FMULs 10 ..... 110100 ..... 0 0100 1001 ..... @r_r_r 306FMULd 10 ..... 110100 ..... 0 0100 1010 ..... @d_d_d 307FMULq 10 ..... 110100 ..... 0 0100 1011 ..... @q_q_q 308FDIVs 10 ..... 110100 ..... 0 0100 1101 ..... @r_r_r 309FDIVd 10 ..... 110100 ..... 0 0100 1110 ..... @d_d_d 310FDIVq 10 ..... 110100 ..... 0 0100 1111 ..... @q_q_q 311FNADDs 10 ..... 110100 ..... 0 0101 0001 ..... @r_r_r 312FNADDd 10 ..... 110100 ..... 0 0101 0010 ..... @d_d_d 313FNMULs 10 ..... 110100 ..... 0 0101 1001 ..... @r_r_r 314FNMULd 10 ..... 110100 ..... 0 0101 1010 ..... @d_d_d 315FHADDs 10 ..... 110100 ..... 0 0110 0001 ..... @r_r_r 316FHADDd 10 ..... 110100 ..... 0 0110 0010 ..... @d_d_d 317FHSUBs 10 ..... 110100 ..... 0 0110 0101 ..... @r_r_r 318FHSUBd 10 ..... 110100 ..... 0 0110 0110 ..... @d_d_d 319FsMULd 10 ..... 110100 ..... 0 0110 1001 ..... @d_r_r 320FdMULq 10 ..... 110100 ..... 0 0110 1110 ..... @q_d_d 321FNHADDs 10 ..... 110100 ..... 0 0111 0001 ..... @r_r_r 322FNHADDd 10 ..... 110100 ..... 0 0111 0010 ..... @d_d_d 323FNsMULd 10 ..... 110100 ..... 0 0111 1001 ..... @d_r_r 324FsTOx 10 ..... 110100 00000 0 1000 0001 ..... @r_r2 325FdTOx 10 ..... 110100 00000 0 1000 0010 ..... @r_d2 326FqTOx 10 ..... 110100 00000 0 1000 0011 ..... @r_q2 327FxTOs 10 ..... 110100 00000 0 1000 0100 ..... @r_r2 328FxTOd 10 ..... 110100 00000 0 1000 1000 ..... @d_r2 329FxTOq 10 ..... 110100 00000 0 1000 1100 ..... @q_r2 330FiTOs 10 ..... 110100 00000 0 1100 0100 ..... @r_r2 331FdTOs 10 ..... 110100 00000 0 1100 0110 ..... @r_d2 332FqTOs 10 ..... 110100 00000 0 1100 0111 ..... @r_q2 333FiTOd 10 ..... 110100 00000 0 1100 1000 ..... @d_r2 334FsTOd 10 ..... 110100 00000 0 1100 1001 ..... @d_r2 335FqTOd 10 ..... 110100 00000 0 1100 1011 ..... @d_q2 336FiTOq 10 ..... 110100 00000 0 1100 1100 ..... @q_r2 337FsTOq 10 ..... 110100 00000 0 1100 1101 ..... @q_r2 338FdTOq 10 ..... 110100 00000 0 1100 1110 ..... @q_d2 339FsTOi 10 ..... 110100 00000 0 1101 0001 ..... @r_r2 340FdTOi 10 ..... 110100 00000 0 1101 0010 ..... @r_d2 341FqTOi 10 ..... 110100 00000 0 1101 0011 ..... @r_q2 342 343FMOVscc 10 rd:5 110101 0 cond:4 1 cc:1 0 000001 rs2:5 344FMOVdcc 10 ..... 110101 0 cond:4 1 cc:1 0 000010 ..... \ 345 rd=%dfp_rd rs2=%dfp_rs2 346FMOVqcc 10 ..... 110101 0 cond:4 1 cc:1 0 000011 ..... \ 347 rd=%qfp_rd rs2=%qfp_rs2 348 349FMOVsfcc 10 rd:5 110101 0 cond:4 0 cc:2 000001 rs2:5 350FMOVdfcc 10 ..... 110101 0 cond:4 0 cc:2 000010 ..... \ 351 rd=%dfp_rd rs2=%dfp_rs2 352FMOVqfcc 10 ..... 110101 0 cond:4 0 cc:2 000011 ..... \ 353 rd=%qfp_rd rs2=%qfp_rs2 354 355FMOVRs 10 rd:5 110101 rs1:5 0 cond:3 00101 rs2:5 356FMOVRd 10 ..... 110101 rs1:5 0 cond:3 00110 ..... \ 357 rd=%dfp_rd rs2=%dfp_rs2 358FMOVRq 10 ..... 110101 rs1:5 0 cond:3 00111 ..... \ 359 rd=%qfp_rd rs2=%qfp_rs2 360 361FCMPs 10 000 cc:2 110101 rs1:5 0 0101 0001 rs2:5 362FCMPd 10 000 cc:2 110101 ..... 0 0101 0010 ..... \ 363 rs1=%dfp_rs1 rs2=%dfp_rs2 364FCMPq 10 000 cc:2 110101 ..... 0 0101 0011 ..... \ 365 rs1=%qfp_rs1 rs2=%qfp_rs2 366FCMPEs 10 000 cc:2 110101 rs1:5 0 0101 0101 rs2:5 367FCMPEd 10 000 cc:2 110101 ..... 0 0101 0110 ..... \ 368 rs1=%dfp_rs1 rs2=%dfp_rs2 369FCMPEq 10 000 cc:2 110101 ..... 0 0101 0111 ..... \ 370 rs1=%qfp_rs1 rs2=%qfp_rs2 371 372{ 373 [ 374 EDGE8cc 10 ..... 110110 ..... 0 0000 0000 ..... @r_r_r 375 EDGE8N 10 ..... 110110 ..... 0 0000 0001 ..... @r_r_r 376 EDGE8Lcc 10 ..... 110110 ..... 0 0000 0010 ..... @r_r_r 377 EDGE8LN 10 ..... 110110 ..... 0 0000 0011 ..... @r_r_r 378 EDGE16cc 10 ..... 110110 ..... 0 0000 0100 ..... @r_r_r 379 EDGE16N 10 ..... 110110 ..... 0 0000 0101 ..... @r_r_r 380 EDGE16Lcc 10 ..... 110110 ..... 0 0000 0110 ..... @r_r_r 381 EDGE16LN 10 ..... 110110 ..... 0 0000 0111 ..... @r_r_r 382 EDGE32cc 10 ..... 110110 ..... 0 0000 1000 ..... @r_r_r 383 EDGE32N 10 ..... 110110 ..... 0 0000 1001 ..... @r_r_r 384 EDGE32Lcc 10 ..... 110110 ..... 0 0000 1010 ..... @r_r_r 385 EDGE32LN 10 ..... 110110 ..... 0 0000 1011 ..... @r_r_r 386 387 ARRAY8 10 ..... 110110 ..... 0 0001 0000 ..... @r_r_r 388 ARRAY16 10 ..... 110110 ..... 0 0001 0010 ..... @r_r_r 389 ARRAY32 10 ..... 110110 ..... 0 0001 0100 ..... @r_r_r 390 391 ADDXC 10 ..... 110110 ..... 0 0001 0001 ..... @r_r_r 392 ADDXCcc 10 ..... 110110 ..... 0 0001 0011 ..... @r_r_r 393 UMULXHI 10 ..... 110110 ..... 0 0001 0110 ..... @r_r_r 394 LZCNT 10 ..... 110110 00000 0 0001 0111 ..... @r_r2 395 XMULX 10 ..... 110110 ..... 1 0001 0101 ..... @r_r_r 396 XMULXHI 10 ..... 110110 ..... 1 0001 0110 ..... @r_r_r 397 398 ALIGNADDR 10 ..... 110110 ..... 0 0001 1000 ..... @r_r_r 399 ALIGNADDRL 10 ..... 110110 ..... 0 0001 1010 ..... @r_r_r 400 401 BMASK 10 ..... 110110 ..... 0 0001 1001 ..... @r_r_r 402 403 CMASK8 10 00000 110110 00000 0 0001 1011 rs2:5 404 CMASK16 10 00000 110110 00000 0 0001 1101 rs2:5 405 CMASK32 10 00000 110110 00000 0 0001 1111 rs2:5 406 407 FPCMPLE16 10 ..... 110110 ..... 0 0010 0000 ..... @r_d_d 408 FPCMPNE16 10 ..... 110110 ..... 0 0010 0010 ..... @r_d_d 409 FPCMPGT16 10 ..... 110110 ..... 0 0010 1000 ..... @r_d_d 410 FPCMPEQ16 10 ..... 110110 ..... 0 0010 1010 ..... @r_d_d 411 FPCMPLE32 10 ..... 110110 ..... 0 0010 0100 ..... @r_d_d 412 FPCMPNE32 10 ..... 110110 ..... 0 0010 0110 ..... @r_d_d 413 FPCMPGT32 10 ..... 110110 ..... 0 0010 1100 ..... @r_d_d 414 FPCMPEQ32 10 ..... 110110 ..... 0 0010 1110 ..... @r_d_d 415 416 FSLL16 10 ..... 110110 ..... 0 0010 0001 ..... @d_d_d 417 FSRL16 10 ..... 110110 ..... 0 0010 0011 ..... @d_d_d 418 FSLAS16 10 ..... 110110 ..... 0 0010 1001 ..... @d_d_d 419 FSRA16 10 ..... 110110 ..... 0 0010 1011 ..... @d_d_d 420 FSLL32 10 ..... 110110 ..... 0 0010 0101 ..... @d_d_d 421 FSRL32 10 ..... 110110 ..... 0 0010 0111 ..... @d_d_d 422 FSLAS32 10 ..... 110110 ..... 0 0010 1101 ..... @d_d_d 423 FSRA32 10 ..... 110110 ..... 0 0010 1111 ..... @d_d_d 424 425 FPCMPULE8 10 ..... 110110 ..... 1 0010 0000 ..... @r_d_d 426 FPCMPUGT8 10 ..... 110110 ..... 1 0010 1000 ..... @r_d_d 427 FPCMPNE8 10 ..... 110110 ..... 1 0010 0010 ..... @r_d_d 428 FPCMPEQ8 10 ..... 110110 ..... 1 0010 1010 ..... @r_d_d 429 FPCMPLE8 10 ..... 110110 ..... 0 0011 0100 ..... @r_d_d 430 FPCMPGT8 10 ..... 110110 ..... 0 0011 1100 ..... @r_d_d 431 FPCMPULE16 10 ..... 110110 ..... 1 0010 1110 ..... @r_d_d 432 FPCMPUGT16 10 ..... 110110 ..... 1 0010 1011 ..... @r_d_d 433 FPCMPULE32 10 ..... 110110 ..... 1 0010 1111 ..... @r_d_d 434 FPCMPUGT32 10 ..... 110110 ..... 1 0010 1100 ..... @r_d_d 435 436 FMUL8x16 10 ..... 110110 ..... 0 0011 0001 ..... @d_r_d 437 FMUL8x16AU 10 ..... 110110 ..... 0 0011 0011 ..... @d_r_r 438 FMUL8x16AL 10 ..... 110110 ..... 0 0011 0101 ..... @d_r_r 439 FMUL8SUx16 10 ..... 110110 ..... 0 0011 0110 ..... @d_d_d 440 FMUL8ULx16 10 ..... 110110 ..... 0 0011 0111 ..... @d_d_d 441 FMULD8SUx16 10 ..... 110110 ..... 0 0011 1000 ..... @d_r_r 442 FMULD8ULx16 10 ..... 110110 ..... 0 0011 1001 ..... @d_r_r 443 FPACK32 10 ..... 110110 ..... 0 0011 1010 ..... @d_d_d 444 FPACK16 10 ..... 110110 00000 0 0011 1011 ..... @r_d2 445 FPACKFIX 10 ..... 110110 00000 0 0011 1101 ..... @r_d2 446 PDIST 10 ..... 110110 ..... 0 0011 1110 ..... \ 447 &r_r_r_r rd=%dfp_rd rs1=%dfp_rd rs2=%dfp_rs1 rs3=%dfp_rs2 448 PDISTN 10 ..... 110110 ..... 0 0011 1111 ..... @r_d_d 449 450 FMEAN16 10 ..... 110110 ..... 0 0100 0000 ..... @d_d_d 451 SUBXC 10 ..... 110110 ..... 0 0100 0001 ..... @r_r_r 452 SUBXCcc 10 ..... 110110 ..... 0 0100 0011 ..... @r_r_r 453 FCHKSM16 10 ..... 110110 ..... 0 0100 0100 ..... @d_d_d 454 FALIGNDATAg 10 ..... 110110 ..... 0 0100 1000 ..... @d_d_d 455 FPMERGE 10 ..... 110110 ..... 0 0100 1011 ..... @d_r_r 456 BSHUFFLE 10 ..... 110110 ..... 0 0100 1100 ..... @d_d_d 457 FEXPAND 10 ..... 110110 00000 0 0100 1101 ..... @d_r2 458 FALIGNDATAi 10 ..... 110110 ..... 0 0100 1001 ..... @d_r_d 459 460 FSRCd 10 ..... 110110 ..... 0 0111 0100 00000 @d_d1 # FSRC1d 461 FSRCs 10 ..... 110110 ..... 0 0111 0101 00000 @r_r1 # FSRC1s 462 FSRCd 10 ..... 110110 00000 0 0111 1000 ..... @d_d2 # FSRC2d 463 FSRCs 10 ..... 110110 00000 0 0111 1001 ..... @r_r2 # FSRC2s 464 FNOTd 10 ..... 110110 ..... 0 0110 1010 00000 @d_d1 # FNOT1d 465 FNOTs 10 ..... 110110 ..... 0 0110 1011 00000 @r_r1 # FNOT1s 466 FNOTd 10 ..... 110110 00000 0 0110 0110 ..... @d_d2 # FNOT2d 467 FNOTs 10 ..... 110110 00000 0 0110 0111 ..... @r_r2 # FNOT2s 468 469 FPADD16 10 ..... 110110 ..... 0 0101 0000 ..... @d_d_d 470 FPADD16s 10 ..... 110110 ..... 0 0101 0001 ..... @r_r_r 471 FPADD32 10 ..... 110110 ..... 0 0101 0010 ..... @d_d_d 472 FPADD32s 10 ..... 110110 ..... 0 0101 0011 ..... @r_r_r 473 FPADD64 10 ..... 110110 ..... 0 0100 0010 ..... @d_d_d 474 FPSUB16 10 ..... 110110 ..... 0 0101 0100 ..... @d_d_d 475 FPSUB16s 10 ..... 110110 ..... 0 0101 0101 ..... @r_r_r 476 FPSUB32 10 ..... 110110 ..... 0 0101 0110 ..... @d_d_d 477 FPSUB32s 10 ..... 110110 ..... 0 0101 0111 ..... @r_r_r 478 FPSUB64 10 ..... 110110 ..... 0 0100 0110 ..... @d_d_d 479 480 FPADDS16 10 ..... 110110 ..... 0 0101 1000 ..... @d_d_d 481 FPADDS16s 10 ..... 110110 ..... 0 0101 1001 ..... @r_r_r 482 FPADDS32 10 ..... 110110 ..... 0 0101 1010 ..... @d_d_d 483 FPADDS32s 10 ..... 110110 ..... 0 0101 1011 ..... @r_r_r 484 FPSUBS16 10 ..... 110110 ..... 0 0101 1100 ..... @d_d_d 485 FPSUBS16s 10 ..... 110110 ..... 0 0101 1101 ..... @r_r_r 486 FPSUBS32 10 ..... 110110 ..... 0 0101 1110 ..... @d_d_d 487 FPSUBS32s 10 ..... 110110 ..... 0 0101 1111 ..... @r_r_r 488 489 FNORd 10 ..... 110110 ..... 0 0110 0010 ..... @d_d_d 490 FNORs 10 ..... 110110 ..... 0 0110 0011 ..... @r_r_r 491 FANDNOTd 10 ..... 110110 ..... 0 0110 0100 ..... @d_d_d # FANDNOT2d 492 FANDNOTs 10 ..... 110110 ..... 0 0110 0101 ..... @r_r_r # FANDNOT2s 493 FANDNOTd 10 ..... 110110 ..... 0 0110 1000 ..... @d_d_d_swap # ... 1d 494 FANDNOTs 10 ..... 110110 ..... 0 0110 1001 ..... @r_r_r_swap # ... 1s 495 FXORd 10 ..... 110110 ..... 0 0110 1100 ..... @d_d_d 496 FXORs 10 ..... 110110 ..... 0 0110 1101 ..... @r_r_r 497 FNANDd 10 ..... 110110 ..... 0 0110 1110 ..... @d_d_d 498 FNANDs 10 ..... 110110 ..... 0 0110 1111 ..... @r_r_r 499 FANDd 10 ..... 110110 ..... 0 0111 0000 ..... @d_d_d 500 FANDs 10 ..... 110110 ..... 0 0111 0001 ..... @r_r_r 501 FXNORd 10 ..... 110110 ..... 0 0111 0010 ..... @d_d_d 502 FXNORs 10 ..... 110110 ..... 0 0111 0011 ..... @r_r_r 503 FORNOTd 10 ..... 110110 ..... 0 0111 0110 ..... @d_d_d # FORNOT2d 504 FORNOTs 10 ..... 110110 ..... 0 0111 0111 ..... @r_r_r # FORNOT2s 505 FORNOTd 10 ..... 110110 ..... 0 0111 1010 ..... @d_d_d_swap # ... 1d 506 FORNOTs 10 ..... 110110 ..... 0 0111 1011 ..... @r_r_r_swap # ... 1s 507 FORd 10 ..... 110110 ..... 0 0111 1100 ..... @d_d_d 508 FORs 10 ..... 110110 ..... 0 0111 1101 ..... @r_r_r 509 510 FZEROd 10 ..... 110110 00000 0 0110 0000 00000 rd=%dfp_rd 511 FZEROs 10 rd:5 110110 00000 0 0110 0001 00000 512 FONEd 10 ..... 110110 00000 0 0111 1110 00000 rd=%dfp_rd 513 FONEs 10 rd:5 110110 00000 0 0111 1111 00000 514 515 MOVsTOuw 10 ..... 110110 00000 1 0001 0001 ..... @r_r2 516 MOVsTOsw 10 ..... 110110 00000 1 0001 0011 ..... @r_r2 517 MOVwTOs 10 ..... 110110 00000 1 0001 1001 ..... @r_r2 518 MOVdTOx 10 ..... 110110 00000 1 0001 0000 ..... @r_d2 519 MOVxTOd 10 ..... 110110 00000 1 0001 1000 ..... @d_r2 520 521 FPADD8 10 ..... 110110 ..... 1 0010 0100 ..... @d_d_d 522 FPADDS8 10 ..... 110110 ..... 1 0010 0110 ..... @d_d_d 523 FPADDUS8 10 ..... 110110 ..... 1 0010 0111 ..... @d_d_d 524 FPADDUS16 10 ..... 110110 ..... 1 0010 0011 ..... @d_d_d 525 FPSUB8 10 ..... 110110 ..... 1 0101 0100 ..... @d_d_d 526 FPSUBS8 10 ..... 110110 ..... 1 0101 0110 ..... @d_d_d 527 FPSUBUS8 10 ..... 110110 ..... 1 0101 0111 ..... @d_d_d 528 FPSUBUS16 10 ..... 110110 ..... 1 0101 0011 ..... @d_d_d 529 530 FPMIN8 10 ..... 110110 ..... 1 0001 1010 ..... @d_d_d 531 FPMIN16 10 ..... 110110 ..... 1 0001 1011 ..... @d_d_d 532 FPMIN32 10 ..... 110110 ..... 1 0001 1100 ..... @d_d_d 533 FPMINU8 10 ..... 110110 ..... 1 0101 1010 ..... @d_d_d 534 FPMINU16 10 ..... 110110 ..... 1 0101 1011 ..... @d_d_d 535 FPMINU32 10 ..... 110110 ..... 1 0101 1100 ..... @d_d_d 536 537 FPMAX8 10 ..... 110110 ..... 1 0001 1101 ..... @d_d_d 538 FPMAX16 10 ..... 110110 ..... 1 0001 1110 ..... @d_d_d 539 FPMAX32 10 ..... 110110 ..... 1 0001 1111 ..... @d_d_d 540 FPMAXU8 10 ..... 110110 ..... 1 0101 1101 ..... @d_d_d 541 FPMAXU16 10 ..... 110110 ..... 1 0101 1110 ..... @d_d_d 542 FPMAXU32 10 ..... 110110 ..... 1 0101 1111 ..... @d_d_d 543 544 FLCMPs 10 000 cc:2 110110 rs1:5 1 0101 0001 rs2:5 545 FLCMPd 10 000 cc:2 110110 ..... 1 0101 0010 ..... \ 546 rs1=%dfp_rs1 rs2=%dfp_rs2 547 ] 548 NCP 10 ----- 110110 ----- --------- ----- # v8 CPop1 549} 550 551{ 552 [ 553 FMADDs 10 ..... 110111 ..... ..... 0001 ..... @r_r_r_r 554 FMADDd 10 ..... 110111 ..... ..... 0010 ..... @d_d_d_d 555 FMSUBs 10 ..... 110111 ..... ..... 0101 ..... @r_r_r_r 556 FMSUBd 10 ..... 110111 ..... ..... 0110 ..... @d_d_d_d 557 FNMSUBs 10 ..... 110111 ..... ..... 1001 ..... @r_r_r_r 558 FNMSUBd 10 ..... 110111 ..... ..... 1010 ..... @d_d_d_d 559 FNMADDs 10 ..... 110111 ..... ..... 1101 ..... @r_r_r_r 560 FNMADDd 10 ..... 110111 ..... ..... 1110 ..... @d_d_d_d 561 562 FPMADDX 10 ..... 110111 ..... ..... 0000 ..... @d_d_d_d 563 FPMADDXHI 10 ..... 110111 ..... ..... 0100 ..... @d_d_d_d 564 ] 565 NCP 10 ----- 110111 ----- --------- ----- # v8 CPop2 566} 567 568## 569## Major Opcode 11 -- load and store instructions 570## 571 572&r_r_ri_asi rd rs1 rs2_or_imm asi imm:bool 573@r_r_ri_na .. rd:5 ...... rs1:5 imm:1 rs2_or_imm:s13 &r_r_ri_asi asi=-1 574@d_r_ri_na .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13 \ 575 &r_r_ri_asi rd=%dfp_rd asi=-1 576@q_r_ri_na .. ..... ...... rs1:5 imm:1 rs2_or_imm:s13 \ 577 &r_r_ri_asi rd=%qfp_rd asi=-1 578 579@r_r_r_asi .. rd:5 ...... rs1:5 0 asi:8 rs2_or_imm:5 &r_r_ri_asi imm=0 580@r_r_i_asi .. rd:5 ...... rs1:5 1 rs2_or_imm:s13 \ 581 &r_r_ri_asi imm=1 asi=-2 582@d_r_r_asi .. ..... ...... rs1:5 0 asi:8 rs2_or_imm:5 \ 583 &r_r_ri_asi rd=%dfp_rd imm=0 584@d_r_i_asi .. ..... ...... rs1:5 1 rs2_or_imm:s13 \ 585 &r_r_ri_asi rd=%dfp_rd imm=1 asi=-2 586@q_r_r_asi .. ..... ...... rs1:5 0 asi:8 rs2_or_imm:5 \ 587 &r_r_ri_asi rd=%qfp_rd imm=0 588@q_r_i_asi .. ..... ...... rs1:5 1 rs2_or_imm:s13 \ 589 &r_r_ri_asi rd=%qfp_rd imm=1 asi=-2 590@casa_imm .. rd:5 ...... rs1:5 1 00000000 rs2_or_imm:5 \ 591 &r_r_ri_asi imm=1 asi=-2 592 593LDUW 11 ..... 000000 ..... . ............. @r_r_ri_na 594LDUB 11 ..... 000001 ..... . ............. @r_r_ri_na 595LDUH 11 ..... 000010 ..... . ............. @r_r_ri_na 596LDD 11 ..... 000011 ..... . ............. @r_r_ri_na 597LDSW 11 ..... 001000 ..... . ............. @r_r_ri_na 598LDSB 11 ..... 001001 ..... . ............. @r_r_ri_na 599LDSH 11 ..... 001010 ..... . ............. @r_r_ri_na 600LDX 11 ..... 001011 ..... . ............. @r_r_ri_na 601 602STW 11 ..... 000100 ..... . ............. @r_r_ri_na 603STB 11 ..... 000101 ..... . ............. @r_r_ri_na 604STH 11 ..... 000110 ..... . ............. @r_r_ri_na 605STD 11 ..... 000111 ..... . ............. @r_r_ri_na 606STX 11 ..... 001110 ..... . ............. @r_r_ri_na 607 608LDUW 11 ..... 010000 ..... . ............. @r_r_r_asi # LDUWA 609LDUW 11 ..... 010000 ..... . ............. @r_r_i_asi # LDUWA 610LDUB 11 ..... 010001 ..... . ............. @r_r_r_asi # LDUBA 611LDUB 11 ..... 010001 ..... . ............. @r_r_i_asi # LDUBA 612LDUH 11 ..... 010010 ..... . ............. @r_r_r_asi # LDUHA 613LDUH 11 ..... 010010 ..... . ............. @r_r_i_asi # LDUHA 614LDD 11 ..... 010011 ..... . ............. @r_r_r_asi # LDDA 615LDD 11 ..... 010011 ..... . ............. @r_r_i_asi # LDDA 616LDX 11 ..... 011011 ..... . ............. @r_r_r_asi # LDXA 617LDX 11 ..... 011011 ..... . ............. @r_r_i_asi # LDXA 618LDSB 11 ..... 011001 ..... . ............. @r_r_r_asi # LDSBA 619LDSB 11 ..... 011001 ..... . ............. @r_r_i_asi # LDSBA 620LDSH 11 ..... 011010 ..... . ............. @r_r_r_asi # LDSHA 621LDSH 11 ..... 011010 ..... . ............. @r_r_i_asi # LDSHA 622LDSW 11 ..... 011000 ..... . ............. @r_r_r_asi # LDSWA 623LDSW 11 ..... 011000 ..... . ............. @r_r_i_asi # LDSWA 624 625STW 11 ..... 010100 ..... . ............. @r_r_r_asi # STWA 626STW 11 ..... 010100 ..... . ............. @r_r_i_asi # STWA 627STB 11 ..... 010101 ..... . ............. @r_r_r_asi # STBA 628STB 11 ..... 010101 ..... . ............. @r_r_i_asi # STBA 629STH 11 ..... 010110 ..... . ............. @r_r_r_asi # STHA 630STH 11 ..... 010110 ..... . ............. @r_r_i_asi # STHA 631STD 11 ..... 010111 ..... . ............. @r_r_r_asi # STDA 632STD 11 ..... 010111 ..... . ............. @r_r_i_asi # STDA 633STX 11 ..... 011110 ..... . ............. @r_r_r_asi # STXA 634STX 11 ..... 011110 ..... . ............. @r_r_i_asi # STXA 635 636LDF 11 ..... 100000 ..... . ............. @r_r_ri_na 637LDFSR 11 00000 100001 ..... . ............. @n_r_ri 638LDXFSR 11 00001 100001 ..... . ............. @n_r_ri 639LDXEFSR 11 00011 100001 ..... . ............. @n_r_ri 640LDQF 11 ..... 100010 ..... . ............. @q_r_ri_na 641LDDF 11 ..... 100011 ..... . ............. @d_r_ri_na 642 643STF 11 ..... 100100 ..... . ............. @r_r_ri_na 644STFSR 11 00000 100101 ..... . ............. @n_r_ri 645STXFSR 11 00001 100101 ..... . ............. @n_r_ri 646{ 647 STQF 11 ..... 100110 ..... . ............. @q_r_ri_na # v9 648 STDFQ 11 ----- 100110 ----- - ------------- 649} 650STDF 11 ..... 100111 ..... . ............. @d_r_ri_na 651 652LDSTUB 11 ..... 001101 ..... . ............. @r_r_ri_na 653LDSTUB 11 ..... 011101 ..... . ............. @r_r_r_asi # LDSTUBA 654LDSTUB 11 ..... 011101 ..... . ............. @r_r_i_asi # LDSTUBA 655 656SWAP 11 ..... 001111 ..... . ............. @r_r_ri_na 657SWAP 11 ..... 011111 ..... . ............. @r_r_r_asi # SWAPA 658SWAP 11 ..... 011111 ..... . ............. @r_r_i_asi # SWAPA 659 660CASA 11 ..... 111100 ..... . ............. @r_r_r_asi 661CASA 11 ..... 111100 ..... . ............. @casa_imm 662CASXA 11 ..... 111110 ..... . ............. @r_r_r_asi 663CASXA 11 ..... 111110 ..... . ............. @casa_imm 664 665NOP_v9 11 ----- 101101 ----- 0 00000000 ----- # PREFETCH 666NOP_v9 11 ----- 101101 ----- 1 ------------- # PREFETCH 667NOP_v9 11 ----- 111101 ----- - ------------- # PREFETCHA 668 669{ 670 [ 671 LDFA 11 ..... 110000 ..... . ............. @r_r_r_asi 672 LDFA 11 ..... 110000 ..... . ............. @r_r_i_asi 673 ] 674 NCP 11 ----- 110000 ----- --------- ----- # v8 LDC 675} 676NCP 11 ----- 110001 ----- --------- ----- # v8 LDCSR 677LDQFA 11 ..... 110010 ..... . ............. @q_r_r_asi 678LDQFA 11 ..... 110010 ..... . ............. @q_r_i_asi 679{ 680 [ 681 LDDFA 11 ..... 110011 ..... . ............. @d_r_r_asi 682 LDDFA 11 ..... 110011 ..... . ............. @d_r_i_asi 683 ] 684 NCP 11 ----- 110011 ----- --------- ----- # v8 LDDC 685} 686 687{ 688 [ 689 STFA 11 ..... 110100 ..... . ............. @r_r_r_asi 690 STFA 11 ..... 110100 ..... . ............. @r_r_i_asi 691 ] 692 NCP 11 ----- 110100 ----- --------- ----- # v8 STC 693} 694NCP 11 ----- 110101 ----- --------- ----- # v8 STCSR 695{ 696 [ 697 STQFA 11 ..... 110110 ..... . ............. @q_r_r_asi 698 STQFA 11 ..... 110110 ..... . ............. @q_r_i_asi 699 ] 700 NCP 11 ----- 110110 ----- --------- ----- # v8 STDCQ 701} 702{ 703 [ 704 STDFA 11 ..... 110111 ..... . ............. @d_r_r_asi 705 STDFA 11 ..... 110111 ..... . ............. @d_r_i_asi 706 ] 707 NCP 11 ----- 110111 ----- --------- ----- # v8 STDC 708} 709