1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#ifndef WRAPPERS_MSA_H
23#define WRAPPERS_MSA_H
24
25
26#define RESET_MSA_REGISTER(wi) \
27 __asm__ volatile ( \
28 "xor.v $" #wi ", $" #wi ", $" #wi "\n\t" \
29 : \
30 : \
31 : \
32 )
33
34
35static inline void reset_msa_registers()
36{
37
38 RESET_MSA_REGISTER(w0);
39 RESET_MSA_REGISTER(w1);
40 RESET_MSA_REGISTER(w2);
41 RESET_MSA_REGISTER(w3);
42 RESET_MSA_REGISTER(w4);
43 RESET_MSA_REGISTER(w5);
44 RESET_MSA_REGISTER(w6);
45 RESET_MSA_REGISTER(w7);
46 RESET_MSA_REGISTER(w8);
47 RESET_MSA_REGISTER(w9);
48 RESET_MSA_REGISTER(w10);
49 RESET_MSA_REGISTER(w11);
50 RESET_MSA_REGISTER(w12);
51 RESET_MSA_REGISTER(w13);
52 RESET_MSA_REGISTER(w14);
53 RESET_MSA_REGISTER(w15);
54 RESET_MSA_REGISTER(w16);
55 RESET_MSA_REGISTER(w17);
56 RESET_MSA_REGISTER(w18);
57 RESET_MSA_REGISTER(w19);
58 RESET_MSA_REGISTER(w20);
59 RESET_MSA_REGISTER(w21);
60 RESET_MSA_REGISTER(w22);
61 RESET_MSA_REGISTER(w23);
62 RESET_MSA_REGISTER(w24);
63 RESET_MSA_REGISTER(w25);
64 RESET_MSA_REGISTER(w26);
65 RESET_MSA_REGISTER(w27);
66 RESET_MSA_REGISTER(w28);
67 RESET_MSA_REGISTER(w29);
68 RESET_MSA_REGISTER(w30);
69 RESET_MSA_REGISTER(w31);
70
71}
72
73
74#define DO_MSA__WD__WS(suffix, mnemonic) \
75static inline void do_msa_##suffix(const void *input, \
76 const void *output) \
77{ \
78 __asm__ volatile ( \
79 "move $t0, %0\n\t" \
80 "ld.d $w11, 0($t0)\n\t" \
81 #mnemonic " $w10, $w11\n\t" \
82 "move $t0, %1\n\t" \
83 "st.d $w10, 0($t0)\n\t" \
84 : \
85 : "r" (input), "r" (output) \
86 : "t0", "memory" \
87 ); \
88}
89
90#define DO_MSA__WD__WD(suffix, mnemonic) \
91static inline void do_msa_##suffix(const void *input, \
92 const void *output) \
93{ \
94 __asm__ volatile ( \
95 "move $t0, %0\n\t" \
96 "ld.d $w11, 0($t0)\n\t" \
97 #mnemonic " $w10, $w10\n\t" \
98 "move $t0, %1\n\t" \
99 "st.d $w10, 0($t0)\n\t" \
100 : \
101 : "r" (input), "r" (output) \
102 : "t0", "memory" \
103 ); \
104}
105
106
107#define DO_MSA__WD__WS_WT(suffix, mnemonic) \
108static inline void do_msa_##suffix(const void *input1, \
109 const void *input2, \
110 const void *output) \
111{ \
112 __asm__ volatile ( \
113 "move $t0, %0\n\t" \
114 "ld.d $w11, 0($t0)\n\t" \
115 "move $t0, %1\n\t" \
116 "ld.d $w12, 0($t0)\n\t" \
117 #mnemonic " $w10, $w11, $w12\n\t" \
118 "move $t0, %2\n\t" \
119 "st.d $w10, 0($t0)\n\t" \
120 : \
121 : "r" (input1), "r" (input2), "r" (output) \
122 : "t0", "memory" \
123 ); \
124}
125
126#define DO_MSA__WD__WD_WT(suffix, mnemonic) \
127static inline void do_msa_##suffix(const void *input1, \
128 const void *input2, \
129 const void *output) \
130{ \
131 __asm__ volatile ( \
132 "move $t0, %0\n\t" \
133 "ld.d $w11, 0($t0)\n\t" \
134 "move $t0, %1\n\t" \
135 "ld.d $w12, 0($t0)\n\t" \
136 #mnemonic " $w10, $w10, $w12\n\t" \
137 "move $t0, %2\n\t" \
138 "st.d $w10, 0($t0)\n\t" \
139 : \
140 : "r" (input1), "r" (input2), "r" (output) \
141 : "t0", "memory" \
142 ); \
143}
144
145#define DO_MSA__WD__WS_WD(suffix, mnemonic) \
146static inline void do_msa_##suffix(const void *input1, \
147 const void *input2, \
148 const void *output) \
149{ \
150 __asm__ volatile ( \
151 "move $t0, %0\n\t" \
152 "ld.d $w11, 0($t0)\n\t" \
153 "move $t0, %1\n\t" \
154 "ld.d $w12, 0($t0)\n\t" \
155 #mnemonic " $w10, $w11, $w10\n\t" \
156 "move $t0, %2\n\t" \
157 "st.d $w10, 0($t0)\n\t" \
158 : \
159 : "r" (input1), "r" (input2), "r" (output) \
160 : "t0", "memory" \
161 ); \
162}
163
164
165
166
167
168
169
170DO_MSA__WD__WS(NLOC_B, nloc.b)
171DO_MSA__WD__WS(NLOC_H, nloc.h)
172DO_MSA__WD__WS(NLOC_W, nloc.w)
173DO_MSA__WD__WS(NLOC_D, nloc.d)
174
175DO_MSA__WD__WS(NLZC_B, nlzc.b)
176DO_MSA__WD__WS(NLZC_H, nlzc.h)
177DO_MSA__WD__WS(NLZC_W, nlzc.w)
178DO_MSA__WD__WS(NLZC_D, nlzc.d)
179
180DO_MSA__WD__WS(PCNT_B, pcnt.b)
181DO_MSA__WD__WS(PCNT_H, pcnt.h)
182DO_MSA__WD__WS(PCNT_W, pcnt.w)
183DO_MSA__WD__WS(PCNT_D, pcnt.d)
184
185
186
187
188
189
190
191DO_MSA__WD__WS_WT(BINSL_B, binsl.b)
192DO_MSA__WD__WD_WT(BINSL_B__DDT, binsl.b)
193DO_MSA__WD__WS_WD(BINSL_B__DSD, binsl.b)
194DO_MSA__WD__WS_WT(BINSL_H, binsl.h)
195DO_MSA__WD__WD_WT(BINSL_H__DDT, binsl.h)
196DO_MSA__WD__WS_WD(BINSL_H__DSD, binsl.h)
197DO_MSA__WD__WS_WT(BINSL_W, binsl.w)
198DO_MSA__WD__WD_WT(BINSL_W__DDT, binsl.w)
199DO_MSA__WD__WS_WD(BINSL_W__DSD, binsl.w)
200DO_MSA__WD__WS_WT(BINSL_D, binsl.d)
201DO_MSA__WD__WD_WT(BINSL_D__DDT, binsl.d)
202DO_MSA__WD__WS_WD(BINSL_D__DSD, binsl.d)
203
204DO_MSA__WD__WS_WT(BINSR_B, binsr.b)
205DO_MSA__WD__WD_WT(BINSR_B__DDT, binsr.b)
206DO_MSA__WD__WS_WD(BINSR_B__DSD, binsr.b)
207DO_MSA__WD__WS_WT(BINSR_H, binsr.h)
208DO_MSA__WD__WD_WT(BINSR_H__DDT, binsr.h)
209DO_MSA__WD__WS_WD(BINSR_H__DSD, binsr.h)
210DO_MSA__WD__WS_WT(BINSR_W, binsr.w)
211DO_MSA__WD__WD_WT(BINSR_W__DDT, binsr.w)
212DO_MSA__WD__WS_WD(BINSR_W__DSD, binsr.w)
213DO_MSA__WD__WS_WT(BINSR_D, binsr.d)
214DO_MSA__WD__WD_WT(BINSR_D__DDT, binsr.d)
215DO_MSA__WD__WS_WD(BINSR_D__DSD, binsr.d)
216
217DO_MSA__WD__WS_WT(BMNZ_V, bmnz.v)
218DO_MSA__WD__WD_WT(BMNZ_V__DDT, bmnz.v)
219DO_MSA__WD__WS_WD(BMNZ_V__DSD, bmnz.v)
220DO_MSA__WD__WS_WT(BMZ_V, bmz.v)
221DO_MSA__WD__WD_WT(BMZ_V__DDT, bmz.v)
222DO_MSA__WD__WS_WD(BMZ_V__DSD, bmz.v)
223DO_MSA__WD__WS_WT(BSEL_V, bsel.v)
224DO_MSA__WD__WD_WT(BSEL_V__DDT, bsel.v)
225DO_MSA__WD__WS_WD(BSEL_V__DSD, bsel.v)
226
227
228
229
230
231
232
233DO_MSA__WD__WS_WT(BCLR_B, bclr.b)
234DO_MSA__WD__WS_WT(BCLR_H, bclr.h)
235DO_MSA__WD__WS_WT(BCLR_W, bclr.w)
236DO_MSA__WD__WS_WT(BCLR_D, bclr.d)
237
238DO_MSA__WD__WS_WT(BSET_B, bset.b)
239DO_MSA__WD__WS_WT(BSET_H, bset.h)
240DO_MSA__WD__WS_WT(BSET_W, bset.w)
241DO_MSA__WD__WS_WT(BSET_D, bset.d)
242
243DO_MSA__WD__WS_WT(BNEG_B, bneg.b)
244DO_MSA__WD__WS_WT(BNEG_H, bneg.h)
245DO_MSA__WD__WS_WT(BNEG_W, bneg.w)
246DO_MSA__WD__WS_WT(BNEG_D, bneg.d)
247
248
249
250
251
252
253
254DO_MSA__WD__WS_WT(MADD_Q_H, madd_q.h)
255DO_MSA__WD__WD_WT(MADD_Q_H__DDT, madd_q.h)
256DO_MSA__WD__WS_WD(MADD_Q_H__DSD, madd_q.h)
257DO_MSA__WD__WS_WT(MADD_Q_W, madd_q.w)
258DO_MSA__WD__WD_WT(MADD_Q_W__DDT, madd_q.w)
259DO_MSA__WD__WS_WD(MADD_Q_W__DSD, madd_q.w)
260
261DO_MSA__WD__WS_WT(MADDR_Q_H, maddr_q.h)
262DO_MSA__WD__WD_WT(MADDR_Q_H__DDT, maddr_q.h)
263DO_MSA__WD__WS_WD(MADDR_Q_H__DSD, maddr_q.h)
264DO_MSA__WD__WS_WT(MADDR_Q_W, maddr_q.w)
265DO_MSA__WD__WD_WT(MADDR_Q_W__DDT, maddr_q.w)
266DO_MSA__WD__WS_WD(MADDR_Q_W__DSD, maddr_q.w)
267
268DO_MSA__WD__WS_WT(MSUB_Q_H, msub_q.h)
269DO_MSA__WD__WD_WT(MSUB_Q_H__DDT, msub_q.h)
270DO_MSA__WD__WS_WD(MSUB_Q_H__DSD, msub_q.h)
271DO_MSA__WD__WS_WT(MSUB_Q_W, msub_q.w)
272DO_MSA__WD__WD_WT(MSUB_Q_W__DDT, msub_q.w)
273DO_MSA__WD__WS_WD(MSUB_Q_W__DSD, msub_q.w)
274
275DO_MSA__WD__WS_WT(MSUBR_Q_H, msubr_q.h)
276DO_MSA__WD__WD_WT(MSUBR_Q_H__DDT, msubr_q.h)
277DO_MSA__WD__WS_WD(MSUBR_Q_H__DSD, msubr_q.h)
278DO_MSA__WD__WS_WT(MSUBR_Q_W, msubr_q.w)
279DO_MSA__WD__WD_WT(MSUBR_Q_W__DDT, msubr_q.w)
280DO_MSA__WD__WS_WD(MSUBR_Q_W__DSD, msubr_q.w)
281
282DO_MSA__WD__WS_WT(MUL_Q_H, mul_q.h)
283DO_MSA__WD__WS_WT(MUL_Q_W, mul_q.w)
284
285DO_MSA__WD__WS_WT(MULR_Q_H, mulr_q.h)
286DO_MSA__WD__WS_WT(MULR_Q_W, mulr_q.w)
287
288
289
290
291
292
293
294DO_MSA__WD__WS_WT(FMAX_W, fmax.w)
295DO_MSA__WD__WS_WT(FMAX_D, fmax.d)
296
297DO_MSA__WD__WS_WT(FMAX_A_W, fmax_a.w)
298DO_MSA__WD__WS_WT(FMAX_A_D, fmax_a.d)
299
300DO_MSA__WD__WS_WT(FMIN_W, fmin.w)
301DO_MSA__WD__WS_WT(FMIN_D, fmin.d)
302
303DO_MSA__WD__WS_WT(FMIN_A_W, fmin_a.w)
304DO_MSA__WD__WS_WT(FMIN_A_D, fmin_a.d)
305
306
307
308
309
310
311
312DO_MSA__WD__WS_WT(ADD_A_B, add_a.b)
313DO_MSA__WD__WS_WT(ADD_A_H, add_a.h)
314DO_MSA__WD__WS_WT(ADD_A_W, add_a.w)
315DO_MSA__WD__WS_WT(ADD_A_D, add_a.d)
316
317DO_MSA__WD__WS_WT(ADDS_A_B, adds_a.b)
318DO_MSA__WD__WS_WT(ADDS_A_H, adds_a.h)
319DO_MSA__WD__WS_WT(ADDS_A_W, adds_a.w)
320DO_MSA__WD__WS_WT(ADDS_A_D, adds_a.d)
321
322DO_MSA__WD__WS_WT(ADDS_S_B, adds_s.b)
323DO_MSA__WD__WS_WT(ADDS_S_H, adds_s.h)
324DO_MSA__WD__WS_WT(ADDS_S_W, adds_s.w)
325DO_MSA__WD__WS_WT(ADDS_S_D, adds_s.d)
326
327DO_MSA__WD__WS_WT(ADDS_U_B, adds_u.b)
328DO_MSA__WD__WS_WT(ADDS_U_H, adds_u.h)
329DO_MSA__WD__WS_WT(ADDS_U_W, adds_u.w)
330DO_MSA__WD__WS_WT(ADDS_U_D, adds_u.d)
331
332DO_MSA__WD__WS_WT(ADDV_B, addv.b)
333DO_MSA__WD__WS_WT(ADDV_H, addv.h)
334DO_MSA__WD__WS_WT(ADDV_W, addv.w)
335DO_MSA__WD__WS_WT(ADDV_D, addv.d)
336
337DO_MSA__WD__WS_WT(HADD_S_H, hadd_s.h)
338DO_MSA__WD__WS_WT(HADD_S_W, hadd_s.w)
339DO_MSA__WD__WS_WT(HADD_S_D, hadd_s.d)
340
341DO_MSA__WD__WS_WT(HADD_U_H, hadd_u.h)
342DO_MSA__WD__WS_WT(HADD_U_W, hadd_u.w)
343DO_MSA__WD__WS_WT(HADD_U_D, hadd_u.d)
344
345
346
347
348
349
350
351DO_MSA__WD__WS_WT(AVE_S_B, ave_s.b)
352DO_MSA__WD__WS_WT(AVE_S_H, ave_s.h)
353DO_MSA__WD__WS_WT(AVE_S_W, ave_s.w)
354DO_MSA__WD__WS_WT(AVE_S_D, ave_s.d)
355
356DO_MSA__WD__WS_WT(AVE_U_B, ave_u.b)
357DO_MSA__WD__WS_WT(AVE_U_H, ave_u.h)
358DO_MSA__WD__WS_WT(AVE_U_W, ave_u.w)
359DO_MSA__WD__WS_WT(AVE_U_D, ave_u.d)
360
361DO_MSA__WD__WS_WT(AVER_S_B, aver_s.b)
362DO_MSA__WD__WS_WT(AVER_S_H, aver_s.h)
363DO_MSA__WD__WS_WT(AVER_S_W, aver_s.w)
364DO_MSA__WD__WS_WT(AVER_S_D, aver_s.d)
365
366DO_MSA__WD__WS_WT(AVER_U_B, aver_u.b)
367DO_MSA__WD__WS_WT(AVER_U_H, aver_u.h)
368DO_MSA__WD__WS_WT(AVER_U_W, aver_u.w)
369DO_MSA__WD__WS_WT(AVER_U_D, aver_u.d)
370
371
372
373
374
375
376
377DO_MSA__WD__WS_WT(CEQ_B, ceq.b)
378DO_MSA__WD__WS_WT(CEQ_H, ceq.h)
379DO_MSA__WD__WS_WT(CEQ_W, ceq.w)
380DO_MSA__WD__WS_WT(CEQ_D, ceq.d)
381
382DO_MSA__WD__WS_WT(CLE_S_B, cle_s.b)
383DO_MSA__WD__WS_WT(CLE_S_H, cle_s.h)
384DO_MSA__WD__WS_WT(CLE_S_W, cle_s.w)
385DO_MSA__WD__WS_WT(CLE_S_D, cle_s.d)
386
387DO_MSA__WD__WS_WT(CLE_U_B, cle_u.b)
388DO_MSA__WD__WS_WT(CLE_U_H, cle_u.h)
389DO_MSA__WD__WS_WT(CLE_U_W, cle_u.w)
390DO_MSA__WD__WS_WT(CLE_U_D, cle_u.d)
391
392DO_MSA__WD__WS_WT(CLT_S_B, clt_s.b)
393DO_MSA__WD__WS_WT(CLT_S_H, clt_s.h)
394DO_MSA__WD__WS_WT(CLT_S_W, clt_s.w)
395DO_MSA__WD__WS_WT(CLT_S_D, clt_s.d)
396
397DO_MSA__WD__WS_WT(CLT_U_B, clt_u.b)
398DO_MSA__WD__WS_WT(CLT_U_H, clt_u.h)
399DO_MSA__WD__WS_WT(CLT_U_W, clt_u.w)
400DO_MSA__WD__WS_WT(CLT_U_D, clt_u.d)
401
402
403
404
405
406
407
408DO_MSA__WD__WS_WT(DIV_S_B, div_s.b)
409DO_MSA__WD__WS_WT(DIV_S_H, div_s.h)
410DO_MSA__WD__WS_WT(DIV_S_W, div_s.w)
411DO_MSA__WD__WS_WT(DIV_S_D, div_s.d)
412
413DO_MSA__WD__WS_WT(DIV_U_B, div_u.b)
414DO_MSA__WD__WS_WT(DIV_U_H, div_u.h)
415DO_MSA__WD__WS_WT(DIV_U_W, div_u.w)
416DO_MSA__WD__WS_WT(DIV_U_D, div_u.d)
417
418
419
420
421
422
423
424DO_MSA__WD__WS_WT(DOTP_S_H, dotp_s.h)
425DO_MSA__WD__WS_WT(DOTP_S_W, dotp_s.w)
426DO_MSA__WD__WS_WT(DOTP_S_D, dotp_s.d)
427
428DO_MSA__WD__WS_WT(DOTP_U_H, dotp_u.h)
429DO_MSA__WD__WS_WT(DOTP_U_W, dotp_u.w)
430DO_MSA__WD__WS_WT(DOTP_U_D, dotp_u.d)
431
432DO_MSA__WD__WS_WT(DPADD_S_H, dpadd_s.h)
433DO_MSA__WD__WD_WT(DPADD_S_H__DDT, dpadd_s.h)
434DO_MSA__WD__WS_WD(DPADD_S_H__DSD, dpadd_s.h)
435DO_MSA__WD__WS_WT(DPADD_S_W, dpadd_s.w)
436DO_MSA__WD__WD_WT(DPADD_S_W__DDT, dpadd_s.w)
437DO_MSA__WD__WS_WD(DPADD_S_W__DSD, dpadd_s.w)
438DO_MSA__WD__WS_WT(DPADD_S_D, dpadd_s.d)
439DO_MSA__WD__WD_WT(DPADD_S_D__DDT, dpadd_s.d)
440DO_MSA__WD__WS_WD(DPADD_S_D__DSD, dpadd_s.d)
441
442DO_MSA__WD__WS_WT(DPADD_U_H, dpadd_u.h)
443DO_MSA__WD__WD_WT(DPADD_U_H__DDT, dpadd_u.h)
444DO_MSA__WD__WS_WD(DPADD_U_H__DSD, dpadd_u.h)
445DO_MSA__WD__WS_WT(DPADD_U_W, dpadd_u.w)
446DO_MSA__WD__WD_WT(DPADD_U_W__DDT, dpadd_u.w)
447DO_MSA__WD__WS_WD(DPADD_U_W__DSD, dpadd_u.w)
448DO_MSA__WD__WS_WT(DPADD_U_D, dpadd_u.d)
449DO_MSA__WD__WD_WT(DPADD_U_D__DDT, dpadd_u.d)
450DO_MSA__WD__WS_WD(DPADD_U_D__DSD, dpadd_u.d)
451
452DO_MSA__WD__WS_WT(DPSUB_S_H, dpsub_s.h)
453DO_MSA__WD__WD_WT(DPSUB_S_H__DDT, dpsub_s.h)
454DO_MSA__WD__WS_WD(DPSUB_S_H__DSD, dpsub_s.h)
455DO_MSA__WD__WS_WT(DPSUB_S_W, dpsub_s.w)
456DO_MSA__WD__WD_WT(DPSUB_S_W__DDT, dpsub_s.w)
457DO_MSA__WD__WS_WD(DPSUB_S_W__DSD, dpsub_s.w)
458DO_MSA__WD__WS_WT(DPSUB_S_D, dpsub_s.d)
459DO_MSA__WD__WD_WT(DPSUB_S_D__DDT, dpsub_s.d)
460DO_MSA__WD__WS_WD(DPSUB_S_D__DSD, dpsub_s.d)
461
462DO_MSA__WD__WS_WT(DPSUB_U_H, dpsub_u.h)
463DO_MSA__WD__WD_WT(DPSUB_U_H__DDT, dpsub_u.h)
464DO_MSA__WD__WS_WD(DPSUB_U_H__DSD, dpsub_u.h)
465DO_MSA__WD__WS_WT(DPSUB_U_W, dpsub_u.w)
466DO_MSA__WD__WD_WT(DPSUB_U_W__DDT, dpsub_u.w)
467DO_MSA__WD__WS_WD(DPSUB_U_W__DSD, dpsub_u.w)
468DO_MSA__WD__WS_WT(DPSUB_U_D, dpsub_u.d)
469DO_MSA__WD__WD_WT(DPSUB_U_D__DDT, dpsub_u.d)
470DO_MSA__WD__WS_WD(DPSUB_U_D__DSD, dpsub_u.d)
471
472
473
474
475
476
477
478DO_MSA__WD__WS_WT(MAX_A_B, max_a.b)
479DO_MSA__WD__WS_WT(MAX_A_H, max_a.h)
480DO_MSA__WD__WS_WT(MAX_A_W, max_a.w)
481DO_MSA__WD__WS_WT(MAX_A_D, max_a.d)
482
483DO_MSA__WD__WS_WT(MAX_S_B, max_s.b)
484DO_MSA__WD__WS_WT(MAX_S_H, max_s.h)
485DO_MSA__WD__WS_WT(MAX_S_W, max_s.w)
486DO_MSA__WD__WS_WT(MAX_S_D, max_s.d)
487
488DO_MSA__WD__WS_WT(MAX_U_B, max_u.b)
489DO_MSA__WD__WS_WT(MAX_U_H, max_u.h)
490DO_MSA__WD__WS_WT(MAX_U_W, max_u.w)
491DO_MSA__WD__WS_WT(MAX_U_D, max_u.d)
492
493DO_MSA__WD__WS_WT(MIN_A_B, min_a.b)
494DO_MSA__WD__WS_WT(MIN_A_H, min_a.h)
495DO_MSA__WD__WS_WT(MIN_A_W, min_a.w)
496DO_MSA__WD__WS_WT(MIN_A_D, min_a.d)
497
498DO_MSA__WD__WS_WT(MIN_S_B, min_s.b)
499DO_MSA__WD__WS_WT(MIN_S_H, min_s.h)
500DO_MSA__WD__WS_WT(MIN_S_W, min_s.w)
501DO_MSA__WD__WS_WT(MIN_S_D, min_s.d)
502
503DO_MSA__WD__WS_WT(MIN_U_B, min_u.b)
504DO_MSA__WD__WS_WT(MIN_U_H, min_u.h)
505DO_MSA__WD__WS_WT(MIN_U_W, min_u.w)
506DO_MSA__WD__WS_WT(MIN_U_D, min_u.d)
507
508
509
510
511
512
513
514DO_MSA__WD__WS_WT(MOD_S_B, mod_s.b)
515DO_MSA__WD__WS_WT(MOD_S_H, mod_s.h)
516DO_MSA__WD__WS_WT(MOD_S_W, mod_s.w)
517DO_MSA__WD__WS_WT(MOD_S_D, mod_s.d)
518
519DO_MSA__WD__WS_WT(MOD_U_B, mod_u.b)
520DO_MSA__WD__WS_WT(MOD_U_H, mod_u.h)
521DO_MSA__WD__WS_WT(MOD_U_W, mod_u.w)
522DO_MSA__WD__WS_WT(MOD_U_D, mod_u.d)
523
524
525
526
527
528
529
530DO_MSA__WD__WS_WT(MADDV_B, maddv.b)
531DO_MSA__WD__WD_WT(MADDV_B__DDT, maddv.b)
532DO_MSA__WD__WS_WD(MADDV_B__DSD, maddv.b)
533DO_MSA__WD__WS_WT(MADDV_H, maddv.h)
534DO_MSA__WD__WD_WT(MADDV_H__DDT, maddv.h)
535DO_MSA__WD__WS_WD(MADDV_H__DSD, maddv.h)
536DO_MSA__WD__WS_WT(MADDV_W, maddv.w)
537DO_MSA__WD__WD_WT(MADDV_W__DDT, maddv.w)
538DO_MSA__WD__WS_WD(MADDV_W__DSD, maddv.w)
539DO_MSA__WD__WS_WT(MADDV_D, maddv.d)
540DO_MSA__WD__WD_WT(MADDV_D__DDT, maddv.d)
541DO_MSA__WD__WS_WD(MADDV_D__DSD, maddv.d)
542
543DO_MSA__WD__WS_WT(MSUBV_B, msubv.b)
544DO_MSA__WD__WD_WT(MSUBV_B__DDT, msubv.b)
545DO_MSA__WD__WS_WD(MSUBV_B__DSD, msubv.b)
546DO_MSA__WD__WS_WT(MSUBV_H, msubv.h)
547DO_MSA__WD__WD_WT(MSUBV_H__DDT, msubv.h)
548DO_MSA__WD__WS_WD(MSUBV_H__DSD, msubv.h)
549DO_MSA__WD__WS_WT(MSUBV_W, msubv.w)
550DO_MSA__WD__WD_WT(MSUBV_W__DDT, msubv.w)
551DO_MSA__WD__WS_WD(MSUBV_W__DSD, msubv.w)
552DO_MSA__WD__WS_WT(MSUBV_D, msubv.d)
553DO_MSA__WD__WD_WT(MSUBV_D__DDT, msubv.d)
554DO_MSA__WD__WS_WD(MSUBV_D__DSD, msubv.d)
555
556DO_MSA__WD__WS_WT(MULV_B, mulv.b)
557DO_MSA__WD__WS_WT(MULV_H, mulv.h)
558DO_MSA__WD__WS_WT(MULV_W, mulv.w)
559DO_MSA__WD__WS_WT(MULV_D, mulv.d)
560
561
562
563
564
565
566
567DO_MSA__WD__WS_WT(ASUB_S_B, asub_s.b)
568DO_MSA__WD__WS_WT(ASUB_S_H, asub_s.h)
569DO_MSA__WD__WS_WT(ASUB_S_W, asub_s.w)
570DO_MSA__WD__WS_WT(ASUB_S_D, asub_s.d)
571
572DO_MSA__WD__WS_WT(ASUB_U_B, asub_u.b)
573DO_MSA__WD__WS_WT(ASUB_U_H, asub_u.h)
574DO_MSA__WD__WS_WT(ASUB_U_W, asub_u.w)
575DO_MSA__WD__WS_WT(ASUB_U_D, asub_u.d)
576
577DO_MSA__WD__WS_WT(HSUB_S_H, hsub_s.h)
578DO_MSA__WD__WS_WT(HSUB_S_W, hsub_s.w)
579DO_MSA__WD__WS_WT(HSUB_S_D, hsub_s.d)
580
581DO_MSA__WD__WS_WT(HSUB_U_H, hsub_u.h)
582DO_MSA__WD__WS_WT(HSUB_U_W, hsub_u.w)
583DO_MSA__WD__WS_WT(HSUB_U_D, hsub_u.d)
584
585DO_MSA__WD__WS_WT(SUBS_S_B, subs_s.b)
586DO_MSA__WD__WS_WT(SUBS_S_H, subs_s.h)
587DO_MSA__WD__WS_WT(SUBS_S_W, subs_s.w)
588DO_MSA__WD__WS_WT(SUBS_S_D, subs_s.d)
589
590DO_MSA__WD__WS_WT(SUBS_U_B, subs_u.b)
591DO_MSA__WD__WS_WT(SUBS_U_H, subs_u.h)
592DO_MSA__WD__WS_WT(SUBS_U_W, subs_u.w)
593DO_MSA__WD__WS_WT(SUBS_U_D, subs_u.d)
594
595DO_MSA__WD__WS_WT(SUBSUS_U_B, subsus_u.b)
596DO_MSA__WD__WS_WT(SUBSUS_U_H, subsus_u.h)
597DO_MSA__WD__WS_WT(SUBSUS_U_W, subsus_u.w)
598DO_MSA__WD__WS_WT(SUBSUS_U_D, subsus_u.d)
599
600DO_MSA__WD__WS_WT(SUBSUU_S_B, subsuu_s.b)
601DO_MSA__WD__WS_WT(SUBSUU_S_H, subsuu_s.h)
602DO_MSA__WD__WS_WT(SUBSUU_S_W, subsuu_s.w)
603DO_MSA__WD__WS_WT(SUBSUU_S_D, subsuu_s.d)
604
605DO_MSA__WD__WS_WT(SUBV_B, subv.b)
606DO_MSA__WD__WS_WT(SUBV_H, subv.h)
607DO_MSA__WD__WS_WT(SUBV_W, subv.w)
608DO_MSA__WD__WS_WT(SUBV_D, subv.d)
609
610
611
612
613
614
615
616DO_MSA__WD__WS_WT(ILVEV_B, ilvev.b)
617DO_MSA__WD__WS_WT(ILVEV_H, ilvev.h)
618DO_MSA__WD__WS_WT(ILVEV_W, ilvev.w)
619DO_MSA__WD__WS_WT(ILVEV_D, ilvev.d)
620
621DO_MSA__WD__WS_WT(ILVOD_B, ilvod.b)
622DO_MSA__WD__WS_WT(ILVOD_H, ilvod.h)
623DO_MSA__WD__WS_WT(ILVOD_W, ilvod.w)
624DO_MSA__WD__WS_WT(ILVOD_D, ilvod.d)
625
626DO_MSA__WD__WS_WT(ILVL_B, ilvl.b)
627DO_MSA__WD__WS_WT(ILVL_H, ilvl.h)
628DO_MSA__WD__WS_WT(ILVL_W, ilvl.w)
629DO_MSA__WD__WS_WT(ILVL_D, ilvl.d)
630
631DO_MSA__WD__WS_WT(ILVR_B, ilvr.b)
632DO_MSA__WD__WS_WT(ILVR_H, ilvr.h)
633DO_MSA__WD__WS_WT(ILVR_W, ilvr.w)
634DO_MSA__WD__WS_WT(ILVR_D, ilvr.d)
635
636
637
638
639
640
641
642DO_MSA__WD__WS_WT(AND_V, and.v)
643DO_MSA__WD__WS_WT(NOR_V, nor.v)
644DO_MSA__WD__WS_WT(OR_V, or.v)
645DO_MSA__WD__WS_WT(XOR_V, xor.v)
646
647
648
649
650
651
652
653DO_MSA__WD__WS(MOVE_V, move.v)
654
655
656
657
658
659
660
661DO_MSA__WD__WS_WT(PCKEV_B, pckev.b)
662DO_MSA__WD__WD_WT(PCKEV_B__DDT, pckev.b)
663DO_MSA__WD__WS_WD(PCKEV_B__DSD, pckev.b)
664DO_MSA__WD__WS_WT(PCKEV_H, pckev.h)
665DO_MSA__WD__WD_WT(PCKEV_H__DDT, pckev.h)
666DO_MSA__WD__WS_WD(PCKEV_H__DSD, pckev.h)
667DO_MSA__WD__WS_WT(PCKEV_W, pckev.w)
668DO_MSA__WD__WD_WT(PCKEV_W__DDT, pckev.w)
669DO_MSA__WD__WS_WD(PCKEV_W__DSD, pckev.w)
670DO_MSA__WD__WS_WT(PCKEV_D, pckev.d)
671DO_MSA__WD__WD_WT(PCKEV_D__DDT, pckev.d)
672DO_MSA__WD__WS_WD(PCKEV_D__DSD, pckev.d)
673
674DO_MSA__WD__WS_WT(PCKOD_B, pckod.b)
675DO_MSA__WD__WD_WT(PCKOD_B__DDT, pckod.b)
676DO_MSA__WD__WS_WD(PCKOD_B__DSD, pckod.b)
677DO_MSA__WD__WS_WT(PCKOD_H, pckod.h)
678DO_MSA__WD__WD_WT(PCKOD_H__DDT, pckod.h)
679DO_MSA__WD__WS_WD(PCKOD_H__DSD, pckod.h)
680DO_MSA__WD__WS_WT(PCKOD_W, pckod.w)
681DO_MSA__WD__WD_WT(PCKOD_W__DDT, pckod.w)
682DO_MSA__WD__WS_WD(PCKOD_W__DSD, pckod.w)
683DO_MSA__WD__WS_WT(PCKOD_D, pckod.d)
684DO_MSA__WD__WD_WT(PCKOD_D__DDT, pckod.d)
685DO_MSA__WD__WS_WD(PCKOD_D__DSD, pckod.d)
686
687DO_MSA__WD__WS_WT(VSHF_B, vshf.b)
688DO_MSA__WD__WD_WT(VSHF_B__DDT, vshf.b)
689DO_MSA__WD__WS_WD(VSHF_B__DSD, vshf.b)
690DO_MSA__WD__WS_WT(VSHF_H, vshf.h)
691DO_MSA__WD__WD_WT(VSHF_H__DDT, vshf.h)
692DO_MSA__WD__WS_WD(VSHF_H__DSD, vshf.h)
693DO_MSA__WD__WS_WT(VSHF_W, vshf.w)
694DO_MSA__WD__WD_WT(VSHF_W__DDT, vshf.w)
695DO_MSA__WD__WS_WD(VSHF_W__DSD, vshf.w)
696DO_MSA__WD__WS_WT(VSHF_D, vshf.d)
697DO_MSA__WD__WD_WT(VSHF_D__DDT, vshf.d)
698DO_MSA__WD__WS_WD(VSHF_D__DSD, vshf.d)
699
700
701
702
703
704
705
706DO_MSA__WD__WS_WT(SLL_B, sll.b)
707DO_MSA__WD__WS_WT(SLL_H, sll.h)
708DO_MSA__WD__WS_WT(SLL_W, sll.w)
709DO_MSA__WD__WS_WT(SLL_D, sll.d)
710
711DO_MSA__WD__WS_WT(SRA_B, sra.b)
712DO_MSA__WD__WS_WT(SRA_H, sra.h)
713DO_MSA__WD__WS_WT(SRA_W, sra.w)
714DO_MSA__WD__WS_WT(SRA_D, sra.d)
715
716DO_MSA__WD__WS_WT(SRAR_B, srar.b)
717DO_MSA__WD__WS_WT(SRAR_H, srar.h)
718DO_MSA__WD__WS_WT(SRAR_W, srar.w)
719DO_MSA__WD__WS_WT(SRAR_D, srar.d)
720
721DO_MSA__WD__WS_WT(SRL_B, srl.b)
722DO_MSA__WD__WS_WT(SRL_H, srl.h)
723DO_MSA__WD__WS_WT(SRL_W, srl.w)
724DO_MSA__WD__WS_WT(SRL_D, srl.d)
725
726DO_MSA__WD__WS_WT(SRLR_B, srlr.b)
727DO_MSA__WD__WS_WT(SRLR_H, srlr.h)
728DO_MSA__WD__WS_WT(SRLR_W, srlr.w)
729DO_MSA__WD__WS_WT(SRLR_D, srlr.d)
730
731
732#endif
733