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