msa.decode (14091B)
1 # MIPS SIMD Architecture Module instruction set 2 # 3 # Copyright (C) 2020 Philippe Mathieu-Daudé 4 # 5 # SPDX-License-Identifier: LGPL-2.1-or-later 6 # 7 # Reference: 8 # MIPS Architecture for Programmers Volume IV-j 9 # - The MIPS32 SIMD Architecture Module, Revision 1.12 10 # (Document Number: MD00866-2B-MSA32-AFP-01.12) 11 # - The MIPS64 SIMD Architecture Module, Revision 1.12 12 # (Document Number: MD00868-1D-MSA64-AFP-01.12) 13 14 &r rs rt rd sa 15 16 &msa_r df wd ws wt 17 &msa_bz df wt sa 18 &msa_ldi df wd sa 19 &msa_i df wd ws sa 20 &msa_bit df wd ws m 21 &msa_elm_df df wd ws n 22 &msa_elm wd ws 23 24 %elm_df 16:6 !function=elm_df 25 %elm_n 16:6 !function=elm_n 26 %bit_df 16:7 !function=bit_df 27 %bit_m 16:7 !function=bit_m 28 %2r_df_w 16:1 !function=plus_2 29 %3r_df_h 21:1 !function=plus_1 30 %3r_df_w 21:1 !function=plus_2 31 32 @lsa ...... rs:5 rt:5 rd:5 ... sa:2 ...... &r 33 @ldst ...... sa:s10 ws:5 wd:5 .... df:2 &msa_i 34 @bz_v ...... ... .. wt:5 sa:16 &msa_bz df=3 35 @bz ...... ... df:2 wt:5 sa:16 &msa_bz 36 @elm_df ...... .... ...... ws:5 wd:5 ...... &msa_elm_df df=%elm_df n=%elm_n 37 @elm ...... .......... ws:5 wd:5 ...... &msa_elm 38 @vec ...... ..... wt:5 ws:5 wd:5 ...... &msa_r df=0 39 @2r ...... ........ df:2 ws:5 wd:5 ...... &msa_r wt=0 40 @2rf ...... ......... . ws:5 wd:5 ...... &msa_r wt=0 df=%2r_df_w 41 @3r ...... ... df:2 wt:5 ws:5 wd:5 ...... &msa_r 42 @3rf_h ...... .... . wt:5 ws:5 wd:5 ...... &msa_r df=%3r_df_h 43 @3rf_w ...... .... . wt:5 ws:5 wd:5 ...... &msa_r df=%3r_df_w 44 @u5 ...... ... df:2 sa:5 ws:5 wd:5 ...... &msa_i 45 @s5 ...... ... df:2 sa:s5 ws:5 wd:5 ...... &msa_i 46 @i8_df ...... df:2 sa:s8 ws:5 wd:5 ...... &msa_i 47 @i8 ...... .. sa:s8 ws:5 wd:5 ...... &msa_i df=0 48 @ldi ...... ... df:2 sa:s10 wd:5 ...... &msa_ldi 49 @bit ...... ... ....... ws:5 wd:5 ...... &msa_bit df=%bit_df m=%bit_m 50 51 LSA 000000 ..... ..... ..... 000 .. 000101 @lsa 52 DLSA 000000 ..... ..... ..... 000 .. 010101 @lsa 53 54 BZ_V 010001 01011 ..... ................ @bz_v 55 BNZ_V 010001 01111 ..... ................ @bz_v 56 BZ 010001 110 .. ..... ................ @bz 57 BNZ 010001 111 .. ..... ................ @bz 58 59 ANDI 011110 00 ........ ..... ..... 000000 @i8 60 ORI 011110 01 ........ ..... ..... 000000 @i8 61 NORI 011110 10 ........ ..... ..... 000000 @i8 62 XORI 011110 11 ........ ..... ..... 000000 @i8 63 BMNZI 011110 00 ........ ..... ..... 000001 @i8 64 BMZI 011110 01 ........ ..... ..... 000001 @i8 65 BSELI 011110 10 ........ ..... ..... 000001 @i8 66 SHF 011110 .. ........ ..... ..... 000010 @i8_df 67 68 ADDVI 011110 000 .. ..... ..... ..... 000110 @u5 69 SUBVI 011110 001 .. ..... ..... ..... 000110 @u5 70 MAXI_S 011110 010 .. ..... ..... ..... 000110 @s5 71 MAXI_U 011110 011 .. ..... ..... ..... 000110 @u5 72 MINI_S 011110 100 .. ..... ..... ..... 000110 @s5 73 MINI_U 011110 101 .. ..... ..... ..... 000110 @u5 74 75 CEQI 011110 000 .. ..... ..... ..... 000111 @s5 76 CLTI_S 011110 010 .. ..... ..... ..... 000111 @s5 77 CLTI_U 011110 011 .. ..... ..... ..... 000111 @u5 78 CLEI_S 011110 100 .. ..... ..... ..... 000111 @s5 79 CLEI_U 011110 101 .. ..... ..... ..... 000111 @u5 80 81 LDI 011110 110 .. .......... ..... 000111 @ldi 82 83 SLLI 011110 000 ....... ..... ..... 001001 @bit 84 SRAI 011110 001 ....... ..... ..... 001001 @bit 85 SRLI 011110 010 ....... ..... ..... 001001 @bit 86 BCLRI 011110 011 ....... ..... ..... 001001 @bit 87 BSETI 011110 100 ....... ..... ..... 001001 @bit 88 BNEGI 011110 101 ....... ..... ..... 001001 @bit 89 BINSLI 011110 110 ....... ..... ..... 001001 @bit 90 BINSRI 011110 111 ....... ..... ..... 001001 @bit 91 92 SAT_S 011110 000 ....... ..... ..... 001010 @bit 93 SAT_U 011110 001 ....... ..... ..... 001010 @bit 94 SRARI 011110 010 ....... ..... ..... 001010 @bit 95 SRLRI 011110 011 ....... ..... ..... 001010 @bit 96 97 SLL 011110 000.. ..... ..... ..... 001101 @3r 98 SRA 011110 001.. ..... ..... ..... 001101 @3r 99 SRL 011110 010.. ..... ..... ..... 001101 @3r 100 BCLR 011110 011.. ..... ..... ..... 001101 @3r 101 BSET 011110 100.. ..... ..... ..... 001101 @3r 102 BNEG 011110 101.. ..... ..... ..... 001101 @3r 103 BINSL 011110 110.. ..... ..... ..... 001101 @3r 104 BINSR 011110 111.. ..... ..... ..... 001101 @3r 105 106 ADDV 011110 000.. ..... ..... ..... 001110 @3r 107 SUBV 011110 001.. ..... ..... ..... 001110 @3r 108 MAX_S 011110 010.. ..... ..... ..... 001110 @3r 109 MAX_U 011110 011.. ..... ..... ..... 001110 @3r 110 MIN_S 011110 100.. ..... ..... ..... 001110 @3r 111 MIN_U 011110 101.. ..... ..... ..... 001110 @3r 112 MAX_A 011110 110.. ..... ..... ..... 001110 @3r 113 MIN_A 011110 111.. ..... ..... ..... 001110 @3r 114 115 CEQ 011110 000.. ..... ..... ..... 001111 @3r 116 CLT_S 011110 010.. ..... ..... ..... 001111 @3r 117 CLT_U 011110 011.. ..... ..... ..... 001111 @3r 118 CLE_S 011110 100.. ..... ..... ..... 001111 @3r 119 CLE_U 011110 101.. ..... ..... ..... 001111 @3r 120 121 ADD_A 011110 000.. ..... ..... ..... 010000 @3r 122 ADDS_A 011110 001.. ..... ..... ..... 010000 @3r 123 ADDS_S 011110 010.. ..... ..... ..... 010000 @3r 124 ADDS_U 011110 011.. ..... ..... ..... 010000 @3r 125 AVE_S 011110 100.. ..... ..... ..... 010000 @3r 126 AVE_U 011110 101.. ..... ..... ..... 010000 @3r 127 AVER_S 011110 110.. ..... ..... ..... 010000 @3r 128 AVER_U 011110 111.. ..... ..... ..... 010000 @3r 129 130 SUBS_S 011110 000.. ..... ..... ..... 010001 @3r 131 SUBS_U 011110 001.. ..... ..... ..... 010001 @3r 132 SUBSUS_U 011110 010.. ..... ..... ..... 010001 @3r 133 SUBSUU_S 011110 011.. ..... ..... ..... 010001 @3r 134 ASUB_S 011110 100.. ..... ..... ..... 010001 @3r 135 ASUB_U 011110 101.. ..... ..... ..... 010001 @3r 136 137 MULV 011110 000.. ..... ..... ..... 010010 @3r 138 MADDV 011110 001.. ..... ..... ..... 010010 @3r 139 MSUBV 011110 010.. ..... ..... ..... 010010 @3r 140 DIV_S 011110 100.. ..... ..... ..... 010010 @3r 141 DIV_U 011110 101.. ..... ..... ..... 010010 @3r 142 MOD_S 011110 110.. ..... ..... ..... 010010 @3r 143 MOD_U 011110 111.. ..... ..... ..... 010010 @3r 144 145 DOTP_S 011110 000.. ..... ..... ..... 010011 @3r 146 DOTP_U 011110 001.. ..... ..... ..... 010011 @3r 147 DPADD_S 011110 010.. ..... ..... ..... 010011 @3r 148 DPADD_U 011110 011.. ..... ..... ..... 010011 @3r 149 DPSUB_S 011110 100.. ..... ..... ..... 010011 @3r 150 DPSUB_U 011110 101.. ..... ..... ..... 010011 @3r 151 152 SLD 011110 000 .. ..... ..... ..... 010100 @3r 153 SPLAT 011110 001 .. ..... ..... ..... 010100 @3r 154 PCKEV 011110 010 .. ..... ..... ..... 010100 @3r 155 PCKOD 011110 011 .. ..... ..... ..... 010100 @3r 156 ILVL 011110 100 .. ..... ..... ..... 010100 @3r 157 ILVR 011110 101 .. ..... ..... ..... 010100 @3r 158 ILVEV 011110 110 .. ..... ..... ..... 010100 @3r 159 ILVOD 011110 111 .. ..... ..... ..... 010100 @3r 160 161 VSHF 011110 000 .. ..... ..... ..... 010101 @3r 162 SRAR 011110 001 .. ..... ..... ..... 010101 @3r 163 SRLR 011110 010 .. ..... ..... ..... 010101 @3r 164 HADD_S 011110 100.. ..... ..... ..... 010101 @3r 165 HADD_U 011110 101.. ..... ..... ..... 010101 @3r 166 HSUB_S 011110 110.. ..... ..... ..... 010101 @3r 167 HSUB_U 011110 111.. ..... ..... ..... 010101 @3r 168 169 { 170 CTCMSA 011110 0000111110 ..... ..... 011001 @elm 171 SLDI 011110 0000 ...... ..... ..... 011001 @elm_df 172 } 173 { 174 CFCMSA 011110 0001111110 ..... ..... 011001 @elm 175 SPLATI 011110 0001 ...... ..... ..... 011001 @elm_df 176 } 177 { 178 MOVE_V 011110 0010111110 ..... ..... 011001 @elm 179 COPY_S 011110 0010 ...... ..... ..... 011001 @elm_df 180 } 181 COPY_U 011110 0011 ...... ..... ..... 011001 @elm_df 182 INSERT 011110 0100 ...... ..... ..... 011001 @elm_df 183 INSVE 011110 0101 ...... ..... ..... 011001 @elm_df 184 185 FCAF 011110 0000 . ..... ..... ..... 011010 @3rf_w 186 FCUN 011110 0001 . ..... ..... ..... 011010 @3rf_w 187 FCEQ 011110 0010 . ..... ..... ..... 011010 @3rf_w 188 FCUEQ 011110 0011 . ..... ..... ..... 011010 @3rf_w 189 FCLT 011110 0100 . ..... ..... ..... 011010 @3rf_w 190 FCULT 011110 0101 . ..... ..... ..... 011010 @3rf_w 191 FCLE 011110 0110 . ..... ..... ..... 011010 @3rf_w 192 FCULE 011110 0111 . ..... ..... ..... 011010 @3rf_w 193 FSAF 011110 1000 . ..... ..... ..... 011010 @3rf_w 194 FSUN 011110 1001 . ..... ..... ..... 011010 @3rf_w 195 FSEQ 011110 1010 . ..... ..... ..... 011010 @3rf_w 196 FSUEQ 011110 1011 . ..... ..... ..... 011010 @3rf_w 197 FSLT 011110 1100 . ..... ..... ..... 011010 @3rf_w 198 FSULT 011110 1101 . ..... ..... ..... 011010 @3rf_w 199 FSLE 011110 1110 . ..... ..... ..... 011010 @3rf_w 200 FSULE 011110 1111 . ..... ..... ..... 011010 @3rf_w 201 202 FADD 011110 0000 . ..... ..... ..... 011011 @3rf_w 203 FSUB 011110 0001 . ..... ..... ..... 011011 @3rf_w 204 FMUL 011110 0010 . ..... ..... ..... 011011 @3rf_w 205 FDIV 011110 0011 . ..... ..... ..... 011011 @3rf_w 206 FMADD 011110 0100 . ..... ..... ..... 011011 @3rf_w 207 FMSUB 011110 0101 . ..... ..... ..... 011011 @3rf_w 208 FEXP2 011110 0111 . ..... ..... ..... 011011 @3rf_w 209 FEXDO 011110 1000 . ..... ..... ..... 011011 @3rf_w 210 FTQ 011110 1010 . ..... ..... ..... 011011 @3rf_w 211 FMIN 011110 1100 . ..... ..... ..... 011011 @3rf_w 212 FMIN_A 011110 1101 . ..... ..... ..... 011011 @3rf_w 213 FMAX 011110 1110 . ..... ..... ..... 011011 @3rf_w 214 FMAX_A 011110 1111 . ..... ..... ..... 011011 @3rf_w 215 216 FCOR 011110 0001 . ..... ..... ..... 011100 @3rf_w 217 FCUNE 011110 0010 . ..... ..... ..... 011100 @3rf_w 218 FCNE 011110 0011 . ..... ..... ..... 011100 @3rf_w 219 MUL_Q 011110 0100 . ..... ..... ..... 011100 @3rf_h 220 MADD_Q 011110 0101 . ..... ..... ..... 011100 @3rf_h 221 MSUB_Q 011110 0110 . ..... ..... ..... 011100 @3rf_h 222 FSOR 011110 1001 . ..... ..... ..... 011100 @3rf_w 223 FSUNE 011110 1010 . ..... ..... ..... 011100 @3rf_w 224 FSNE 011110 1011 . ..... ..... ..... 011100 @3rf_w 225 MULR_Q 011110 1100 . ..... ..... ..... 011100 @3rf_h 226 MADDR_Q 011110 1101 . ..... ..... ..... 011100 @3rf_h 227 MSUBR_Q 011110 1110 . ..... ..... ..... 011100 @3rf_h 228 229 AND_V 011110 00000 ..... ..... ..... 011110 @vec 230 OR_V 011110 00001 ..... ..... ..... 011110 @vec 231 NOR_V 011110 00010 ..... ..... ..... 011110 @vec 232 XOR_V 011110 00011 ..... ..... ..... 011110 @vec 233 BMNZ_V 011110 00100 ..... ..... ..... 011110 @vec 234 BMZ_V 011110 00101 ..... ..... ..... 011110 @vec 235 BSEL_V 011110 00110 ..... ..... ..... 011110 @vec 236 FILL 011110 11000000 .. ..... ..... 011110 @2r 237 PCNT 011110 11000001 .. ..... ..... 011110 @2r 238 NLOC 011110 11000010 .. ..... ..... 011110 @2r 239 NLZC 011110 11000011 .. ..... ..... 011110 @2r 240 FCLASS 011110 110010000 . ..... ..... 011110 @2rf 241 FTRUNC_S 011110 110010001 . ..... ..... 011110 @2rf 242 FTRUNC_U 011110 110010010 . ..... ..... 011110 @2rf 243 FSQRT 011110 110010011 . ..... ..... 011110 @2rf 244 FRSQRT 011110 110010100 . ..... ..... 011110 @2rf 245 FRCP 011110 110010101 . ..... ..... 011110 @2rf 246 FRINT 011110 110010110 . ..... ..... 011110 @2rf 247 FLOG2 011110 110010111 . ..... ..... 011110 @2rf 248 FEXUPL 011110 110011000 . ..... ..... 011110 @2rf 249 FEXUPR 011110 110011001 . ..... ..... 011110 @2rf 250 FFQL 011110 110011010 . ..... ..... 011110 @2rf 251 FFQR 011110 110011011 . ..... ..... 011110 @2rf 252 FTINT_S 011110 110011100 . ..... ..... 011110 @2rf 253 FTINT_U 011110 110011101 . ..... ..... 011110 @2rf 254 FFINT_S 011110 110011110 . ..... ..... 011110 @2rf 255 FFINT_U 011110 110011111 . ..... ..... 011110 @2rf 256 257 LD 011110 .......... ..... ..... 1000 .. @ldst 258 ST 011110 .......... ..... ..... 1001 .. @ldst