• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
7
8; Test that the immediate intrinsics don't crash LLVM.
9
10; Some of the intrinsics lower to equivalent forms.
11
12define void @addvi_b(<16 x i8> * %ptr) {
13entry:
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
20}
21
22define void @andi_b(<16 x i8> * %ptr) {
23entry:
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
30}
31
32define void @bclri_b(<16 x i8> * %ptr) {
33entry:
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
40}
41
42define void @binsli_b(<16 x i8> * %ptr, <16 x i8> * %ptr2) {
43entry:
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
51}
52
53define void @binsri_b(<16 x i8> * %ptr, <16 x i8> * %ptr2) {
54entry:
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
62}
63
64define void @bmnzi_b(<16 x i8> * %ptr, <16 x i8> * %ptr2) {
65entry:
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
73}
74
75define void @bmzi_b(<16 x i8> * %ptr, <16 x i8> * %ptr2) {
76entry:
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
84}
85
86define void @bnegi_b(<16 x i8> * %ptr) {
87entry:
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
94}
95
96define void @bseli_b(<16 x i8> * %ptr) {
97entry:
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
104}
105
106define void @bseti_b(<16 x i8> * %ptr) {
107entry:
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
114}
115
116define void @clei_s_b(<16 x i8> * %ptr) {
117entry:
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
124}
125
126define void @clei_u_b(<16 x i8> * %ptr) {
127entry:
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
134}
135
136define void @clti_s_b(<16 x i8> * %ptr) {
137entry:
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
144}
145
146define void @clti_u_b(<16 x i8> * %ptr) {
147entry:
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
154}
155
156define void @ldi_b(<16 x i8> * %ptr) {
157entry:
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
163}
164
165define void @maxi_s_b(<16 x i8> * %ptr) {
166entry:
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
173}
174
175define void @maxi_u_b(<16 x i8> * %ptr) {
176entry:
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
183}
184
185define void @mini_s_b(<16 x i8> * %ptr) {
186entry:
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
193}
194
195define void @mini_u_b(<16 x i8> * %ptr) {
196entry:
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
203}
204
205define void @nori_b(<16 x i8> * %ptr) {
206entry:
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
213}
214
215define void @ori_b(<16 x i8> * %ptr) {
216entry:
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
223}
224
225define void @sldi_b(<16 x i8> * %ptr) {
226entry:
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
233}
234
235define void @slli_b(<16 x i8> * %ptr) {
236entry:
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
243}
244
245define void @splati_b(<16 x i8> * %ptr) {
246entry:
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
253}
254
255define void @srai_b(<16 x i8> * %ptr) {
256entry:
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
263}
264
265define void @srari_b(<16 x i8> * %ptr) {
266entry:
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
273}
274
275define void @srli_b(<16 x i8> * %ptr) {
276entry:
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
283}
284
285define void @srlri_b(<16 x i8> * %ptr) {
286entry:
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
293}
294
295define void @addvi_w(<4 x i32> * %ptr) {
296entry:
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
303}
304
305define void @bclri_w(<4 x i32> * %ptr) {
306entry:
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
313}
314
315define void @binsli_w(<4 x i32> * %ptr, <4 x i32> * %ptr2) {
316entry:
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
324}
325
326define void @binsri_w(<4 x i32> * %ptr, <4 x i32> * %ptr2) {
327entry:
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
335}
336
337define void @bnegi_w(<4 x i32> * %ptr) {
338entry:
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
345}
346
347define void @bseti_w(<4 x i32> * %ptr) {
348entry:
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
355}
356
357define void @clei_s_w(<4 x i32> * %ptr) {
358entry:
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
365}
366
367define void @clei_u_w(<4 x i32> * %ptr) {
368entry:
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
375}
376
377define void @clti_s_w(<4 x i32> * %ptr) {
378entry:
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
385}
386
387define void @clti_u_w(<4 x i32> * %ptr) {
388entry:
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
395}
396
397define void @maxi_s_w(<4 x i32> * %ptr) {
398entry:
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
405}
406
407define void @maxi_u_w(<4 x i32> * %ptr) {
408entry:
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
415}
416
417define void @mini_s_w(<4 x i32> * %ptr) {
418entry:
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
425}
426
427define void @mini_u_w(<4 x i32> * %ptr) {
428entry:
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
435}
436
437define void @ldi_w(<4 x i32> * %ptr) {
438entry:
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
444}
445
446define void @sldi_w(<4 x i32> * %ptr) {
447entry:
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
454}
455
456define void @slli_w(<4 x i32> * %ptr) {
457entry:
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
464}
465
466define void @splati_w(<4 x i32> * %ptr) {
467entry:
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
474}
475
476define void @srai_w(<4 x i32> * %ptr) {
477entry:
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
484}
485
486define void @srari_w(<4 x i32> * %ptr) {
487entry:
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
494}
495
496define void @srli_w(<4 x i32> * %ptr) {
497entry:
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
504}
505
506define void @srlri_w(<4 x i32> * %ptr) {
507entry:
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
514}
515
516define void @addvi_h(<8 x i16> * %ptr) {
517entry:
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
524}
525
526define void @bclri_h(<8 x i16> * %ptr) {
527entry:
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
534}
535
536define void @binsli_h(<8 x i16> * %ptr, <8 x i16> * %ptr2) {
537entry:
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
545}
546
547define void @binsri_h(<8 x i16> * %ptr, <8 x i16> * %ptr2) {
548entry:
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
556}
557
558define void @bnegi_h(<8 x i16> * %ptr) {
559entry:
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
566}
567
568define void @bseti_h(<8 x i16> * %ptr) {
569entry:
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
576}
577
578define void @clei_s_h(<8 x i16> * %ptr) {
579entry:
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
586}
587
588define void @clei_u_h(<8 x i16> * %ptr) {
589entry:
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
596}
597
598define void @clti_s_h(<8 x i16> * %ptr) {
599entry:
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
606}
607
608define void @clti_u_h(<8 x i16> * %ptr) {
609entry:
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
616}
617
618define void @maxi_s_h(<8 x i16> * %ptr) {
619entry:
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
626}
627
628define void @maxi_u_h(<8 x i16> * %ptr) {
629entry:
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
636}
637
638define void @mini_s_h(<8 x i16> * %ptr) {
639entry:
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
646}
647
648define void @mini_u_h(<8 x i16> * %ptr) {
649entry:
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
656}
657
658define void @ldi_h(<8 x i16> * %ptr) {
659entry:
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
665}
666
667define void @sldi_h(<8 x i16> * %ptr) {
668entry:
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
675}
676
677define void @slli_h(<8 x i16> * %ptr) {
678entry:
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
685}
686
687define void @splati_h(<8 x i16> * %ptr) {
688entry:
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
695}
696
697define void @srai_h(<8 x i16> * %ptr) {
698entry:
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
705}
706
707define void @srari_h(<8 x i16> * %ptr) {
708entry:
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
715}
716
717define void @srli_h(<8 x i16> * %ptr) {
718entry:
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
725}
726
727define void @srlri_h(<8 x i16> * %ptr) {
728entry:
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
735}
736
737define i32 @copy_s_b(<16 x i8> * %ptr) {
738entry:
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
744}
745define i32 @copy_s_h(<8 x i16> * %ptr) {
746entry:
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
752}
753define i32 @copy_s_w(<4 x i32> * %ptr) {
754entry:
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
760}
761define i32 @copy_u_b(<16 x i8> * %ptr) {
762entry:
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
768}
769define i32 @copy_u_h(<8 x i16> * %ptr) {
770entry:
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
776}
777define i32 @copy_u_w(<4 x i32> * %ptr) {
778entry:
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
785}
786
787define i64 @copy_s_d(<2 x i64> * %ptr) {
788entry:
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
796}
797
798define i64 @copy_u_d(<2 x i64> * %ptr) {
799entry:
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
807}
808
809define void @addvi_d(<2 x i64> * %ptr) {
810entry:
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
817}
818
819define void @bclri_d(<2 x i64> * %ptr) {
820entry:
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
827}
828
829define void @binsli_d(<2 x i64> * %ptr, <2 x i64> * %ptr2) {
830entry:
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
838}
839
840define void @binsri_d(<2 x i64> * %ptr, <2 x i64> * %ptr2) {
841entry:
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
849}
850
851define void @bnegi_d(<2 x i64> * %ptr) {
852entry:
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
859}
860
861define void @bseti_d(<2 x i64> * %ptr) {
862entry:
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
869}
870
871define void @clei_s_d(<2 x i64> * %ptr) {
872entry:
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
879}
880
881define void @clei_u_d(<2 x i64> * %ptr) {
882entry:
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
889}
890
891define void @clti_s_d(<2 x i64> * %ptr) {
892entry:
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
899}
900
901define void @clti_u_d(<2 x i64> * %ptr) {
902entry:
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
909}
910
911define void @ldi_d(<2 x i64> * %ptr) {
912entry:
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
918}
919
920define void @maxi_s_d(<2 x i64> * %ptr) {
921entry:
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
928}
929
930define void @maxi_u_d(<2 x i64> * %ptr) {
931entry:
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
938}
939
940define void @mini_s_d(<2 x i64> * %ptr) {
941entry:
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
948}
949
950define void @mini_u_d(<2 x i64> * %ptr) {
951entry:
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
958}
959
960define void @sldi_d(<2 x i64> * %ptr) {
961entry:
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
968}
969
970define void @slli_d(<2 x i64> * %ptr) {
971entry:
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
978}
979
980define void @srai_d(<2 x i64> * %ptr) {
981entry:
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
988}
989
990define void @srari_d(<2 x i64> * %ptr) {
991entry:
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
998}
999
1000define void @srli_d(<2 x i64> * %ptr) {
1001entry:
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
1008}
1009
1010define void @srlri_d(<2 x i64> * %ptr) {
1011entry:
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
1018}
1019
1020define void @ld_d2(<2 x i64> * %ptr, i8 * %ldptr) {
1021entry:
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
1031}
1032
1033declare <8 x i16> @llvm.mips.ldi.h(i32)
1034declare <8 x i16> @llvm.mips.addvi.h(<8 x i16>, i32)
1035declare <8 x i16> @llvm.mips.bclri.h(<8 x i16>, i32)
1036declare <8 x i16> @llvm.mips.binsli.h(<8 x i16>, <8 x i16>, i32)
1037declare <8 x i16> @llvm.mips.binsri.h(<8 x i16>, <8 x i16>, i32)
1038declare <8 x i16> @llvm.mips.bnegi.h(<8 x i16>, i32)
1039declare <8 x i16> @llvm.mips.bseti.h(<8 x i16>, i32)
1040declare <8 x i16> @llvm.mips.clei.s.h(<8 x i16>, i32)
1041declare <8 x i16> @llvm.mips.clei.u.h(<8 x i16>, i32)
1042declare <8 x i16> @llvm.mips.clti.s.h(<8 x i16>, i32)
1043declare <8 x i16> @llvm.mips.clti.u.h(<8 x i16>, i32)
1044declare <8 x i16> @llvm.mips.maxi.s.h(<8 x i16>, i32)
1045declare <8 x i16> @llvm.mips.maxi.u.h(<8 x i16>, i32)
1046declare <8 x i16> @llvm.mips.mini.s.h(<8 x i16>, i32)
1047declare <8 x i16> @llvm.mips.mini.u.h(<8 x i16>, i32)
1048declare <8 x i16> @llvm.mips.sldi.h(<8 x i16>, <8 x i16>, i32)
1049declare <8 x i16> @llvm.mips.slli.h(<8 x i16>, i32)
1050declare <8 x i16> @llvm.mips.splati.h(<8 x i16>, i32)
1051declare <8 x i16> @llvm.mips.srai.h(<8 x i16>, i32)
1052declare <8 x i16> @llvm.mips.srari.h(<8 x i16>, i32)
1053declare <8 x i16> @llvm.mips.srli.h(<8 x i16>, i32)
1054declare <8 x i16> @llvm.mips.srlri.h(<8 x i16>, i32)
1055declare <4 x i32> @llvm.mips.addvi.w(<4 x i32>, i32)
1056declare <4 x i32> @llvm.mips.bclri.w(<4 x i32>, i32)
1057declare <4 x i32> @llvm.mips.binsli.w(<4 x i32>, <4 x i32>, i32)
1058declare <4 x i32> @llvm.mips.binsri.w(<4 x i32>, <4 x i32>, i32)
1059declare <4 x i32> @llvm.mips.bnegi.w(<4 x i32>, i32)
1060declare <4 x i32> @llvm.mips.bseti.w(<4 x i32>, i32)
1061declare <4 x i32> @llvm.mips.ldi.w(i32)
1062declare <4 x i32> @llvm.mips.clei.s.w(<4 x i32>, i32)
1063declare <4 x i32> @llvm.mips.clei.u.w(<4 x i32>, i32)
1064declare <4 x i32> @llvm.mips.clti.s.w(<4 x i32>, i32)
1065declare <4 x i32> @llvm.mips.clti.u.w(<4 x i32>, i32)
1066declare <4 x i32> @llvm.mips.maxi.s.w(<4 x i32>, i32)
1067declare <4 x i32> @llvm.mips.maxi.u.w(<4 x i32>, i32)
1068declare <4 x i32> @llvm.mips.mini.s.w(<4 x i32>, i32)
1069declare <4 x i32> @llvm.mips.mini.u.w(<4 x i32>, i32)
1070declare <4 x i32> @llvm.mips.sldi.w(<4 x i32>, <4 x i32>, i32)
1071declare <4 x i32> @llvm.mips.slli.w(<4 x i32>, i32)
1072declare <4 x i32> @llvm.mips.splati.w(<4 x i32>, i32)
1073declare <4 x i32> @llvm.mips.srai.w(<4 x i32>, i32)
1074declare <4 x i32> @llvm.mips.srari.w(<4 x i32>, i32)
1075declare <4 x i32> @llvm.mips.srli.w(<4 x i32>, i32)
1076declare <4 x i32> @llvm.mips.srlri.w(<4 x i32>, i32)
1077declare <2 x i64> @llvm.mips.ldi.d(i32)
1078declare <2 x i64> @llvm.mips.addvi.d(<2 x i64>, i32)
1079declare <2 x i64> @llvm.mips.bclri.d(<2 x i64>, i32)
1080declare <2 x i64> @llvm.mips.binsli.d(<2 x i64>, <2 x i64>, i32)
1081declare <2 x i64> @llvm.mips.binsri.d(<2 x i64>, <2 x i64>, i32)
1082declare <2 x i64> @llvm.mips.bnegi.d(<2 x i64>, i32)
1083declare <2 x i64> @llvm.mips.bseti.d(<2 x i64>, i32)
1084declare <2 x i64> @llvm.mips.clei.s.d(<2 x i64>, i32)
1085declare <2 x i64> @llvm.mips.clei.u.d(<2 x i64>, i32)
1086declare <2 x i64> @llvm.mips.clti.s.d(<2 x i64>, i32)
1087declare <2 x i64> @llvm.mips.clti.u.d(<2 x i64>, i32)
1088declare <2 x i64> @llvm.mips.maxi.s.d(<2 x i64>, i32)
1089declare <2 x i64> @llvm.mips.maxi.u.d(<2 x i64>, i32)
1090declare <2 x i64> @llvm.mips.mini.s.d(<2 x i64>, i32)
1091declare <2 x i64> @llvm.mips.mini.u.d(<2 x i64>, i32)
1092declare <2 x i64> @llvm.mips.sldi.d(<2 x i64>, <2 x i64>, i32)
1093declare <2 x i64> @llvm.mips.slli.d(<2 x i64>, i32)
1094declare <2 x i64> @llvm.mips.splati.d(<2 x i64>, i32)
1095declare <2 x i64> @llvm.mips.srai.d(<2 x i64>, i32)
1096declare <2 x i64> @llvm.mips.srari.d(<2 x i64>, i32)
1097declare <2 x i64> @llvm.mips.srli.d(<2 x i64>, i32)
1098declare <2 x i64> @llvm.mips.srlri.d(<2 x i64>, i32)
1099declare <16 x i8> @llvm.mips.ldi.b(i32)
1100declare <16 x i8> @llvm.mips.addvi.b(<16 x i8>, i32)
1101declare <16 x i8> @llvm.mips.andi.b(<16 x i8>, i32)
1102declare <16 x i8> @llvm.mips.bclri.b(<16 x i8>, i32)
1103declare <16 x i8> @llvm.mips.binsli.b(<16 x i8>, <16 x i8>, i32)
1104declare <16 x i8> @llvm.mips.binsri.b(<16 x i8>, <16 x i8>, i32)
1105declare <16 x i8> @llvm.mips.bmnzi.b(<16 x i8>, <16 x i8>, i32)
1106declare <16 x i8> @llvm.mips.bnegi.b(<16 x i8>, i32)
1107declare <16 x i8> @llvm.mips.bseli.b(<16 x i8>, <16 x i8>, i32)
1108declare <16 x i8> @llvm.mips.bseti.b(<16 x i8>, i32)
1109declare <16 x i8> @llvm.mips.clei.s.b(<16 x i8>, i32)
1110declare <16 x i8> @llvm.mips.clei.u.b(<16 x i8>, i32)
1111declare <16 x i8> @llvm.mips.clti.s.b(<16 x i8>, i32)
1112declare <16 x i8> @llvm.mips.clti.u.b(<16 x i8>, i32)
1113declare <16 x i8> @llvm.mips.maxi.s.b(<16 x i8>, i32)
1114declare <16 x i8> @llvm.mips.maxi.u.b(<16 x i8>, i32)
1115declare <16 x i8> @llvm.mips.mini.s.b(<16 x i8>, i32)
1116declare <16 x i8> @llvm.mips.mini.u.b(<16 x i8>, i32)
1117declare <16 x i8> @llvm.mips.nori.b(<16 x i8>, i32)
1118declare <16 x i8> @llvm.mips.ori.b(<16 x i8>, i32)
1119declare <16 x i8> @llvm.mips.sldi.b(<16 x i8>, <16 x i8>, i32)
1120declare <16 x i8> @llvm.mips.slli.b(<16 x i8>, i32)
1121declare <16 x i8> @llvm.mips.splati.b(<16 x i8>, i32)
1122declare <16 x i8> @llvm.mips.srai.b(<16 x i8>, i32)
1123declare <16 x i8> @llvm.mips.srari.b(<16 x i8>, i32)
1124declare <16 x i8> @llvm.mips.srli.b(<16 x i8>, i32)
1125declare <16 x i8> @llvm.mips.srlri.b(<16 x i8>, i32)
1126declare i32 @llvm.mips.copy.s.h(<8 x i16>, i32)
1127declare i32 @llvm.mips.copy.u.h(<8 x i16>, i32)
1128declare i32 @llvm.mips.copy.s.w(<4 x i32>, i32)
1129declare i32 @llvm.mips.copy.u.w(<4 x i32>, i32)
1130declare i64 @llvm.mips.copy.s.d(<2 x i64>, i32)
1131declare i64 @llvm.mips.copy.u.d(<2 x i64>, i32)
1132declare i32 @llvm.mips.copy.s.b(<16 x i8>, i32)
1133declare i32 @llvm.mips.copy.u.b(<16 x i8>, i32)
1134declare <16 x i8> @llvm.mips.bmzi.b(<16 x i8>, <16 x i8>, i32)
1135declare <16 x i8> @llvm.mips.ld.b(i8*, i32)
1136declare <8 x i16> @llvm.mips.ld.h(i8*, i32)
1137declare <4 x i32> @llvm.mips.ld.w(i8*, i32)
1138declare <2 x i64> @llvm.mips.ld.d(i8*, i32)
1139declare void @llvm.mips.st.b(<16 x i8>, i8*, i32)
1140declare void @llvm.mips.st.h(<8 x i16>, i8*, i32)
1141declare void @llvm.mips.st.w(<4 x i32>, i8*, i32)
1142declare void @llvm.mips.st.d(<2 x i64>, i8*, i32)
1143