OSDN Git Service

Mips: Add ImmArg to intrinsics
[android-x86/external-llvm.git] / test / CodeGen / Mips / msa / immediates.ll
1 ; RUN: llc -march=mips -mattr=+msa,+fp64 -relocation-model=pic < %s | FileCheck %s -check-prefixes=CHECK,MSA32
2 ; RUN: llc -march=mips64 -mattr=+msa,+fp64 -relocation-model=pic -target-abi n32 < %s \
3 ; RUN:      | FileCheck %s -check-prefixes=CHECK,MSA64,MSA64N32
4 ; RUN: llc -march=mips64 -mattr=+msa,+fp64 -relocation-model=pic -target-abi n64 < %s \
5 ; RUN:      | FileCheck %s -check-prefixes=CHECK,MSA64,MSA64N64
6
7 ; Test that the immediate intrinsics don't crash LLVM.
8
9 ; Some of the intrinsics lower to equivalent forms.
10
11 define void @addvi_b(<16 x i8> * %ptr) {
12 entry:
13 ; CHECK-LABEL: addvi_b:
14 ; CHECK: addvi.b
15   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
16   %r = call <16 x i8> @llvm.mips.addvi.b(<16 x i8> %a, i32 25)
17   store <16 x i8> %r, <16 x i8> * %ptr, align 16
18   ret void
19 }
20
21 define void @andi_b(<16 x i8> * %ptr) {
22 entry:
23 ; CHECK-LABEL: andi_b:
24 ; CHECK: andi.b
25   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
26   %r = call <16 x i8> @llvm.mips.andi.b(<16 x i8> %a, i32 25)
27   store <16 x i8> %r, <16 x i8> * %ptr, align 16
28   ret void
29 }
30
31 define void @bclri_b(<16 x i8> * %ptr) {
32 entry:
33 ; CHECK-LABEL: bclri_b:
34 ; CHECK: andi.b
35   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
36   %r = call <16 x i8> @llvm.mips.bclri.b(<16 x i8> %a, i32 3)
37   store <16 x i8> %r, <16 x i8> * %ptr, align 16
38   ret void
39 }
40
41 define void @binsli_b(<16 x i8> * %ptr, <16 x i8> * %ptr2) {
42 entry:
43 ; CHECK-LABEL: binsli_b:
44 ; CHECK: binsli.b
45   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
46   %b = load <16 x i8>, <16 x i8> * %ptr2, align 16
47   %r = call <16 x i8> @llvm.mips.binsli.b(<16 x i8> %a, <16 x i8> %b, i32 3)
48   store <16 x i8> %r, <16 x i8> * %ptr, align 16
49   ret void
50 }
51
52 define void @binsri_b(<16 x i8> * %ptr, <16 x i8> * %ptr2) {
53 entry:
54 ; CHECK-LABEL: binsri_b:
55 ; CHECK: binsri.b
56   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
57   %b = load <16 x i8>, <16 x i8> * %ptr2, align 16
58   %r = call <16 x i8> @llvm.mips.binsri.b(<16 x i8> %a, <16 x i8> %b, i32 5)
59   store <16 x i8> %r, <16 x i8> * %ptr, align 16
60   ret void
61 }
62
63 define void @bmnzi_b(<16 x i8> * %ptr, <16 x i8> * %ptr2) {
64 entry:
65 ; CHECK-LABEL: bmnzi_b:
66 ; CHECK: bmnzi.b
67   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
68   %b = load <16 x i8>, <16 x i8> * %ptr2, align 16
69   %r = call <16 x i8> @llvm.mips.bmnzi.b(<16 x i8> %a, <16 x i8> %b, i32 25)
70   store <16 x i8> %r, <16 x i8> * %ptr, align 16
71   ret void
72 }
73
74 define void @bmzi_b(<16 x i8> * %ptr, <16 x i8> * %ptr2) {
75 entry:
76 ; CHECK-LABEL: bmzi_b:
77 ; CHECK: bmnzi.b
78   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
79   %b = load <16 x i8>, <16 x i8> * %ptr2, align 16
80   %r = call <16 x i8> @llvm.mips.bmzi.b(<16 x i8> %a, <16 x i8> %b, i32 25)
81   store <16 x i8> %r, <16 x i8> * %ptr, align 16
82   ret void
83 }
84
85 define void @bnegi_b(<16 x i8> * %ptr) {
86 entry:
87 ; CHECK-LABEL: bnegi_b:
88 ; CHECK: bnegi.b
89   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
90   %r = call <16 x i8> @llvm.mips.bnegi.b(<16 x i8> %a, i32 6)
91   store <16 x i8> %r, <16 x i8> * %ptr, align 16
92   ret void
93 }
94
95 define void @bseli_b(<16 x i8> * %ptr) {
96 entry:
97 ; CHECK-LABEL: bseli_b:
98 ; CHECK: bseli.b
99   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
100   %r = call <16 x i8> @llvm.mips.bseli.b(<16 x i8> %a, <16 x i8> %a, i32 25)
101   store <16 x i8> %r, <16 x i8> * %ptr, align 16
102   ret void
103 }
104
105 define void @bseti_b(<16 x i8> * %ptr) {
106 entry:
107 ; CHECK-LABEL: bseti_b:
108 ; CHECK: bseti.b
109   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
110   %r = call <16 x i8> @llvm.mips.bseti.b(<16 x i8> %a, i32 5)
111   store <16 x i8> %r, <16 x i8> * %ptr, align 16
112   ret void
113 }
114
115 define void @clei_s_b(<16 x i8> * %ptr) {
116 entry:
117 ; CHECK-LABEL: clei_s_b:
118 ; CHECK: clei_s.b
119   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
120   %r = call <16 x i8> @llvm.mips.clei.s.b(<16 x i8> %a, i32 12)
121   store <16 x i8> %r, <16 x i8> * %ptr, align 16
122   ret void
123 }
124
125 define void @clei_u_b(<16 x i8> * %ptr) {
126 entry:
127 ; CHECK-LABEL: clei_u_b:
128 ; CHECK: clei_u.b
129   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
130   %r = call <16 x i8> @llvm.mips.clei.u.b(<16 x i8> %a, i32 25)
131   store <16 x i8> %r, <16 x i8> * %ptr, align 16
132   ret void
133 }
134
135 define void @clti_s_b(<16 x i8> * %ptr) {
136 entry:
137 ; CHECK-LABEL: clti_s_b:
138 ; CHECK: clti_s.b
139   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
140   %r = call <16 x i8> @llvm.mips.clti.s.b(<16 x i8> %a, i32 15)
141   store <16 x i8> %r, <16 x i8> * %ptr, align 16
142   ret void
143 }
144
145 define void @clti_u_b(<16 x i8> * %ptr) {
146 entry:
147 ; CHECK-LABEL: clti_u_b:
148 ; CHECK: clti_u.b
149   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
150   %r = call <16 x i8> @llvm.mips.clti.u.b(<16 x i8> %a, i32 25)
151   store <16 x i8> %r, <16 x i8> * %ptr, align 16
152   ret void
153 }
154
155 define void @ldi_b(<16 x i8> * %ptr) {
156 entry:
157 ; CHECK-LABEL: ldi_b:
158 ; CHECK: ldi.b
159   %r = call <16 x i8> @llvm.mips.ldi.b(i32 3)
160   store <16 x i8> %r, <16 x i8> * %ptr, align 16
161   ret void
162 }
163
164 define void @maxi_s_b(<16 x i8> * %ptr) {
165 entry:
166 ; CHECK-LABEL: maxi_s_b:
167 ; CHECK: maxi_s.b
168   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
169   %r = call <16 x i8> @llvm.mips.maxi.s.b(<16 x i8> %a, i32 2)
170   store <16 x i8> %r, <16 x i8> * %ptr, align 16
171   ret void
172 }
173
174 define void @maxi_u_b(<16 x i8> * %ptr) {
175 entry:
176 ; CHECK-LABEL: maxi_u_b:
177 ; CHECK: maxi_u.b
178   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
179   %r = call <16 x i8> @llvm.mips.maxi.u.b(<16 x i8> %a, i32 2)
180   store <16 x i8> %r, <16 x i8> * %ptr, align 16
181   ret void
182 }
183
184 define void @mini_s_b(<16 x i8> * %ptr) {
185 entry:
186 ; CHECK-LABEL: mini_s_b:
187 ; CHECK: mini_s.b
188   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
189   %r = call <16 x i8> @llvm.mips.mini.s.b(<16 x i8> %a, i32 2)
190   store <16 x i8> %r, <16 x i8> * %ptr, align 16
191   ret void
192 }
193
194 define void @mini_u_b(<16 x i8> * %ptr) {
195 entry:
196 ; CHECK-LABEL: mini_u_b:
197 ; CHECK: mini_u.b
198   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
199   %r = call <16 x i8> @llvm.mips.mini.u.b(<16 x i8> %a, i32 2)
200   store <16 x i8> %r, <16 x i8> * %ptr, align 16
201   ret void
202 }
203
204 define void @nori_b(<16 x i8> * %ptr) {
205 entry:
206 ; CHECK-LABEL: nori_b:
207 ; CHECK: nori.b
208   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
209   %r = call <16 x i8> @llvm.mips.nori.b(<16 x i8> %a, i32 25)
210   store <16 x i8> %r, <16 x i8> * %ptr, align 16
211   ret void
212 }
213
214 define void @ori_b(<16 x i8> * %ptr) {
215 entry:
216 ; CHECK-LABEL: ori_b:
217 ; CHECK: ori.b
218   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
219   %r = call <16 x i8> @llvm.mips.ori.b(<16 x i8> %a, i32 25)
220   store <16 x i8> %r, <16 x i8> * %ptr, align 16
221   ret void
222 }
223
224 define void @sldi_b(<16 x i8> * %ptr) {
225 entry:
226 ; CHECK-LABEL: sldi_b:
227 ; CHECK: sldi.b
228   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
229   %r = call <16 x i8> @llvm.mips.sldi.b(<16 x i8> %a, <16 x i8> %a, i32 7)
230   store <16 x i8> %r, <16 x i8> * %ptr, align 16
231   ret void
232 }
233
234 define void @slli_b(<16 x i8> * %ptr) {
235 entry:
236 ; CHECK-LABEL: slli_b:
237 ; CHECK: slli.b
238   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
239   %r = call <16 x i8> @llvm.mips.slli.b(<16 x i8> %a, i32 3)
240   store <16 x i8> %r, <16 x i8> * %ptr, align 16
241   ret void
242 }
243
244 define void @splati_b(<16 x i8> * %ptr) {
245 entry:
246 ; CHECK-LABEL: splati_b:
247 ; CHECK: splati.b
248   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
249   %r = call <16 x i8> @llvm.mips.splati.b(<16 x i8> %a, i32 3)
250   store <16 x i8> %r, <16 x i8> * %ptr, align 16
251   ret void
252 }
253
254 define void @srai_b(<16 x i8> * %ptr) {
255 entry:
256 ; CHECK-LABEL: srai_b:
257 ; CHECK: srai.b
258   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
259   %r = call <16 x i8> @llvm.mips.srai.b(<16 x i8> %a, i32 3)
260   store <16 x i8> %r, <16 x i8> * %ptr, align 16
261   ret void
262 }
263
264 define void @srari_b(<16 x i8> * %ptr) {
265 entry:
266 ; CHECK-LABEL: srari_b:
267 ; CHECK: srari.b
268   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
269   %r = call <16 x i8> @llvm.mips.srari.b(<16 x i8> %a, i32 3)
270   store <16 x i8> %r, <16 x i8> * %ptr, align 16
271   ret void
272 }
273
274 define void @srli_b(<16 x i8> * %ptr) {
275 entry:
276 ; CHECK-LABEL: srli_b:
277 ; CHECK: srli.b
278   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
279   %r = call <16 x i8> @llvm.mips.srli.b(<16 x i8> %a, i32 3)
280   store <16 x i8> %r, <16 x i8> * %ptr, align 16
281   ret void
282 }
283
284 define void @srlri_b(<16 x i8> * %ptr) {
285 entry:
286 ; CHECK-LABEL: srlri_b:
287 ; CHECK: srlri.b
288   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
289   %r = call <16 x i8> @llvm.mips.srlri.b(<16 x i8> %a, i32 3)
290   store <16 x i8> %r, <16 x i8> * %ptr, align 16
291   ret void
292 }
293
294 define void @addvi_w(<4 x i32> * %ptr) {
295 entry:
296 ; CHECK-LABEL: addvi_w:
297 ; CHECK: addvi.w
298   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
299   %r = call <4 x i32> @llvm.mips.addvi.w(<4 x i32> %a, i32 25)
300   store <4 x i32> %r, <4 x i32> * %ptr, align 16
301   ret void
302 }
303
304 define void @bclri_w(<4 x i32> * %ptr) {
305 entry:
306 ; CHECK-LABEL: bclri_w:
307 ; CHECK: bclri.w
308   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
309   %r = call <4 x i32> @llvm.mips.bclri.w(<4 x i32> %a, i32 25)
310   store <4 x i32> %r, <4 x i32> * %ptr, align 16
311   ret void
312 }
313
314 define void @binsli_w(<4 x i32> * %ptr, <4 x i32> * %ptr2) {
315 entry:
316 ; CHECK-LABEL: binsli_w:
317 ; CHECK: binsli.w
318   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
319   %b = load <4 x i32>, <4 x i32> * %ptr2, align 16
320   %r = call <4 x i32> @llvm.mips.binsli.w(<4 x i32> %a, <4 x i32> %b, i32 25)
321   store <4 x i32> %r, <4 x i32> * %ptr, align 16
322   ret void
323 }
324
325 define void @binsri_w(<4 x i32> * %ptr, <4 x i32> * %ptr2) {
326 entry:
327 ; CHECK-LABEL: binsri_w:
328 ; CHECK: binsri.w
329   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
330   %b = load <4 x i32>, <4 x i32> * %ptr2, align 16
331   %r = call <4 x i32> @llvm.mips.binsri.w(<4 x i32> %a, <4 x i32> %b, i32 25)
332   store <4 x i32> %r, <4 x i32> * %ptr, align 16
333   ret void
334 }
335
336 define void @bnegi_w(<4 x i32> * %ptr) {
337 entry:
338 ; CHECK-LABEL: bnegi_w:
339 ; CHECK: bnegi.w
340   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
341   %r = call <4 x i32> @llvm.mips.bnegi.w(<4 x i32> %a, i32 25)
342   store <4 x i32> %r, <4 x i32> * %ptr, align 16
343   ret void
344 }
345
346 define void @bseti_w(<4 x i32> * %ptr) {
347 entry:
348 ; CHECK-LABEL: bseti_w:
349 ; CHECK: bseti.w
350   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
351   %r = call <4 x i32> @llvm.mips.bseti.w(<4 x i32> %a, i32 25)
352   store <4 x i32> %r, <4 x i32> * %ptr, align 16
353   ret void
354 }
355
356 define void @clei_s_w(<4 x i32> * %ptr) {
357 entry:
358 ; CHECK-LABEL: clei_s_w:
359 ; CHECK: clei_s.w
360   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
361   %r = call <4 x i32> @llvm.mips.clei.s.w(<4 x i32> %a, i32 14)
362   store <4 x i32> %r, <4 x i32> * %ptr, align 16
363   ret void
364 }
365
366 define void @clei_u_w(<4 x i32> * %ptr) {
367 entry:
368 ; CHECK-LABEL: clei_u_w:
369 ; CHECK: clei_u.w
370   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
371   %r = call <4 x i32> @llvm.mips.clei.u.w(<4 x i32> %a, i32 25)
372   store <4 x i32> %r, <4 x i32> * %ptr, align 16
373   ret void
374 }
375
376 define void @clti_s_w(<4 x i32> * %ptr) {
377 entry:
378 ; CHECK-LABEL: clti_s_w:
379 ; CHECK: clti_s.w
380   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
381   %r = call <4 x i32> @llvm.mips.clti.s.w(<4 x i32> %a, i32 15)
382   store <4 x i32> %r, <4 x i32> * %ptr, align 16
383   ret void
384 }
385
386 define void @clti_u_w(<4 x i32> * %ptr) {
387 entry:
388 ; CHECK-LABEL: clti_u_w:
389 ; CHECK: clti_u.w
390   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
391   %r = call <4 x i32> @llvm.mips.clti.u.w(<4 x i32> %a, i32 25)
392   store <4 x i32> %r, <4 x i32> * %ptr, align 16
393   ret void
394 }
395
396 define void @maxi_s_w(<4 x i32> * %ptr) {
397 entry:
398 ; CHECK-LABEL: maxi_s_w:
399 ; CHECK: maxi_s.w
400   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
401   %r = call <4 x i32> @llvm.mips.maxi.s.w(<4 x i32> %a, i32 2)
402   store <4 x i32> %r, <4 x i32> * %ptr, align 16
403   ret void
404 }
405
406 define void @maxi_u_w(<4 x i32> * %ptr) {
407 entry:
408 ; CHECK-LABEL: maxi_u_w:
409 ; CHECK: maxi_u.w
410   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
411   %r = call <4 x i32> @llvm.mips.maxi.u.w(<4 x i32> %a, i32 2)
412   store <4 x i32> %r, <4 x i32> * %ptr, align 16
413   ret void
414 }
415
416 define void @mini_s_w(<4 x i32> * %ptr) {
417 entry:
418 ; CHECK-LABEL: mini_s_w:
419 ; CHECK: mini_s.w
420   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
421   %r = call <4 x i32> @llvm.mips.mini.s.w(<4 x i32> %a, i32 2)
422   store <4 x i32> %r, <4 x i32> * %ptr, align 16
423   ret void
424 }
425
426 define void @mini_u_w(<4 x i32> * %ptr) {
427 entry:
428 ; CHECK-LABEL: mini_u_w:
429 ; CHECK: mini_u.w
430   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
431   %r = call <4 x i32> @llvm.mips.mini.u.w(<4 x i32> %a, i32 2)
432   store <4 x i32> %r, <4 x i32> * %ptr, align 16
433   ret void
434 }
435
436 define void @ldi_w(<4 x i32> * %ptr) {
437 entry:
438 ; CHECK-LABEL: ldi_w:
439 ; CHECK: ldi.w
440   %r = call <4 x i32> @llvm.mips.ldi.w(i32 3)
441   store <4 x i32> %r, <4 x i32> * %ptr, align 16
442   ret void
443 }
444
445 define void @sldi_w(<4 x i32> * %ptr) {
446 entry:
447 ; CHECK-LABEL: sldi_w:
448 ; CHECK: sldi.w
449   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
450   %r = call <4 x i32> @llvm.mips.sldi.w(<4 x i32> %a, <4 x i32> %a, i32 2)
451   store <4 x i32> %r, <4 x i32> * %ptr, align 16
452   ret void
453 }
454
455 define void @slli_w(<4 x i32> * %ptr) {
456 entry:
457 ; CHECK-LABEL: slli_w:
458 ; CHECK: slli.w
459   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
460   %r = call <4 x i32> @llvm.mips.slli.w(<4 x i32> %a, i32 3)
461   store <4 x i32> %r, <4 x i32> * %ptr, align 16
462   ret void
463 }
464
465 define void @splati_w(<4 x i32> * %ptr) {
466 entry:
467 ; CHECK-LABEL: splati_w:
468 ; CHECK: splati.w
469   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
470   %r = call <4 x i32> @llvm.mips.splati.w(<4 x i32> %a, i32 3)
471   store <4 x i32> %r, <4 x i32> * %ptr, align 16
472   ret void
473 }
474
475 define void @srai_w(<4 x i32> * %ptr) {
476 entry:
477 ; CHECK-LABEL: srai_w:
478 ; CHECK: srai.w
479   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
480   %r = call <4 x i32> @llvm.mips.srai.w(<4 x i32> %a, i32 3)
481   store <4 x i32> %r, <4 x i32> * %ptr, align 16
482   ret void
483 }
484
485 define void @srari_w(<4 x i32> * %ptr) {
486 entry:
487 ; CHECK-LABEL: srari_w:
488 ; CHECK: srari.w
489   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
490   %r = call <4 x i32> @llvm.mips.srari.w(<4 x i32> %a, i32 3)
491   store <4 x i32> %r, <4 x i32> * %ptr, align 16
492   ret void
493 }
494
495 define void @srli_w(<4 x i32> * %ptr) {
496 entry:
497 ; CHECK-LABEL: srli_w:
498 ; CHECK: srli.w
499   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
500   %r = call <4 x i32> @llvm.mips.srli.w(<4 x i32> %a, i32 3)
501   store <4 x i32> %r, <4 x i32> * %ptr, align 16
502   ret void
503 }
504
505 define void @srlri_w(<4 x i32> * %ptr) {
506 entry:
507 ; CHECK-LABEL: srlri_w:
508 ; CHECK: srlri.w
509   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
510   %r = call <4 x i32> @llvm.mips.srlri.w(<4 x i32> %a, i32 3)
511   store <4 x i32> %r, <4 x i32> * %ptr, align 16
512   ret void
513 }
514
515 define void @addvi_h(<8 x i16> * %ptr) {
516 entry:
517 ; CHECK-LABEL: addvi_h:
518 ; CHECK: addvi.h
519   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
520   %r = call <8 x i16> @llvm.mips.addvi.h(<8 x i16> %a, i32 25)
521   store <8 x i16> %r, <8 x i16> * %ptr, align 16
522   ret void
523 }
524
525 define void @bclri_h(<8 x i16> * %ptr) {
526 entry:
527 ; CHECK-LABEL: bclri_h:
528 ; CHECK: bclri.h
529   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
530   %r = call <8 x i16> @llvm.mips.bclri.h(<8 x i16> %a, i32 8)
531   store <8 x i16> %r, <8 x i16> * %ptr, align 16
532   ret void
533 }
534
535 define void @binsli_h(<8 x i16> * %ptr, <8 x i16> * %ptr2) {
536 entry:
537 ; CHECK-LABEL: binsli_h:
538 ; CHECK: binsli.h
539   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
540   %b = load <8 x i16>, <8 x i16> * %ptr2, align 16
541   %r = call <8 x i16> @llvm.mips.binsli.h(<8 x i16> %a, <8 x i16> %b, i32 8)
542   store <8 x i16> %r, <8 x i16> * %ptr, align 16
543   ret void
544 }
545
546 define void @binsri_h(<8 x i16> * %ptr, <8 x i16> * %ptr2) {
547 entry:
548 ; CHECK-LABEL: binsri_h:
549 ; CHECK: binsri.h
550   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
551   %b = load <8 x i16>, <8 x i16> * %ptr2, align 16
552   %r = call <8 x i16> @llvm.mips.binsri.h(<8 x i16> %a, <8 x i16> %b, i32 14)
553   store <8 x i16> %r, <8 x i16> * %ptr, align 16
554   ret void
555 }
556
557 define void @bnegi_h(<8 x i16> * %ptr) {
558 entry:
559 ; CHECK-LABEL: bnegi_h:
560 ; CHECK: bnegi.h
561   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
562   %r = call <8 x i16> @llvm.mips.bnegi.h(<8 x i16> %a, i32 14)
563   store <8 x i16> %r, <8 x i16> * %ptr, align 16
564   ret void
565 }
566
567 define void @bseti_h(<8 x i16> * %ptr) {
568 entry:
569 ; CHECK-LABEL: bseti_h:
570 ; CHECK: bseti.h
571   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
572   %r = call <8 x i16> @llvm.mips.bseti.h(<8 x i16> %a, i32 15)
573   store <8 x i16> %r, <8 x i16> * %ptr, align 16
574   ret void
575 }
576
577 define void @clei_s_h(<8 x i16> * %ptr) {
578 entry:
579 ; CHECK-LABEL: clei_s_h:
580 ; CHECK: clei_s.h
581   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
582   %r = call <8 x i16> @llvm.mips.clei.s.h(<8 x i16> %a, i32 13)
583   store <8 x i16> %r, <8 x i16> * %ptr, align 16
584   ret void
585 }
586
587 define void @clei_u_h(<8 x i16> * %ptr) {
588 entry:
589 ; CHECK-LABEL: clei_u_h:
590 ; CHECK: clei_u.h
591   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
592   %r = call <8 x i16> @llvm.mips.clei.u.h(<8 x i16> %a, i32 25)
593   store <8 x i16> %r, <8 x i16> * %ptr, align 16
594   ret void
595 }
596
597 define void @clti_s_h(<8 x i16> * %ptr) {
598 entry:
599 ; CHECK-LABEL: clti_s_h:
600 ; CHECK: clti_s.h
601   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
602   %r = call <8 x i16> @llvm.mips.clti.s.h(<8 x i16> %a, i32 15)
603   store <8 x i16> %r, <8 x i16> * %ptr, align 16
604   ret void
605 }
606
607 define void @clti_u_h(<8 x i16> * %ptr) {
608 entry:
609 ; CHECK-LABEL: clti_u_h:
610 ; CHECK: clti_u.h
611   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
612   %r = call <8 x i16> @llvm.mips.clti.u.h(<8 x i16> %a, i32 25)
613   store <8 x i16> %r, <8 x i16> * %ptr, align 16
614   ret void
615 }
616
617 define void @maxi_s_h(<8 x i16> * %ptr) {
618 entry:
619 ; CHECK-LABEL: maxi_s_h:
620 ; CHECK: maxi_s.h
621   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
622   %r = call <8 x i16> @llvm.mips.maxi.s.h(<8 x i16> %a, i32 2)
623   store <8 x i16> %r, <8 x i16> * %ptr, align 16
624   ret void
625 }
626
627 define void @maxi_u_h(<8 x i16> * %ptr) {
628 entry:
629 ; CHECK-LABEL: maxi_u_h:
630 ; CHECK: maxi_u.h
631   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
632   %r = call <8 x i16> @llvm.mips.maxi.u.h(<8 x i16> %a, i32 2)
633   store <8 x i16> %r, <8 x i16> * %ptr, align 16
634   ret void
635 }
636
637 define void @mini_s_h(<8 x i16> * %ptr) {
638 entry:
639 ; CHECK-LABEL: mini_s_h:
640 ; CHECK: mini_s.h
641   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
642   %r = call <8 x i16> @llvm.mips.mini.s.h(<8 x i16> %a, i32 2)
643   store <8 x i16> %r, <8 x i16> * %ptr, align 16
644   ret void
645 }
646
647 define void @mini_u_h(<8 x i16> * %ptr) {
648 entry:
649 ; CHECK-LABEL: mini_u_h:
650 ; CHECK: mini_u.h
651   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
652   %r = call <8 x i16> @llvm.mips.mini.u.h(<8 x i16> %a, i32 2)
653   store <8 x i16> %r, <8 x i16> * %ptr, align 16
654   ret void
655 }
656
657 define void @ldi_h(<8 x i16> * %ptr) {
658 entry:
659 ; CHECK-LABEL: ldi_h:
660 ; CHECK: ldi.h
661   %r = call <8 x i16> @llvm.mips.ldi.h(i32 3)
662   store <8 x i16> %r, <8 x i16> * %ptr, align 16
663   ret void
664 }
665
666 define void @sldi_h(<8 x i16> * %ptr) {
667 entry:
668 ; CHECK-LABEL: sldi_h:
669 ; CHECK: sldi.h
670   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
671   %r = call <8 x i16> @llvm.mips.sldi.h(<8 x i16> %a, <8 x i16> %a, i32 3)
672   store <8 x i16> %r, <8 x i16> * %ptr, align 16
673   ret void
674 }
675
676 define void @slli_h(<8 x i16> * %ptr) {
677 entry:
678 ; CHECK-LABEL: slli_h:
679 ; CHECK: slli.h
680   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
681   %r = call <8 x i16> @llvm.mips.slli.h(<8 x i16> %a, i32 3)
682   store <8 x i16> %r, <8 x i16> * %ptr, align 16
683   ret void
684 }
685
686 define void @splati_h(<8 x i16> * %ptr) {
687 entry:
688 ; CHECK-LABEL: splati_h:
689 ; CHECK: splati.h
690   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
691   %r = call <8 x i16> @llvm.mips.splati.h(<8 x i16> %a, i32 3)
692   store <8 x i16> %r, <8 x i16> * %ptr, align 16
693   ret void
694 }
695
696 define void @srai_h(<8 x i16> * %ptr) {
697 entry:
698 ; CHECK-LABEL: srai_h:
699 ; CHECK: srai.h
700   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
701   %r = call <8 x i16> @llvm.mips.srai.h(<8 x i16> %a, i32 3)
702   store <8 x i16> %r, <8 x i16> * %ptr, align 16
703   ret void
704 }
705
706 define void @srari_h(<8 x i16> * %ptr) {
707 entry:
708 ; CHECK-LABEL: srari_h:
709 ; CHECK: srari.h
710   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
711   %r = call <8 x i16> @llvm.mips.srari.h(<8 x i16> %a, i32 3)
712   store <8 x i16> %r, <8 x i16> * %ptr, align 16
713   ret void
714 }
715
716 define void @srli_h(<8 x i16> * %ptr) {
717 entry:
718 ; CHECK-LABEL: srli_h:
719 ; CHECK: srli.h
720   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
721   %r = call <8 x i16> @llvm.mips.srli.h(<8 x i16> %a, i32 3)
722   store <8 x i16> %r, <8 x i16> * %ptr, align 16
723   ret void
724 }
725
726 define void @srlri_h(<8 x i16> * %ptr) {
727 entry:
728 ; CHECK-LABEL: srlri_h:
729 ; CHECK: srlri.h
730   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
731   %r = call <8 x i16> @llvm.mips.srlri.h(<8 x i16> %a, i32 3)
732   store <8 x i16> %r, <8 x i16> * %ptr, align 16
733   ret void
734 }
735
736 define i32 @copy_s_b(<16 x i8> * %ptr) {
737 entry:
738 ; CHECK-LABEL: copy_s_b:
739 ; CHECK: copy_s.b
740   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
741   %r = call i32 @llvm.mips.copy.s.b(<16 x i8> %a, i32 1)
742   ret i32 %r
743 }
744 define i32 @copy_s_h(<8 x i16> * %ptr) {
745 entry:
746 ; CHECK-LABEL: copy_s_h:
747 ; CHECK: copy_s.h
748   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
749   %r = call i32 @llvm.mips.copy.s.h(<8 x i16> %a, i32 1)
750   ret i32 %r
751 }
752 define i32 @copy_s_w(<4 x i32> * %ptr) {
753 entry:
754 ; CHECK-LABEL: copy_s_w:
755 ; CHECK: copy_s.w
756   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
757   %r = call i32 @llvm.mips.copy.s.w(<4 x i32> %a, i32 1)
758   ret i32 %r
759 }
760 define i32 @copy_u_b(<16 x i8> * %ptr) {
761 entry:
762 ; CHECK-LABEL: copy_u_b:
763 ; CHECK: copy_u.b
764   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
765   %r = call i32 @llvm.mips.copy.u.b(<16 x i8> %a, i32 1)
766   ret i32 %r
767 }
768 define i32 @copy_u_h(<8 x i16> * %ptr) {
769 entry:
770 ; CHECK-LABEL: copy_u_h:
771 ; CHECK: copy_u.h
772   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
773   %r = call i32 @llvm.mips.copy.u.h(<8 x i16> %a, i32 1)
774   ret i32 %r
775 }
776 define i32 @copy_u_w(<4 x i32> * %ptr) {
777 entry:
778 ; CHECK-LABEL: copy_u_w:
779 ; MSA32: copy_s.w
780 ; MSA64: copy_u.w
781   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
782   %r = call i32 @llvm.mips.copy.u.w(<4 x i32> %a, i32 1)
783   ret i32 %r
784 }
785
786 define i64 @copy_s_d(<2 x i64> * %ptr) {
787 entry:
788 ; CHECK-LABEL: copy_s_d:
789 ; MSA32: copy_s.w
790 ; MSA32: copy_s.w
791 ; MSA64: copy_s.d
792   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
793   %r = call i64 @llvm.mips.copy.s.d(<2 x i64> %a, i32 1)
794   ret i64 %r
795 }
796
797 define i64 @copy_u_d(<2 x i64> * %ptr) {
798 entry:
799 ; CHECK-LABEL: copy_u_d:
800 ; MSA32: copy_s.w
801 ; MSA32: copy_s.w
802 ; MSA64: copy_s.d
803   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
804   %r = call i64 @llvm.mips.copy.u.d(<2 x i64> %a, i32 1)
805   ret i64 %r
806 }
807
808 define void @addvi_d(<2 x i64> * %ptr) {
809 entry:
810 ; CHECK-LABEL: addvi_d:
811 ; CHECK: addvi.d
812   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
813   %r = call <2 x i64> @llvm.mips.addvi.d(<2 x i64> %a, i32 25)
814   store <2 x i64> %r, <2 x i64> * %ptr, align 16
815   ret void
816 }
817
818 define void @bclri_d(<2 x i64> * %ptr) {
819 entry:
820 ; CHECK-LABEL: bclri_d:
821 ; CHECK: bclri.d
822   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
823   %r = call <2 x i64> @llvm.mips.bclri.d(<2 x i64> %a, i32 16)
824   store <2 x i64> %r, <2 x i64> * %ptr, align 16
825   ret void
826 }
827
828 define void @binsli_d(<2 x i64> * %ptr, <2 x i64> * %ptr2) {
829 entry:
830 ; CHECK-LABEL: binsli_d:
831 ; CHECK: binsli.d
832   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
833   %b = load <2 x i64>, <2 x i64> * %ptr2, align 16
834   %r = call <2 x i64> @llvm.mips.binsli.d(<2 x i64> %a, <2 x i64> %b, i32 4)
835   store <2 x i64> %r, <2 x i64> * %ptr, align 16
836   ret void
837 }
838
839 define void @binsri_d(<2 x i64> * %ptr, <2 x i64> * %ptr2) {
840 entry:
841 ; CHECK-LABEL: binsri_d:
842 ; CHECK: binsri.d
843   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
844   %b = load <2 x i64>, <2 x i64> * %ptr2, align 16
845   %r = call <2 x i64> @llvm.mips.binsri.d(<2 x i64> %a, <2 x i64> %b, i32 5)
846   store <2 x i64> %r, <2 x i64> * %ptr, align 16
847   ret void
848 }
849
850 define void @bnegi_d(<2 x i64> * %ptr) {
851 entry:
852 ; CHECK-LABEL: bnegi_d:
853 ; CHECK: bnegi.d
854   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
855   %r = call <2 x i64> @llvm.mips.bnegi.d(<2 x i64> %a, i32 9)
856   store <2 x i64> %r, <2 x i64> * %ptr, align 16
857   ret void
858 }
859
860 define void @bseti_d(<2 x i64> * %ptr) {
861 entry:
862 ; CHECK-LABEL: bseti_d:
863 ; CHECK: bseti.d
864   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
865   %r = call <2 x i64> @llvm.mips.bseti.d(<2 x i64> %a, i32 25)
866   store <2 x i64> %r, <2 x i64> * %ptr, align 16
867   ret void
868 }
869
870 define void @clei_s_d(<2 x i64> * %ptr) {
871 entry:
872 ; CHECK-LABEL: clei_s_d:
873 ; CHECK: clei_s.d
874   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
875   %r = call <2 x i64> @llvm.mips.clei.s.d(<2 x i64> %a, i32 15)
876   store <2 x i64> %r, <2 x i64> * %ptr, align 16
877   ret void
878 }
879
880 define void @clei_u_d(<2 x i64> * %ptr) {
881 entry:
882 ; CHECK-LABEL: clei_u_d:
883 ; CHECK: clei_u.d
884   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
885   %r = call <2 x i64> @llvm.mips.clei.u.d(<2 x i64> %a, i32 25)
886   store <2 x i64> %r, <2 x i64> * %ptr, align 16
887   ret void
888 }
889
890 define void @clti_s_d(<2 x i64> * %ptr) {
891 entry:
892 ; CHECK-LABEL: clti_s_d:
893 ; CHECK: clti_s.d
894   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
895   %r = call <2 x i64> @llvm.mips.clti.s.d(<2 x i64> %a, i32 15)
896   store <2 x i64> %r, <2 x i64> * %ptr, align 16
897   ret void
898 }
899
900 define void @clti_u_d(<2 x i64> * %ptr) {
901 entry:
902 ; CHECK-LABEL: clti_u_d:
903 ; CHECK: clti_u.d
904   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
905   %r = call <2 x i64> @llvm.mips.clti.u.d(<2 x i64> %a, i32 25)
906   store <2 x i64> %r, <2 x i64> * %ptr, align 16
907   ret void
908 }
909
910 define void @ldi_d(<2 x i64> * %ptr) {
911 entry:
912 ; CHECK-LABEL: ldi_d:
913 ; CHECK: ldi.d
914   %r = call <2 x i64> @llvm.mips.ldi.d(i32 3)
915   store <2 x i64> %r, <2 x i64> * %ptr, align 16
916   ret void
917 }
918
919 define void @maxi_s_d(<2 x i64> * %ptr) {
920 entry:
921 ; CHECK-LABEL: maxi_s_d:
922 ; CHECK: maxi_s.d
923   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
924   %r = call <2 x i64> @llvm.mips.maxi.s.d(<2 x i64> %a, i32 2)
925   store <2 x i64> %r, <2 x i64> * %ptr, align 16
926   ret void
927 }
928
929 define void @maxi_u_d(<2 x i64> * %ptr) {
930 entry:
931 ; CHECK-LABEL: maxi_u_d:
932 ; CHECK: maxi_u.d
933   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
934   %r = call <2 x i64> @llvm.mips.maxi.u.d(<2 x i64> %a, i32 2)
935   store <2 x i64> %r, <2 x i64> * %ptr, align 16
936   ret void
937 }
938
939 define void @mini_s_d(<2 x i64> * %ptr) {
940 entry:
941 ; CHECK-LABEL: mini_s_d:
942 ; CHECK: mini_s.d
943   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
944   %r = call <2 x i64> @llvm.mips.mini.s.d(<2 x i64> %a, i32 2)
945   store <2 x i64> %r, <2 x i64> * %ptr, align 16
946   ret void
947 }
948
949 define void @mini_u_d(<2 x i64> * %ptr) {
950 entry:
951 ; CHECK-LABEL: mini_u_d:
952 ; CHECK: mini_u.d
953   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
954   %r = call <2 x i64> @llvm.mips.mini.u.d(<2 x i64> %a, i32 2)
955   store <2 x i64> %r, <2 x i64> * %ptr, align 16
956   ret void
957 }
958
959 define void @sldi_d(<2 x i64> * %ptr) {
960 entry:
961 ; CHECK-LABEL: sldi_d:
962 ; CHECK: sldi.d
963   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
964   %r = call <2 x i64> @llvm.mips.sldi.d(<2 x i64> %a, <2 x i64> %a, i32 1)
965   store <2 x i64> %r, <2 x i64> * %ptr, align 16
966   ret void
967 }
968
969 define void @slli_d(<2 x i64> * %ptr) {
970 entry:
971 ; CHECK-LABEL: slli_d:
972 ; CHECK: slli.d
973   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
974   %r = call <2 x i64> @llvm.mips.slli.d(<2 x i64> %a, i32 3)
975   store <2 x i64> %r, <2 x i64> * %ptr, align 16
976   ret void
977 }
978
979 define void @srai_d(<2 x i64> * %ptr) {
980 entry:
981 ; CHECK-LABEL: srai_d:
982 ; CHECK: srai.d
983   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
984   %r = call <2 x i64> @llvm.mips.srai.d(<2 x i64> %a, i32 3)
985   store <2 x i64> %r, <2 x i64> * %ptr, align 16
986   ret void
987 }
988
989 define void @srari_d(<2 x i64> * %ptr) {
990 entry:
991 ; CHECK-LABEL: srari_d:
992 ; CHECK: srari.d
993   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
994   %r = call <2 x i64> @llvm.mips.srari.d(<2 x i64> %a, i32 3)
995   store <2 x i64> %r, <2 x i64> * %ptr, align 16
996   ret void
997 }
998
999 define void @srli_d(<2 x i64> * %ptr) {
1000 entry:
1001 ; CHECK-LABEL: srli_d:
1002 ; CHECK: srli.d
1003   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
1004   %r = call <2 x i64> @llvm.mips.srli.d(<2 x i64> %a, i32 3)
1005   store <2 x i64> %r, <2 x i64> * %ptr, align 16
1006   ret void
1007 }
1008
1009 define void @srlri_d(<2 x i64> * %ptr) {
1010 entry:
1011 ; CHECK-LABEL: srlri_d:
1012 ; CHECK: srlri.d
1013   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
1014   %r = call <2 x i64> @llvm.mips.srlri.d(<2 x i64> %a, i32 3)
1015   store <2 x i64> %r, <2 x i64> * %ptr, align 16
1016   ret void
1017 }
1018
1019 define void @ld_d2(<2 x i64> * %ptr, i8 * %ldptr) {
1020 entry:
1021 ; CHECK-LABEL: ld_d2
1022 ; MSA32: addiu $[[R0:[0-9]]], $5, 4096
1023 ; MSA64N32: sll $[[R1:[0-9]]], $5, 0
1024 ; MSA64N32: addiu $[[R0:[0-9]]], $[[R1]], 4096
1025 ; MSA64N64: daddiu $[[R0:[0-9]]], $5, 4096
1026 ; CHECK: ld.d $w{{[0-9]+}}, 0($[[R0]])
1027   %a = call <2 x i64> @llvm.mips.ld.d(i8* %ldptr, i32 4096)
1028   store <2 x i64> %a, <2 x i64> * %ptr, align 16
1029   ret void
1030 }
1031
1032 declare <8 x i16> @llvm.mips.ldi.h(i32)
1033 declare <8 x i16> @llvm.mips.addvi.h(<8 x i16>, i32)
1034 declare <8 x i16> @llvm.mips.bclri.h(<8 x i16>, i32)
1035 declare <8 x i16> @llvm.mips.binsli.h(<8 x i16>, <8 x i16>, i32)
1036 declare <8 x i16> @llvm.mips.binsri.h(<8 x i16>, <8 x i16>, i32)
1037 declare <8 x i16> @llvm.mips.bnegi.h(<8 x i16>, i32)
1038 declare <8 x i16> @llvm.mips.bseti.h(<8 x i16>, i32)
1039 declare <8 x i16> @llvm.mips.clei.s.h(<8 x i16>, i32)
1040 declare <8 x i16> @llvm.mips.clei.u.h(<8 x i16>, i32)
1041 declare <8 x i16> @llvm.mips.clti.s.h(<8 x i16>, i32)
1042 declare <8 x i16> @llvm.mips.clti.u.h(<8 x i16>, i32)
1043 declare <8 x i16> @llvm.mips.maxi.s.h(<8 x i16>, i32)
1044 declare <8 x i16> @llvm.mips.maxi.u.h(<8 x i16>, i32)
1045 declare <8 x i16> @llvm.mips.mini.s.h(<8 x i16>, i32)
1046 declare <8 x i16> @llvm.mips.mini.u.h(<8 x i16>, i32)
1047 declare <8 x i16> @llvm.mips.sldi.h(<8 x i16>, <8 x i16>, i32)
1048 declare <8 x i16> @llvm.mips.slli.h(<8 x i16>, i32)
1049 declare <8 x i16> @llvm.mips.splati.h(<8 x i16>, i32)
1050 declare <8 x i16> @llvm.mips.srai.h(<8 x i16>, i32)
1051 declare <8 x i16> @llvm.mips.srari.h(<8 x i16>, i32)
1052 declare <8 x i16> @llvm.mips.srli.h(<8 x i16>, i32)
1053 declare <8 x i16> @llvm.mips.srlri.h(<8 x i16>, i32)
1054 declare <4 x i32> @llvm.mips.addvi.w(<4 x i32>, i32)
1055 declare <4 x i32> @llvm.mips.bclri.w(<4 x i32>, i32)
1056 declare <4 x i32> @llvm.mips.binsli.w(<4 x i32>, <4 x i32>, i32)
1057 declare <4 x i32> @llvm.mips.binsri.w(<4 x i32>, <4 x i32>, i32)
1058 declare <4 x i32> @llvm.mips.bnegi.w(<4 x i32>, i32)
1059 declare <4 x i32> @llvm.mips.bseti.w(<4 x i32>, i32)
1060 declare <4 x i32> @llvm.mips.ldi.w(i32)
1061 declare <4 x i32> @llvm.mips.clei.s.w(<4 x i32>, i32)
1062 declare <4 x i32> @llvm.mips.clei.u.w(<4 x i32>, i32)
1063 declare <4 x i32> @llvm.mips.clti.s.w(<4 x i32>, i32)
1064 declare <4 x i32> @llvm.mips.clti.u.w(<4 x i32>, i32)
1065 declare <4 x i32> @llvm.mips.maxi.s.w(<4 x i32>, i32)
1066 declare <4 x i32> @llvm.mips.maxi.u.w(<4 x i32>, i32)
1067 declare <4 x i32> @llvm.mips.mini.s.w(<4 x i32>, i32)
1068 declare <4 x i32> @llvm.mips.mini.u.w(<4 x i32>, i32)
1069 declare <4 x i32> @llvm.mips.sldi.w(<4 x i32>, <4 x i32>, i32)
1070 declare <4 x i32> @llvm.mips.slli.w(<4 x i32>, i32)
1071 declare <4 x i32> @llvm.mips.splati.w(<4 x i32>, i32)
1072 declare <4 x i32> @llvm.mips.srai.w(<4 x i32>, i32)
1073 declare <4 x i32> @llvm.mips.srari.w(<4 x i32>, i32)
1074 declare <4 x i32> @llvm.mips.srli.w(<4 x i32>, i32)
1075 declare <4 x i32> @llvm.mips.srlri.w(<4 x i32>, i32)
1076 declare <2 x i64> @llvm.mips.ldi.d(i32)
1077 declare <2 x i64> @llvm.mips.addvi.d(<2 x i64>, i32)
1078 declare <2 x i64> @llvm.mips.bclri.d(<2 x i64>, i32)
1079 declare <2 x i64> @llvm.mips.binsli.d(<2 x i64>, <2 x i64>, i32)
1080 declare <2 x i64> @llvm.mips.binsri.d(<2 x i64>, <2 x i64>, i32)
1081 declare <2 x i64> @llvm.mips.bnegi.d(<2 x i64>, i32)
1082 declare <2 x i64> @llvm.mips.bseti.d(<2 x i64>, i32)
1083 declare <2 x i64> @llvm.mips.clei.s.d(<2 x i64>, i32)
1084 declare <2 x i64> @llvm.mips.clei.u.d(<2 x i64>, i32)
1085 declare <2 x i64> @llvm.mips.clti.s.d(<2 x i64>, i32)
1086 declare <2 x i64> @llvm.mips.clti.u.d(<2 x i64>, i32)
1087 declare <2 x i64> @llvm.mips.maxi.s.d(<2 x i64>, i32)
1088 declare <2 x i64> @llvm.mips.maxi.u.d(<2 x i64>, i32)
1089 declare <2 x i64> @llvm.mips.mini.s.d(<2 x i64>, i32)
1090 declare <2 x i64> @llvm.mips.mini.u.d(<2 x i64>, i32)
1091 declare <2 x i64> @llvm.mips.sldi.d(<2 x i64>, <2 x i64>, i32)
1092 declare <2 x i64> @llvm.mips.slli.d(<2 x i64>, i32)
1093 declare <2 x i64> @llvm.mips.splati.d(<2 x i64>, i32)
1094 declare <2 x i64> @llvm.mips.srai.d(<2 x i64>, i32)
1095 declare <2 x i64> @llvm.mips.srari.d(<2 x i64>, i32)
1096 declare <2 x i64> @llvm.mips.srli.d(<2 x i64>, i32)
1097 declare <2 x i64> @llvm.mips.srlri.d(<2 x i64>, i32)
1098 declare <16 x i8> @llvm.mips.ldi.b(i32)
1099 declare <16 x i8> @llvm.mips.addvi.b(<16 x i8>, i32)
1100 declare <16 x i8> @llvm.mips.andi.b(<16 x i8>, i32)
1101 declare <16 x i8> @llvm.mips.bclri.b(<16 x i8>, i32)
1102 declare <16 x i8> @llvm.mips.binsli.b(<16 x i8>, <16 x i8>, i32)
1103 declare <16 x i8> @llvm.mips.binsri.b(<16 x i8>, <16 x i8>, i32)
1104 declare <16 x i8> @llvm.mips.bmnzi.b(<16 x i8>, <16 x i8>, i32)
1105 declare <16 x i8> @llvm.mips.bnegi.b(<16 x i8>, i32)
1106 declare <16 x i8> @llvm.mips.bseli.b(<16 x i8>, <16 x i8>, i32)
1107 declare <16 x i8> @llvm.mips.bseti.b(<16 x i8>, i32)
1108 declare <16 x i8> @llvm.mips.clei.s.b(<16 x i8>, i32)
1109 declare <16 x i8> @llvm.mips.clei.u.b(<16 x i8>, i32)
1110 declare <16 x i8> @llvm.mips.clti.s.b(<16 x i8>, i32)
1111 declare <16 x i8> @llvm.mips.clti.u.b(<16 x i8>, i32)
1112 declare <16 x i8> @llvm.mips.maxi.s.b(<16 x i8>, i32)
1113 declare <16 x i8> @llvm.mips.maxi.u.b(<16 x i8>, i32)
1114 declare <16 x i8> @llvm.mips.mini.s.b(<16 x i8>, i32)
1115 declare <16 x i8> @llvm.mips.mini.u.b(<16 x i8>, i32)
1116 declare <16 x i8> @llvm.mips.nori.b(<16 x i8>, i32)
1117 declare <16 x i8> @llvm.mips.ori.b(<16 x i8>, i32)
1118 declare <16 x i8> @llvm.mips.sldi.b(<16 x i8>, <16 x i8>, i32)
1119 declare <16 x i8> @llvm.mips.slli.b(<16 x i8>, i32)
1120 declare <16 x i8> @llvm.mips.splati.b(<16 x i8>, i32)
1121 declare <16 x i8> @llvm.mips.srai.b(<16 x i8>, i32)
1122 declare <16 x i8> @llvm.mips.srari.b(<16 x i8>, i32)
1123 declare <16 x i8> @llvm.mips.srli.b(<16 x i8>, i32)
1124 declare <16 x i8> @llvm.mips.srlri.b(<16 x i8>, i32)
1125 declare i32 @llvm.mips.copy.s.h(<8 x i16>, i32)
1126 declare i32 @llvm.mips.copy.u.h(<8 x i16>, i32)
1127 declare i32 @llvm.mips.copy.s.w(<4 x i32>, i32)
1128 declare i32 @llvm.mips.copy.u.w(<4 x i32>, i32)
1129 declare i64 @llvm.mips.copy.s.d(<2 x i64>, i32)
1130 declare i64 @llvm.mips.copy.u.d(<2 x i64>, i32)
1131 declare i32 @llvm.mips.copy.s.b(<16 x i8>, i32)
1132 declare i32 @llvm.mips.copy.u.b(<16 x i8>, i32)
1133 declare <16 x i8> @llvm.mips.bmzi.b(<16 x i8>, <16 x i8>, i32)
1134 declare <16 x i8> @llvm.mips.ld.b(i8*, i32)
1135 declare <8 x i16> @llvm.mips.ld.h(i8*, i32)
1136 declare <4 x i32> @llvm.mips.ld.w(i8*, i32)
1137 declare <2 x i64> @llvm.mips.ld.d(i8*, i32)
1138 declare void @llvm.mips.st.b(<16 x i8>, i8*, i32)
1139 declare void @llvm.mips.st.h(<8 x i16>, i8*, i32)
1140 declare void @llvm.mips.st.w(<4 x i32>, i8*, i32)
1141 declare void @llvm.mips.st.d(<2 x i64>, i8*, i32)