1 # MIPS SIMD Architecture Module instruction set
3 # Copyright (C) 2020 Philippe Mathieu-Daudé
5 # SPDX-License-Identifier: LGPL-2.1-or-later
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)
21 &msa_elm_df df wd ws n
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
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
51 LSA 000000 ..... ..... ..... 000 .. 000101 @lsa
52 DLSA 000000 ..... ..... ..... 000 .. 010101 @lsa
54 BZ_V 010001 01011 ..... ................ @bz_v
55 BNZ_V 010001 01111 ..... ................ @bz_v
56 BZ 010001 110 .. ..... ................ @bz
57 BNZ 010001 111 .. ..... ................ @bz
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
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
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
81 LDI 011110 110 .. .......... ..... 000111 @ldi
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
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
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
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
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
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
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
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
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
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
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
170 CTCMSA 011110 0000111110 ..... ..... 011001 @elm
171 SLDI 011110 0000 ...... ..... ..... 011001 @elm_df
174 CFCMSA 011110 0001111110 ..... ..... 011001 @elm
175 SPLATI 011110 0001 ...... ..... ..... 011001 @elm_df
178 MOVE_V 011110 0010111110 ..... ..... 011001 @elm
179 COPY_S 011110 0010 ...... ..... ..... 011001 @elm_df
181 COPY_U 011110 0011 ...... ..... ..... 011001 @elm_df
182 INSERT 011110 0100 ...... ..... ..... 011001 @elm_df
183 INSVE 011110 0101 ...... ..... ..... 011001 @elm_df
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
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
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
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
257 LD 011110 .......... ..... ..... 1000 .. @ldst
258 ST 011110 .......... ..... ..... 1001 .. @ldst