Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / Mips / msa / immediates-bad.ll
blobbbb76f3b8b6bfdeb2b9643858da0c45524420bfb
1 ; RUN: not --crash llc -march=mips -mattr=+msa,+fp64,+mips32r2 -relocation-model=pic < %s 2> %t1
2 ; RUN: FileCheck %s < %t1
4 ; Test that the immediate intrinsics with out of range values trigger an error.
7 define void @binsli_b(ptr %ptr) {
8 entry:
9   %a = load <16 x i8>, ptr %ptr, align 16
10   %r = call <16 x i8> @llvm.mips.binsli.b(<16 x i8> %a, <16 x i8> %a, i32 65)
11   store <16 x i8> %r, ptr %ptr, align 16
12   ret void
14 ; CHECK: LLVM ERROR: Immediate out of range
16 define void @binsri_b(ptr %ptr) {
17 entry:
18   %a = load <16 x i8>, ptr %ptr, align 16
19   %r = call <16 x i8> @llvm.mips.binsri.b(<16 x i8> %a, <16 x i8> %a, i32 5)
20   store <16 x i8> %r, ptr %ptr, align 16
21   ret void
24 define void @bmnzi_b(ptr %ptr) {
25 entry:
26   %a = load <16 x i8>, ptr %ptr, align 16
27   %r = call <16 x i8> @llvm.mips.bmnzi.b(<16 x i8> %a, <16 x i8> %a, i32 63)
28   store <16 x i8> %r, ptr %ptr, align 16
29   ret void
32 define void @bmzi_b(ptr %ptr) {
33 entry:
34   %a = load <16 x i8>, ptr %ptr, align 16
35   %r = call <16 x i8> @llvm.mips.bmzi.b(<16 x i8> %a, <16 x i8> %a, i32 63)
36   store <16 x i8> %r, ptr %ptr, align 16
37   ret void
40 define void @bnegi_b(ptr %ptr) {
41 entry:
42   %a = load <16 x i8>, ptr %ptr, align 16
43   %r = call <16 x i8> @llvm.mips.bnegi.b(<16 x i8> %a, i32 6)
44   store <16 x i8> %r, ptr %ptr, align 16
45   ret void
48 define void @bseli_b(ptr %ptr) {
49 entry:
50   %a = load <16 x i8>, ptr %ptr, align 16
51   %r = call <16 x i8> @llvm.mips.bseli.b(<16 x i8> %a, <16 x i8> %a, i32 63)
52   store <16 x i8> %r, ptr %ptr, align 16
53   ret void
56 define void @bseti_b(ptr %ptr) {
57 entry:
58   %a = load <16 x i8>, ptr %ptr, align 16
59   %r = call <16 x i8> @llvm.mips.bseti.b(<16 x i8> %a, i32 9)
60   store <16 x i8> %r, ptr %ptr, align 16
61   ret void
64 define void @clei_s_b(ptr %ptr) {
65 entry:
66   %a = load <16 x i8>, ptr %ptr, align 16
67   %r = call <16 x i8> @llvm.mips.clei.s.b(<16 x i8> %a, i32 152)
68   store <16 x i8> %r, ptr %ptr, align 16
69   ret void
72 define void @clei_u_b(ptr %ptr) {
73 entry:
74   %a = load <16 x i8>, ptr %ptr, align 16
75   %r = call <16 x i8> @llvm.mips.clei.u.b(<16 x i8> %a, i32 163)
76   store <16 x i8> %r, ptr %ptr, align 16
77   ret void
80 define void @clti_s_b(ptr %ptr) {
81 entry:
82   %a = load <16 x i8>, ptr %ptr, align 16
83   %r = call <16 x i8> @llvm.mips.clti.s.b(<16 x i8> %a, i32 129)
84   store <16 x i8> %r, ptr %ptr, align 16
85   ret void
88 define void @clti_u_b(ptr %ptr) {
89 entry:
90   %a = load <16 x i8>, ptr %ptr, align 16
91   %r = call <16 x i8> @llvm.mips.clti.u.b(<16 x i8> %a, i32 163)
92   store <16 x i8> %r, ptr %ptr, align 16
93   ret void
96 define void @ldi_b(ptr %ptr) {
97 entry:
98   %r = call <16 x i8> @llvm.mips.ldi.b(i32 1025)
99   store <16 x i8> %r, ptr %ptr, align 16
100   ret void
103 define void @maxi_s_b(ptr %ptr) {
104 entry:
105   %a = load <16 x i8>, ptr %ptr, align 16
106   %r = call <16 x i8> @llvm.mips.maxi.s.b(<16 x i8> %a, i32 163)
107   store <16 x i8> %r, ptr %ptr, align 16
108   ret void
111 define void @maxi_u_b(ptr %ptr) {
112 entry:
113   %a = load <16 x i8>, ptr %ptr, align 16
114   %r = call <16 x i8> @llvm.mips.maxi.u.b(<16 x i8> %a, i32 163)
115   store <16 x i8> %r, ptr %ptr, align 16
116   ret void
119 define void @mini_s_b(ptr %ptr) {
120 entry:
121   %a = load <16 x i8>, ptr %ptr, align 16
122   %r = call <16 x i8> @llvm.mips.mini.s.b(<16 x i8> %a, i32 163)
123   store <16 x i8> %r, ptr %ptr, align 16
124   ret void
127 define void @mini_u_b(ptr %ptr) {
128 entry:
129   %a = load <16 x i8>, ptr %ptr, align 16
130   %r = call <16 x i8> @llvm.mips.mini.u.b(<16 x i8> %a, i32 163)
131   store <16 x i8> %r, ptr %ptr, align 16
132   ret void
135 define void @nori_b(ptr %ptr) {
136 entry:
137   %a = load <16 x i8>, ptr %ptr, align 16
138   %r = call <16 x i8> @llvm.mips.nori.b(<16 x i8> %a, i32 63)
139   store <16 x i8> %r, ptr %ptr, align 16
140   ret void
143 define void @ori_b(ptr %ptr) {
144 entry:
145   %a = load <16 x i8>, ptr %ptr, align 16
146   %r = call <16 x i8> @llvm.mips.ori.b(<16 x i8> %a, i32 63)
147   store <16 x i8> %r, ptr %ptr, align 16
148   ret void
151 define void @sldi_b(ptr %ptr) {
152 entry:
153   %a = load <16 x i8>, ptr %ptr, align 16
154   %r = call <16 x i8> @llvm.mips.sldi.b(<16 x i8> %a, <16 x i8> %a, i32 7)
155   store <16 x i8> %r, ptr %ptr, align 16
156   ret void
159 define void @slli_b(ptr %ptr) {
160 entry:
161   %a = load <16 x i8>, ptr %ptr, align 16
162   %r = call <16 x i8> @llvm.mips.slli.b(<16 x i8> %a, i32 65)
163   store <16 x i8> %r, ptr %ptr, align 16
164   ret void
167 define void @splati_b(ptr %ptr) {
168 entry:
169   %a = load <16 x i8>, ptr %ptr, align 16
170   %r = call <16 x i8> @llvm.mips.splati.b(<16 x i8> %a, i32 65)
171   store <16 x i8> %r, ptr %ptr, align 16
172   ret void
175 define void @srai_b(ptr %ptr) {
176 entry:
177   %a = load <16 x i8>, ptr %ptr, align 16
178   %r = call <16 x i8> @llvm.mips.srai.b(<16 x i8> %a, i32 65)
179   store <16 x i8> %r, ptr %ptr, align 16
180   ret void
183 define void @srari_b(ptr %ptr) {
184 entry:
185   %a = load <16 x i8>, ptr %ptr, align 16
186   %r = call <16 x i8> @llvm.mips.srari.b(<16 x i8> %a, i32 65)
187   store <16 x i8> %r, ptr %ptr, align 16
188   ret void
191 define void @srli_b(ptr %ptr) {
192 entry:
193   %a = load <16 x i8>, ptr %ptr, align 16
194   %r = call <16 x i8> @llvm.mips.srli.b(<16 x i8> %a, i32 65)
195   store <16 x i8> %r, ptr %ptr, align 16
196   ret void
199 define void @srlri_b(ptr %ptr) {
200 entry:
201   %a = load <16 x i8>, ptr %ptr, align 16
202   %r = call <16 x i8> @llvm.mips.srlri.b(<16 x i8> %a, i32 65)
203   store <16 x i8> %r, ptr %ptr, align 16
204   ret void
207 define void @addvi_w(ptr %ptr) {
208 entry:
209   %a = load <4 x i32>, ptr %ptr, align 16
210   %r = call <4 x i32> @llvm.mips.addvi.w(<4 x i32> %a, i32 63)
211   store <4 x i32> %r, ptr %ptr, align 16
212   ret void
215 define void @bclri_w(ptr %ptr) {
216 entry:
217   %a = load <4 x i32>, ptr %ptr, align 16
218   %r = call <4 x i32> @llvm.mips.bclri.w(<4 x i32> %a, i32 63)
219   store <4 x i32> %r, ptr %ptr, align 16
220   ret void
223 define void @binsli_w(ptr %ptr) {
224 entry:
225   %a = load <4 x i32>, ptr %ptr, align 16
226   %r = call <4 x i32> @llvm.mips.binsli.w(<4 x i32> %a, <4 x i32> %a, i32 63)
227   store <4 x i32> %r, ptr %ptr, align 16
228   ret void
231 define void @binsri_w(ptr %ptr) {
232 entry:
233   %a = load <4 x i32>, ptr %ptr, align 16
234   %r = call <4 x i32> @llvm.mips.binsri.w(<4 x i32> %a, <4 x i32> %a, i32 63)
235   store <4 x i32> %r, ptr %ptr, align 16
236   ret void
239 define void @bnegi_w(ptr %ptr) {
240 entry:
241   %a = load <4 x i32>, ptr %ptr, align 16
242   %r = call <4 x i32> @llvm.mips.bnegi.w(<4 x i32> %a, i32 63)
243   store <4 x i32> %r, ptr %ptr, align 16
244   ret void
247 define void @bseti_w(ptr %ptr) {
248 entry:
249   %a = load <4 x i32>, ptr %ptr, align 16
250   %r = call <4 x i32> @llvm.mips.bseti.w(<4 x i32> %a, i32 63)
251   store <4 x i32> %r, ptr %ptr, align 16
252   ret void
255 define void @clei_s_w(ptr %ptr) {
256 entry:
257   %a = load <4 x i32>, ptr %ptr, align 16
258   %r = call <4 x i32> @llvm.mips.clei.s.w(<4 x i32> %a, i32 63)
259   store <4 x i32> %r, ptr %ptr, align 16
260   ret void
263 define void @clei_u_w(ptr %ptr) {
264 entry:
265   %a = load <4 x i32>, ptr %ptr, align 16
266   %r = call <4 x i32> @llvm.mips.clei.u.w(<4 x i32> %a, i32 63)
267   store <4 x i32> %r, ptr %ptr, align 16
268   ret void
271 define void @clti_s_w(ptr %ptr) {
272 entry:
273   %a = load <4 x i32>, ptr %ptr, align 16
274   %r = call <4 x i32> @llvm.mips.clti.s.w(<4 x i32> %a, i32 63)
275   store <4 x i32> %r, ptr %ptr, align 16
276   ret void
279 define void @clti_u_w(ptr %ptr) {
280 entry:
281   %a = load <4 x i32>, ptr %ptr, align 16
282   %r = call <4 x i32> @llvm.mips.clti.u.w(<4 x i32> %a, i32 63)
283   store <4 x i32> %r, ptr %ptr, align 16
284   ret void
287 define void @maxi_s_w(ptr %ptr) {
288 entry:
289   %a = load <4 x i32>, ptr %ptr, align 16
290   %r = call <4 x i32> @llvm.mips.maxi.s.w(<4 x i32> %a, i32 63)
291   store <4 x i32> %r, ptr %ptr, align 16
292   ret void
295 define void @maxi_u_w(ptr %ptr) {
296 entry:
297   %a = load <4 x i32>, ptr %ptr, align 16
298   %r = call <4 x i32> @llvm.mips.maxi.u.w(<4 x i32> %a, i32 63)
299   store <4 x i32> %r, ptr %ptr, align 16
300   ret void
303 define void @mini_s_w(ptr %ptr) {
304 entry:
305   %a = load <4 x i32>, ptr %ptr, align 16
306   %r = call <4 x i32> @llvm.mips.mini.s.w(<4 x i32> %a, i32 63)
307   store <4 x i32> %r, ptr %ptr, align 16
308   ret void
311 define void @mini_u_w(ptr %ptr) {
312 entry:
313   %a = load <4 x i32>, ptr %ptr, align 16
314   %r = call <4 x i32> @llvm.mips.mini.u.w(<4 x i32> %a, i32 63)
315   store <4 x i32> %r, ptr %ptr, align 16
316   ret void
319 define void @ldi_w(ptr %ptr) {
320 entry:
321   %r = call <4 x i32> @llvm.mips.ldi.w(i32 1024)
322   store <4 x i32> %r, ptr %ptr, align 16
323   ret void
326 define void @sldi_w(ptr %ptr) {
327 entry:
328   %a = load <4 x i32>, ptr %ptr, align 16
329   %r = call <4 x i32> @llvm.mips.sldi.w(<4 x i32> %a, <4 x i32> %a, i32 63)
330   store <4 x i32> %r, ptr %ptr, align 16
331   ret void
334 define void @slli_w(ptr %ptr) {
335 entry:
336   %a = load <4 x i32>, ptr %ptr, align 16
337   %r = call <4 x i32> @llvm.mips.slli.w(<4 x i32> %a, i32 65)
338   store <4 x i32> %r, ptr %ptr, align 16
339   ret void
342 define void @splati_w(ptr %ptr) {
343 entry:
344   %a = load <4 x i32>, ptr %ptr, align 16
345   %r = call <4 x i32> @llvm.mips.splati.w(<4 x i32> %a, i32 65)
346   store <4 x i32> %r, ptr %ptr, align 16
347   ret void
350 define void @srai_w(ptr %ptr) {
351 entry:
352   %a = load <4 x i32>, ptr %ptr, align 16
353   %r = call <4 x i32> @llvm.mips.srai.w(<4 x i32> %a, i32 65)
354   store <4 x i32> %r, ptr %ptr, align 16
355   ret void
358 define void @srari_w(ptr %ptr) {
359 entry:
360   %a = load <4 x i32>, ptr %ptr, align 16
361   %r = call <4 x i32> @llvm.mips.srari.w(<4 x i32> %a, i32 65)
362   store <4 x i32> %r, ptr %ptr, align 16
363   ret void
366 define void @srli_w(ptr %ptr) {
367 entry:
368   %a = load <4 x i32>, ptr %ptr, align 16
369   %r = call <4 x i32> @llvm.mips.srli.w(<4 x i32> %a, i32 65)
370   store <4 x i32> %r, ptr %ptr, align 16
371   ret void
374 define void @srlri_w(ptr %ptr) {
375 entry:
376   %a = load <4 x i32>, ptr %ptr, align 16
377   %r = call <4 x i32> @llvm.mips.srlri.w(<4 x i32> %a, i32 65)
378   store <4 x i32> %r, ptr %ptr, align 16
379   ret void
382 define void @addvi_h(ptr %ptr) {
383 entry:
384   %a = load <8 x i16>, ptr %ptr, align 16
385   %r = call <8 x i16> @llvm.mips.addvi.h(<8 x i16> %a, i32 65)
386   store <8 x i16> %r, ptr %ptr, align 16
387   ret void
390 define void @bclri_h(ptr %ptr) {
391 entry:
392   %a = load <8 x i16>, ptr %ptr, align 16
393   %r = call <8 x i16> @llvm.mips.bclri.h(<8 x i16> %a, i32 16)
394   store <8 x i16> %r, ptr %ptr, align 16
395   ret void
398 define void @binsli_h(ptr %ptr) {
399 entry:
400   %a = load <8 x i16>, ptr %ptr, align 16
401   %r = call <8 x i16> @llvm.mips.binsli.h(<8 x i16> %a, <8 x i16> %a, i32 17)
402   store <8 x i16> %r, ptr %ptr, align 16
403   ret void
406 define void @binsri_h(ptr %ptr) {
407 entry:
408   %a = load <8 x i16>, ptr %ptr, align 16
409   %r = call <8 x i16> @llvm.mips.binsri.h(<8 x i16> %a, <8 x i16> %a, i32 19)
410   store <8 x i16> %r, ptr %ptr, align 16
411   ret void
414 define void @bnegi_h(ptr %ptr) {
415 entry:
416   %a = load <8 x i16>, ptr %ptr, align 16
417   %r = call <8 x i16> @llvm.mips.bnegi.h(<8 x i16> %a, i32 19)
418   store <8 x i16> %r, ptr %ptr, align 16
419   ret void
422 define void @bseti_h(ptr %ptr) {
423 entry:
424   %a = load <8 x i16>, ptr %ptr, align 16
425   %r = call <8 x i16> @llvm.mips.bseti.h(<8 x i16> %a, i32 19)
426   store <8 x i16> %r, ptr %ptr, align 16
427   ret void
430 define void @clei_s_h(ptr %ptr) {
431 entry:
432   %a = load <8 x i16>, ptr %ptr, align 16
433   %r = call <8 x i16> @llvm.mips.clei.s.h(<8 x i16> %a, i32 63)
434   store <8 x i16> %r, ptr %ptr, align 16
435   ret void
438 define void @clei_u_h(ptr %ptr) {
439 entry:
440   %a = load <8 x i16>, ptr %ptr, align 16
441   %r = call <8 x i16> @llvm.mips.clei.u.h(<8 x i16> %a, i32 130)
442   store <8 x i16> %r, ptr %ptr, align 16
443   ret void
446 define void @clti_s_h(ptr %ptr) {
447 entry:
448   %a = load <8 x i16>, ptr %ptr, align 16
449   %r = call <8 x i16> @llvm.mips.clti.s.h(<8 x i16> %a, i32 63)
450   store <8 x i16> %r, ptr %ptr, align 16
451   ret void
454 define void @clti_u_h(ptr %ptr) {
455 entry:
456   %a = load <8 x i16>, ptr %ptr, align 16
457   %r = call <8 x i16> @llvm.mips.clti.u.h(<8 x i16> %a, i32 63)
458   store <8 x i16> %r, ptr %ptr, align 16
459   ret void
462 define void @maxi_s_h(ptr %ptr) {
463 entry:
464   %a = load <8 x i16>, ptr %ptr, align 16
465   %r = call <8 x i16> @llvm.mips.maxi.s.h(<8 x i16> %a, i32 63)
466   store <8 x i16> %r, ptr %ptr, align 16
467   ret void
470 define void @maxi_u_h(ptr %ptr) {
471 entry:
472   %a = load <8 x i16>, ptr %ptr, align 16
473   %r = call <8 x i16> @llvm.mips.maxi.u.h(<8 x i16> %a, i32 130)
474   store <8 x i16> %r, ptr %ptr, align 16
475   ret void
478 define void @mini_s_h(ptr %ptr) {
479 entry:
480   %a = load <8 x i16>, ptr %ptr, align 16
481   %r = call <8 x i16> @llvm.mips.mini.s.h(<8 x i16> %a, i32 63)
482   store <8 x i16> %r, ptr %ptr, align 16
483   ret void
486 define void @mini_u_h(ptr %ptr) {
487 entry:
488   %a = load <8 x i16>, ptr %ptr, align 16
489   %r = call <8 x i16> @llvm.mips.mini.u.h(<8 x i16> %a, i32 130)
490   store <8 x i16> %r, ptr %ptr, align 16
491   ret void
494 define void @ldi_h(ptr %ptr) {
495 entry:
496   %r = call <8 x i16> @llvm.mips.ldi.h(i32 1024)
497   store <8 x i16> %r, ptr %ptr, align 16
498   ret void
501 define void @sldi_h(ptr %ptr) {
502 entry:
503   %a = load <8 x i16>, ptr %ptr, align 16
504   %r = call <8 x i16> @llvm.mips.sldi.h(<8 x i16> %a, <8 x i16> %a, i32 65)
505   store <8 x i16> %r, ptr %ptr, align 16
506   ret void
509 define void @slli_h(ptr %ptr) {
510 entry:
511   %a = load <8 x i16>, ptr %ptr, align 16
512   %r = call <8 x i16> @llvm.mips.slli.h(<8 x i16> %a, i32 65)
513   store <8 x i16> %r, ptr %ptr, align 16
514   ret void
517 define void @splati_h(ptr %ptr) {
518 entry:
519   %a = load <8 x i16>, ptr %ptr, align 16
520   %r = call <8 x i16> @llvm.mips.splati.h(<8 x i16> %a, i32 65)
521   store <8 x i16> %r, ptr %ptr, align 16
522   ret void
525 define void @srai_h(ptr %ptr) {
526 entry:
527   %a = load <8 x i16>, ptr %ptr, align 16
528   %r = call <8 x i16> @llvm.mips.srai.h(<8 x i16> %a, i32 65)
529   store <8 x i16> %r, ptr %ptr, align 16
530   ret void
533 define void @srari_h(ptr %ptr) {
534 entry:
535   %a = load <8 x i16>, ptr %ptr, align 16
536   %r = call <8 x i16> @llvm.mips.srari.h(<8 x i16> %a, i32 65)
537   store <8 x i16> %r, ptr %ptr, align 16
538   ret void
541 define void @srli_h(ptr %ptr) {
542 entry:
543   %a = load <8 x i16>, ptr %ptr, align 16
544   %r = call <8 x i16> @llvm.mips.srli.h(<8 x i16> %a, i32 65)
545   store <8 x i16> %r, ptr %ptr, align 16
546   ret void
549 define void @srlri_h(ptr %ptr) {
550 entry:
551   %a = load <8 x i16>, ptr %ptr, align 16
552   %r = call <8 x i16> @llvm.mips.srlri.h(<8 x i16> %a, i32 65)
553   store <8 x i16> %r, ptr %ptr, align 16
554   ret void
557 define i32 @copy_s_b(ptr %ptr) {
558 entry:
559   %a = load <16 x i8>, ptr %ptr, align 16
560   %r = call i32 @llvm.mips.copy.s.b(<16 x i8> %a, i32 17)
561   ret i32 %r
565 define i32 @copy_s_h(ptr %ptr) {
566 entry:
567   %a = load <8 x i16>, ptr %ptr, align 16
568   %r = call i32 @llvm.mips.copy.s.h(<8 x i16> %a, i32 9)
569   ret i32 %r
573 define i32 @copy_s_w(ptr %ptr) {
574 entry:
575   %a = load <4 x i32>, ptr %ptr, align 16
576   %r = call i32 @llvm.mips.copy.s.w(<4 x i32> %a, i32 5)
577   ret i32 %r
581 define i32 @copy_u_b(ptr %ptr) {
582 entry:
583   %a = load <16 x i8>, ptr %ptr, align 16
584   %r = call i32 @llvm.mips.copy.u.b(<16 x i8> %a, i32 16)
585   ret i32 %r
589 define i32 @copy_u_h(ptr %ptr) {
590 entry:
591   %a = load <8 x i16>, ptr %ptr, align 16
592   %r = call i32 @llvm.mips.copy.u.h(<8 x i16> %a, i32 9)
593   ret i32 %r
597 define i32 @copy_u_w(ptr %ptr) {
598 entry:
599   %a = load <4 x i32>, ptr %ptr, align 16
600   %r = call i32 @llvm.mips.copy.u.w(<4 x i32> %a, i32 5)
601   ret i32 %r
604 define i64 @copy_s_d(ptr %ptr) {
605 entry:  %a = load <2 x i64>, ptr %ptr, align 16
606   %r = call i64 @llvm.mips.copy.s.d(<2 x i64> %a, i32 3)
607   ret i64 %r
610 define i64 @copy_u_d(ptr %ptr) {
611 entry:  %a = load <2 x i64>, ptr %ptr, align 16
612   %r = call i64 @llvm.mips.copy.u.d(<2 x i64> %a, i32 3)
613   ret i64 %r
616 define void @addvi_d(ptr %ptr) {
617 entry:
618   %a = load <2 x i64>, ptr %ptr, align 16
619   %r = call <2 x i64> @llvm.mips.addvi.d(<2 x i64> %a, i32 65)
620   store <2 x i64> %r, ptr %ptr, align 16
621   ret void
624 define void @bclri_d(ptr %ptr) {
625 entry:
626   %a = load <2 x i64>, ptr %ptr, align 16
627   %r = call <2 x i64> @llvm.mips.bclri.d(<2 x i64> %a, i32 64)
628   store <2 x i64> %r, ptr %ptr, align 16
629   ret void
632 define void @binsli_d(ptr %ptr) {
633 entry:
634   %a = load <2 x i64>, ptr %ptr, align 16
635   %r = call <2 x i64> @llvm.mips.binsli.d(<2 x i64> %a, <2 x i64> %a, i32 65)
636   store <2 x i64> %r, ptr %ptr, align 16
637   ret void
640 define void @binsri_d(ptr %ptr) {
641 entry:
642   %a = load <2 x i64>, ptr %ptr, align 16
643   %r = call <2 x i64> @llvm.mips.binsri.d(<2 x i64> %a, <2 x i64> %a, i32 65)
644   store <2 x i64> %r, ptr %ptr, align 16
645   ret void
648 define void @bnegi_d(ptr %ptr) {
649 entry:
650   %a = load <2 x i64>, ptr %ptr, align 16
651   %r = call <2 x i64> @llvm.mips.bnegi.d(<2 x i64> %a, i32 65)
652   store <2 x i64> %r, ptr %ptr, align 16
653   ret void
656 define void @bseti_d(ptr %ptr) {
657 entry:
658   %a = load <2 x i64>, ptr %ptr, align 16
659   %r = call <2 x i64> @llvm.mips.bseti.d(<2 x i64> %a, i32 65)
660   store <2 x i64> %r, ptr %ptr, align 16
661   ret void
664 define void @clei_s_d(ptr %ptr) {
665 entry:
666   %a = load <2 x i64>, ptr %ptr, align 16
667   %r = call <2 x i64> @llvm.mips.clei.s.d(<2 x i64> %a, i32 63)
668   store <2 x i64> %r, ptr %ptr, align 16
669   ret void
672 define void @clei_u_d(ptr %ptr) {
673 entry:
674   %a = load <2 x i64>, ptr %ptr, align 16
675   %r = call <2 x i64> @llvm.mips.clei.u.d(<2 x i64> %a, i32 63)
676   store <2 x i64> %r, ptr %ptr, align 16
677   ret void
680 define void @clti_s_d(ptr %ptr) {
681 entry:
682   %a = load <2 x i64>, ptr %ptr, align 16
683   %r = call <2 x i64> @llvm.mips.clti.s.d(<2 x i64> %a, i32 63)
684   store <2 x i64> %r, ptr %ptr, align 16
685   ret void
688 define void @clti_u_d(ptr %ptr) {
689 entry:
690   %a = load <2 x i64>, ptr %ptr, align 16
691   %r = call <2 x i64> @llvm.mips.clti.u.d(<2 x i64> %a, i32 63)
692   store <2 x i64> %r, ptr %ptr, align 16
693   ret void
696 define void @ldi_d(ptr %ptr) {
697 entry:
698   %r = call <2 x i64> @llvm.mips.ldi.d(i32 1024)
699   store <2 x i64> %r, ptr %ptr, align 16
700   ret void
703 define void @maxi_s_d(ptr %ptr) {
704 entry:
705   %a = load <2 x i64>, ptr %ptr, align 16
706   %r = call <2 x i64> @llvm.mips.maxi.s.d(<2 x i64> %a, i32 63)
707   store <2 x i64> %r, ptr %ptr, align 16
708   ret void
711 define void @maxi_u_d(ptr %ptr) {
712 entry:
713   %a = load <2 x i64>, ptr %ptr, align 16
714   %r = call <2 x i64> @llvm.mips.maxi.u.d(<2 x i64> %a, i32 63)
715   store <2 x i64> %r, ptr %ptr, align 16
716   ret void
719 define void @mini_s_d(ptr %ptr) {
720 entry:
721   %a = load <2 x i64>, ptr %ptr, align 16
722   %r = call <2 x i64> @llvm.mips.mini.s.d(<2 x i64> %a, i32 63)
723   store <2 x i64> %r, ptr %ptr, align 16
724   ret void
727 define void @mini_u_d(ptr %ptr) {
728 entry:
729   %a = load <2 x i64>, ptr %ptr, align 16
730   %r = call <2 x i64> @llvm.mips.mini.u.d(<2 x i64> %a, i32 63)
731   store <2 x i64> %r, ptr %ptr, align 16
732   ret void
735 define void @sldi_d(ptr %ptr) {
736 entry:
737   %a = load <2 x i64>, ptr %ptr, align 16
738   %r = call <2 x i64> @llvm.mips.sldi.d(<2 x i64> %a, <2 x i64> %a, i32 1)
739   store <2 x i64> %r, ptr %ptr, align 16
740   ret void
743 define void @slli_d(ptr %ptr) {
744 entry:
745   %a = load <2 x i64>, ptr %ptr, align 16
746   %r = call <2 x i64> @llvm.mips.slli.d(<2 x i64> %a, i32 65)
747   store <2 x i64> %r, ptr %ptr, align 16
748   ret void
751 define void @srai_d(ptr %ptr) {
752 entry:
753   %a = load <2 x i64>, ptr %ptr, align 16
754   %r = call <2 x i64> @llvm.mips.srai.d(<2 x i64> %a, i32 65)
755   store <2 x i64> %r, ptr %ptr, align 16
756   ret void
759 define void @srari_d(ptr %ptr) {
760 entry:
761   %a = load <2 x i64>, ptr %ptr, align 16
762   %r = call <2 x i64> @llvm.mips.srari.d(<2 x i64> %a, i32 65)
763   store <2 x i64> %r, ptr %ptr, align 16
764   ret void
767 define void @srli_d(ptr %ptr) {
768 entry:
769   %a = load <2 x i64>, ptr %ptr, align 16
770   %r = call <2 x i64> @llvm.mips.srli.d(<2 x i64> %a, i32 65)
771   store <2 x i64> %r, ptr %ptr, align 16
772   ret void
775 define void @srlri_d(ptr %ptr) {
776 entry:
777   %a = load <2 x i64>, ptr %ptr, align 16
778   %r = call <2 x i64> @llvm.mips.srlri.d(<2 x i64> %a, i32 65)
779   store <2 x i64> %r, ptr %ptr, align 16
780   ret void
781 }; Negative numbers
784 define void @neg_addvi_b(ptr %ptr) {
785 entry:
786   %a = load <16 x i8>, ptr %ptr, align 16
787   %r = call <16 x i8> @llvm.mips.addvi.b(<16 x i8> %a, i32 -25)
788   store <16 x i8> %r, ptr %ptr, align 16
789   ret void
792 define void @neg_andi_b(ptr %ptr) {
793 entry:
794   %a = load <16 x i8>, ptr %ptr, align 16
795   %r = call <16 x i8> @llvm.mips.andi.b(<16 x i8> %a, i32 -25)
796   store <16 x i8> %r, ptr %ptr, align 16
797   ret void
800 define void @neg_bclri_b(ptr %ptr) {
801 entry:
802   %a = load <16 x i8>, ptr %ptr, align 16
803   %r = call <16 x i8> @llvm.mips.bclri.b(<16 x i8> %a, i32 -3)
804   store <16 x i8> %r, ptr %ptr, align 16
805   ret void
808 define void @neg_binsli_b(ptr %ptr) {
809 entry:
810   %a = load <16 x i8>, ptr %ptr, align 16
811   %r = call <16 x i8> @llvm.mips.binsli.b(<16 x i8> %a, <16 x i8> %a, i32 -3)
812   store <16 x i8> %r, ptr %ptr, align 16
813   ret void
816 define void @neg_binsri_b(ptr %ptr) {
817 entry:
818   %a = load <16 x i8>, ptr %ptr, align 16
819   %r = call <16 x i8> @llvm.mips.binsri.b(<16 x i8> %a, <16 x i8> %a, i32 5)
820   store <16 x i8> %r, ptr %ptr, align 16
821   ret void
824 define void @neg_bmnzi_b(ptr %ptr) {
825 entry:
826   %a = load <16 x i8>, ptr %ptr, align 16
827   %r = call <16 x i8> @llvm.mips.bmnzi.b(<16 x i8> %a, <16 x i8> %a, i32 -25)
828   store <16 x i8> %r, ptr %ptr, align 16
829   ret void
832 define void @neg_bmzi_b(ptr %ptr) {
833 entry:
834   %a = load <16 x i8>, ptr %ptr, align 16
835   %r = call <16 x i8> @llvm.mips.bmzi.b(<16 x i8> %a, <16 x i8> %a, i32 -25)
836   store <16 x i8> %r, ptr %ptr, align 16
837   ret void
840 define void @neg_bnegi_b(ptr %ptr) {
841 entry:
842   %a = load <16 x i8>, ptr %ptr, align 16
843   %r = call <16 x i8> @llvm.mips.bnegi.b(<16 x i8> %a, i32 6)
844   store <16 x i8> %r, ptr %ptr, align 16
845   ret void
848 define void @neg_bseli_b(ptr %ptr) {
849 entry:
850   %a = load <16 x i8>, ptr %ptr, align 16
851   %r = call <16 x i8> @llvm.mips.bseli.b(<16 x i8> %a, <16 x i8> %a, i32 -25)
852   store <16 x i8> %r, ptr %ptr, align 16
853   ret void
856 define void @neg_bseti_b(ptr %ptr) {
857 entry:
858   %a = load <16 x i8>, ptr %ptr, align 16
859   %r = call <16 x i8> @llvm.mips.bseti.b(<16 x i8> %a, i32 -5)
860   store <16 x i8> %r, ptr %ptr, align 16
861   ret void
864 define void @neg_clei_s_b(ptr %ptr) {
865 entry:
866   %a = load <16 x i8>, ptr %ptr, align 16
867   %r = call <16 x i8> @llvm.mips.clei.s.b(<16 x i8> %a, i32 -120)
868   store <16 x i8> %r, ptr %ptr, align 16
869   ret void
872 define void @neg_clei_u_b(ptr %ptr) {
873 entry:
874   %a = load <16 x i8>, ptr %ptr, align 16
875   %r = call <16 x i8> @llvm.mips.clei.u.b(<16 x i8> %a, i32 -25)
876   store <16 x i8> %r, ptr %ptr, align 16
877   ret void
880 define void @neg_clti_s_b(ptr %ptr) {
881 entry:
882   %a = load <16 x i8>, ptr %ptr, align 16
883   %r = call <16 x i8> @llvm.mips.clti.s.b(<16 x i8> %a, i32 -35)
884   store <16 x i8> %r, ptr %ptr, align 16
885   ret void
888 define void @neg_clti_u_b(ptr %ptr) {
889 entry:
890   %a = load <16 x i8>, ptr %ptr, align 16
891   %r = call <16 x i8> @llvm.mips.clti.u.b(<16 x i8> %a, i32 -25)
892   store <16 x i8> %r, ptr %ptr, align 16
893   ret void
896 define void @neg_ldi_b(ptr %ptr) {
897 entry:
898   %r = call <16 x i8> @llvm.mips.ldi.b(i32 -3)
899   store <16 x i8> %r, ptr %ptr, align 16
900   ret void
903 define void @neg_maxi_s_b(ptr %ptr) {
904 entry:
905   %a = load <16 x i8>, ptr %ptr, align 16
906   %r = call <16 x i8> @llvm.mips.maxi.s.b(<16 x i8> %a, i32 2)
907   store <16 x i8> %r, ptr %ptr, align 16
908   ret void
911 define void @neg_maxi_u_b(ptr %ptr) {
912 entry:
913   %a = load <16 x i8>, ptr %ptr, align 16
914   %r = call <16 x i8> @llvm.mips.maxi.u.b(<16 x i8> %a, i32 2)
915   store <16 x i8> %r, ptr %ptr, align 16
916   ret void
919 define void @neg_mini_s_b(ptr %ptr) {
920 entry:
921   %a = load <16 x i8>, ptr %ptr, align 16
922   %r = call <16 x i8> @llvm.mips.mini.s.b(<16 x i8> %a, i32 2)
923   store <16 x i8> %r, ptr %ptr, align 16
924   ret void
927 define void @neg_mini_u_b(ptr %ptr) {
928 entry:
929   %a = load <16 x i8>, ptr %ptr, align 16
930   %r = call <16 x i8> @llvm.mips.mini.u.b(<16 x i8> %a, i32 2)
931   store <16 x i8> %r, ptr %ptr, align 16
932   ret void
935 define void @neg_nori_b(ptr %ptr) {
936 entry:
937   %a = load <16 x i8>, ptr %ptr, align 16
938   %r = call <16 x i8> @llvm.mips.nori.b(<16 x i8> %a, i32 -25)
939   store <16 x i8> %r, ptr %ptr, align 16
940   ret void
943 define void @neg_ori_b(ptr %ptr) {
944 entry:
945   %a = load <16 x i8>, ptr %ptr, align 16
946   %r = call <16 x i8> @llvm.mips.ori.b(<16 x i8> %a, i32 -25)
947   store <16 x i8> %r, ptr %ptr, align 16
948   ret void
951 define void @neg_sldi_b(ptr %ptr) {
952 entry:
953   %a = load <16 x i8>, ptr %ptr, align 16
954   %r = call <16 x i8> @llvm.mips.sldi.b(<16 x i8> %a, <16 x i8> %a, i32 -7)
955   store <16 x i8> %r, ptr %ptr, align 16
956   ret void
959 define void @neg_slli_b(ptr %ptr) {
960 entry:
961   %a = load <16 x i8>, ptr %ptr, align 16
962   %r = call <16 x i8> @llvm.mips.slli.b(<16 x i8> %a, i32 -3)
963   store <16 x i8> %r, ptr %ptr, align 16
964   ret void
967 define void @neg_splati_b(ptr %ptr) {
968 entry:
969   %a = load <16 x i8>, ptr %ptr, align 16
970   %r = call <16 x i8> @llvm.mips.splati.b(<16 x i8> %a, i32 -3)
971   store <16 x i8> %r, ptr %ptr, align 16
972   ret void
975 define void @neg_srai_b(ptr %ptr) {
976 entry:
977   %a = load <16 x i8>, ptr %ptr, align 16
978   %r = call <16 x i8> @llvm.mips.srai.b(<16 x i8> %a, i32 -3)
979   store <16 x i8> %r, ptr %ptr, align 16
980   ret void
983 define void @neg_srari_b(ptr %ptr) {
984 entry:
985   %a = load <16 x i8>, ptr %ptr, align 16
986   %r = call <16 x i8> @llvm.mips.srari.b(<16 x i8> %a, i32 -3)
987   store <16 x i8> %r, ptr %ptr, align 16
988   ret void
991 define void @neg_srli_b(ptr %ptr) {
992 entry:
993   %a = load <16 x i8>, ptr %ptr, align 16
994   %r = call <16 x i8> @llvm.mips.srli.b(<16 x i8> %a, i32 -3)
995   store <16 x i8> %r, ptr %ptr, align 16
996   ret void
999 define void @neg_srlri_b(ptr %ptr) {
1000 entry:
1001   %a = load <16 x i8>, ptr %ptr, align 16
1002   %r = call <16 x i8> @llvm.mips.srlri.b(<16 x i8> %a, i32 -3)
1003   store <16 x i8> %r, ptr %ptr, align 16
1004   ret void
1007 define void @neg_addvi_w(ptr %ptr) {
1008 entry:
1009   %a = load <4 x i32>, ptr %ptr, align 16
1010   %r = call <4 x i32> @llvm.mips.addvi.w(<4 x i32> %a, i32 -25)
1011   store <4 x i32> %r, ptr %ptr, align 16
1012   ret void
1015 define void @neg_bclri_w(ptr %ptr) {
1016 entry:
1017   %a = load <4 x i32>, ptr %ptr, align 16
1018   %r = call <4 x i32> @llvm.mips.bclri.w(<4 x i32> %a, i32 -25)
1019   store <4 x i32> %r, ptr %ptr, align 16
1020   ret void
1023 define void @neg_binsli_w(ptr %ptr) {
1024 entry:
1025   %a = load <4 x i32>, ptr %ptr, align 16
1026   %r = call <4 x i32> @llvm.mips.binsli.w(<4 x i32> %a, <4 x i32> %a, i32 -25)
1027   store <4 x i32> %r, ptr %ptr, align 16
1028   ret void
1031 define void @neg_binsri_w(ptr %ptr) {
1032 entry:
1033   %a = load <4 x i32>, ptr %ptr, align 16
1034   %r = call <4 x i32> @llvm.mips.binsri.w(<4 x i32> %a, <4 x i32> %a, i32 -25)
1035   store <4 x i32> %r, ptr %ptr, align 16
1036   ret void
1039 define void @neg_bnegi_w(ptr %ptr) {
1040 entry:
1041   %a = load <4 x i32>, ptr %ptr, align 16
1042   %r = call <4 x i32> @llvm.mips.bnegi.w(<4 x i32> %a, i32 -25)
1043   store <4 x i32> %r, ptr %ptr, align 16
1044   ret void
1047 define void @neg_bseti_w(ptr %ptr) {
1048 entry:
1049   %a = load <4 x i32>, ptr %ptr, align 16
1050   %r = call <4 x i32> @llvm.mips.bseti.w(<4 x i32> %a, i32 -25)
1051   store <4 x i32> %r, ptr %ptr, align 16
1052   ret void
1055 define void @neg_clei_s_w(ptr %ptr) {
1056 entry:
1057   %a = load <4 x i32>, ptr %ptr, align 16
1058   %r = call <4 x i32> @llvm.mips.clei.s.w(<4 x i32> %a, i32 -140)
1059   store <4 x i32> %r, ptr %ptr, align 16
1060   ret void
1063 define void @neg_clei_u_w(ptr %ptr) {
1064 entry:
1065   %a = load <4 x i32>, ptr %ptr, align 16
1066   %r = call <4 x i32> @llvm.mips.clei.u.w(<4 x i32> %a, i32 -25)
1067   store <4 x i32> %r, ptr %ptr, align 16
1068   ret void
1071 define void @neg_clti_s_w(ptr %ptr) {
1072 entry:
1073   %a = load <4 x i32>, ptr %ptr, align 16
1074   %r = call <4 x i32> @llvm.mips.clti.s.w(<4 x i32> %a, i32 -150)
1075   store <4 x i32> %r, ptr %ptr, align 16
1076   ret void
1079 define void @neg_clti_u_w(ptr %ptr) {
1080 entry:
1081   %a = load <4 x i32>, ptr %ptr, align 16
1082   %r = call <4 x i32> @llvm.mips.clti.u.w(<4 x i32> %a, i32 -25)
1083   store <4 x i32> %r, ptr %ptr, align 16
1084   ret void
1087 define void @neg_maxi_s_w(ptr %ptr) {
1088 entry:
1089   %a = load <4 x i32>, ptr %ptr, align 16
1090   %r = call <4 x i32> @llvm.mips.maxi.s.w(<4 x i32> %a, i32 -200)
1091   store <4 x i32> %r, ptr %ptr, align 16
1092   ret void
1095 define void @neg_maxi_u_w(ptr %ptr) {
1096 entry:
1097   %a = load <4 x i32>, ptr %ptr, align 16
1098   %r = call <4 x i32> @llvm.mips.maxi.u.w(<4 x i32> %a, i32 -200)
1099   store <4 x i32> %r, ptr %ptr, align 16
1100   ret void
1103 define void @neg_mini_s_w(ptr %ptr) {
1104 entry:
1105   %a = load <4 x i32>, ptr %ptr, align 16
1106   %r = call <4 x i32> @llvm.mips.mini.s.w(<4 x i32> %a, i32 -200)
1107   store <4 x i32> %r, ptr %ptr, align 16
1108   ret void
1111 define void @neg_mini_u_w(ptr %ptr) {
1112 entry:
1113   %a = load <4 x i32>, ptr %ptr, align 16
1114   %r = call <4 x i32> @llvm.mips.mini.u.w(<4 x i32> %a, i32 -200)
1115   store <4 x i32> %r, ptr %ptr, align 16
1116   ret void
1119 define void @neg_ldi_w(ptr %ptr) {
1120 entry:
1121   %r = call <4 x i32> @llvm.mips.ldi.w(i32 -300)
1122   store <4 x i32> %r, ptr %ptr, align 16
1123   ret void
1126 define void @neg_sldi_w(ptr %ptr) {
1127 entry:
1128   %a = load <4 x i32>, ptr %ptr, align 16
1129   %r = call <4 x i32> @llvm.mips.sldi.w(<4 x i32> %a, <4 x i32> %a, i32 -20)
1130   store <4 x i32> %r, ptr %ptr, align 16
1131   ret void
1134 define void @neg_slli_w(ptr %ptr) {
1135 entry:
1136   %a = load <4 x i32>, ptr %ptr, align 16
1137   %r = call <4 x i32> @llvm.mips.slli.w(<4 x i32> %a, i32 -3)
1138   store <4 x i32> %r, ptr %ptr, align 16
1139   ret void
1142 define void @neg_splati_w(ptr %ptr) {
1143 entry:
1144   %a = load <4 x i32>, ptr %ptr, align 16
1145   %r = call <4 x i32> @llvm.mips.splati.w(<4 x i32> %a, i32 -3)
1146   store <4 x i32> %r, ptr %ptr, align 16
1147   ret void
1150 define void @neg_srai_w(ptr %ptr) {
1151 entry:
1152   %a = load <4 x i32>, ptr %ptr, align 16
1153   %r = call <4 x i32> @llvm.mips.srai.w(<4 x i32> %a, i32 -3)
1154   store <4 x i32> %r, ptr %ptr, align 16
1155   ret void
1158 define void @neg_srari_w(ptr %ptr) {
1159 entry:
1160   %a = load <4 x i32>, ptr %ptr, align 16
1161   %r = call <4 x i32> @llvm.mips.srari.w(<4 x i32> %a, i32 -3)
1162   store <4 x i32> %r, ptr %ptr, align 16
1163   ret void
1166 define void @neg_srli_w(ptr %ptr) {
1167 entry:
1168   %a = load <4 x i32>, ptr %ptr, align 16
1169   %r = call <4 x i32> @llvm.mips.srli.w(<4 x i32> %a, i32 -3)
1170   store <4 x i32> %r, ptr %ptr, align 16
1171   ret void
1174 define void @neg_srlri_w(ptr %ptr) {
1175 entry:
1176   %a = load <4 x i32>, ptr %ptr, align 16
1177   %r = call <4 x i32> @llvm.mips.srlri.w(<4 x i32> %a, i32 -3)
1178   store <4 x i32> %r, ptr %ptr, align 16
1179   ret void
1182 define void @neg_addvi_h(ptr %ptr) {
1183 entry:
1184   %a = load <8 x i16>, ptr %ptr, align 16
1185   %r = call <8 x i16> @llvm.mips.addvi.h(<8 x i16> %a, i32 -25)
1186   store <8 x i16> %r, ptr %ptr, align 16
1187   ret void
1190 define void @neg_bclri_h(ptr %ptr) {
1191 entry:
1192   %a = load <8 x i16>, ptr %ptr, align 16
1193   %r = call <8 x i16> @llvm.mips.bclri.h(<8 x i16> %a, i32 -8)
1194   store <8 x i16> %r, ptr %ptr, align 16
1195   ret void
1198 define void @neg_binsli_h(ptr %ptr) {
1199 entry:
1200   %a = load <8 x i16>, ptr %ptr, align 16
1201   %r = call <8 x i16> @llvm.mips.binsli.h(<8 x i16> %a, <8 x i16> %a, i32 -8)
1202   store <8 x i16> %r, ptr %ptr, align 16
1203   ret void
1206 define void @neg_binsri_h(ptr %ptr) {
1207 entry:
1208   %a = load <8 x i16>, ptr %ptr, align 16
1209   %r = call <8 x i16> @llvm.mips.binsri.h(<8 x i16> %a, <8 x i16> %a, i32 -15)
1210   store <8 x i16> %r, ptr %ptr, align 16
1211   ret void
1214 define void @neg_bnegi_h(ptr %ptr) {
1215 entry:
1216   %a = load <8 x i16>, ptr %ptr, align 16
1217   %r = call <8 x i16> @llvm.mips.bnegi.h(<8 x i16> %a, i32 -14)
1218   store <8 x i16> %r, ptr %ptr, align 16
1219   ret void
1222 define void @neg_bseti_h(ptr %ptr) {
1223 entry:
1224   %a = load <8 x i16>, ptr %ptr, align 16
1225   %r = call <8 x i16> @llvm.mips.bseti.h(<8 x i16> %a, i32 -15)
1226   store <8 x i16> %r, ptr %ptr, align 16
1227   ret void
1230 define void @neg_clei_s_h(ptr %ptr) {
1231 entry:
1232   %a = load <8 x i16>, ptr %ptr, align 16
1233   %r = call <8 x i16> @llvm.mips.clei.s.h(<8 x i16> %a, i32 -25)
1234   store <8 x i16> %r, ptr %ptr, align 16
1235   ret void
1238 define void @neg_clei_u_h(ptr %ptr) {
1239 entry:
1240   %a = load <8 x i16>, ptr %ptr, align 16
1241   %r = call <8 x i16> @llvm.mips.clei.u.h(<8 x i16> %a, i32 -25)
1242   store <8 x i16> %r, ptr %ptr, align 16
1243   ret void
1246 define void @neg_clti_s_h(ptr %ptr) {
1247 entry:
1248   %a = load <8 x i16>, ptr %ptr, align 16
1249   %r = call <8 x i16> @llvm.mips.clti.s.h(<8 x i16> %a, i32 -150)
1250   store <8 x i16> %r, ptr %ptr, align 16
1251   ret void
1254 define void @neg_clti_u_h(ptr %ptr) {
1255 entry:
1256   %a = load <8 x i16>, ptr %ptr, align 16
1257   %r = call <8 x i16> @llvm.mips.clti.u.h(<8 x i16> %a, i32 -25)
1258   store <8 x i16> %r, ptr %ptr, align 16
1259   ret void
1262 define void @neg_maxi_s_h(ptr %ptr) {
1263 entry:
1264   %a = load <8 x i16>, ptr %ptr, align 16
1265   %r = call <8 x i16> @llvm.mips.maxi.s.h(<8 x i16> %a, i32 -200)
1266   store <8 x i16> %r, ptr %ptr, align 16
1267   ret void
1270 define void @neg_maxi_u_h(ptr %ptr) {
1271 entry:
1272   %a = load <8 x i16>, ptr %ptr, align 16
1273   %r = call <8 x i16> @llvm.mips.maxi.u.h(<8 x i16> %a, i32 -200)
1274   store <8 x i16> %r, ptr %ptr, align 16
1275   ret void
1278 define void @neg_mini_s_h(ptr %ptr) {
1279 entry:
1280   %a = load <8 x i16>, ptr %ptr, align 16
1281   %r = call <8 x i16> @llvm.mips.mini.s.h(<8 x i16> %a, i32 -200)
1282   store <8 x i16> %r, ptr %ptr, align 16
1283   ret void
1286 define void @neg_mini_u_h(ptr %ptr) {
1287 entry:
1288   %a = load <8 x i16>, ptr %ptr, align 16
1289   %r = call <8 x i16> @llvm.mips.mini.u.h(<8 x i16> %a, i32 -2)
1290   store <8 x i16> %r, ptr %ptr, align 16
1291   ret void
1294 define void @neg_ldi_h(ptr %ptr) {
1295 entry:
1296   %r = call <8 x i16> @llvm.mips.ldi.h(i32 -300)
1297   store <8 x i16> %r, ptr %ptr, align 16
1298   ret void
1301 define void @neg_sldi_h(ptr %ptr) {
1302 entry:
1303   %a = load <8 x i16>, ptr %ptr, align 16
1304   %r = call <8 x i16> @llvm.mips.sldi.h(<8 x i16> %a, <8 x i16> %a, i32 -3)
1305   store <8 x i16> %r, ptr %ptr, align 16
1306   ret void
1309 define void @neg_slli_h(ptr %ptr) {
1310 entry:
1311   %a = load <8 x i16>, ptr %ptr, align 16
1312   %r = call <8 x i16> @llvm.mips.slli.h(<8 x i16> %a, i32 -3)
1313   store <8 x i16> %r, ptr %ptr, align 16
1314   ret void
1317 define void @neg_splati_h(ptr %ptr) {
1318 entry:
1319   %a = load <8 x i16>, ptr %ptr, align 16
1320   %r = call <8 x i16> @llvm.mips.splati.h(<8 x i16> %a, i32 -3)
1321   store <8 x i16> %r, ptr %ptr, align 16
1322   ret void
1325 define void @neg_srai_h(ptr %ptr) {
1326 entry:
1327   %a = load <8 x i16>, ptr %ptr, align 16
1328   %r = call <8 x i16> @llvm.mips.srai.h(<8 x i16> %a, i32 -3)
1329   store <8 x i16> %r, ptr %ptr, align 16
1330   ret void
1333 define void @neg_srari_h(ptr %ptr) {
1334 entry:
1335   %a = load <8 x i16>, ptr %ptr, align 16
1336   %r = call <8 x i16> @llvm.mips.srari.h(<8 x i16> %a, i32 -3)
1337   store <8 x i16> %r, ptr %ptr, align 16
1338   ret void
1341 define void @neg_srli_h(ptr %ptr) {
1342 entry:
1343   %a = load <8 x i16>, ptr %ptr, align 16
1344   %r = call <8 x i16> @llvm.mips.srli.h(<8 x i16> %a, i32 -3)
1345   store <8 x i16> %r, ptr %ptr, align 16
1346   ret void
1349 define void @neg_srlri_h(ptr %ptr) {
1350 entry:
1351   %a = load <8 x i16>, ptr %ptr, align 16
1352   %r = call <8 x i16> @llvm.mips.srlri.h(<8 x i16> %a, i32 -3)
1353   store <8 x i16> %r, ptr %ptr, align 16
1354   ret void
1357 define i32 @neg_copy_s_b(ptr %ptr) {
1358 entry:
1359   %a = load <16 x i8>, ptr %ptr, align 16
1360   %r = call i32 @llvm.mips.copy.s.b(<16 x i8> %a, i32 -1)
1361   ret i32 %r
1364 define i32 @neg_copy_s_h(ptr %ptr) {
1365 entry:
1366   %a = load <8 x i16>, ptr %ptr, align 16
1367   %r = call i32 @llvm.mips.copy.s.h(<8 x i16> %a, i32 -1)
1368   ret i32 %r
1371 define i32 @neg_copy_s_w(ptr %ptr) {
1372 entry:
1373   %a = load <4 x i32>, ptr %ptr, align 16
1374   %r = call i32 @llvm.mips.copy.s.w(<4 x i32> %a, i32 -1)
1375   ret i32 %r
1378 define i32 @neg_copy_u_b(ptr %ptr) {
1379 entry:
1380   %a = load <16 x i8>, ptr %ptr, align 16
1381   %r = call i32 @llvm.mips.copy.u.b(<16 x i8> %a, i32 -1)
1382   ret i32 %r
1386 define i32 @neg_copy_u_h(ptr %ptr) {
1387 entry:
1388   %a = load <8 x i16>, ptr %ptr, align 16
1389   %r = call i32 @llvm.mips.copy.u.h(<8 x i16> %a, i32 -1)
1390   ret i32 %r
1394 define i32 @neg_copy_u_w(ptr %ptr) {
1395 entry:
1396   %a = load <4 x i32>, ptr %ptr, align 16
1397   %r = call i32 @llvm.mips.copy.u.w(<4 x i32> %a, i32 -1)
1398   ret i32 %r
1401 define i64 @neg_copy_s_d(ptr %ptr) {
1402 entry:  %a = load <2 x i64>, ptr %ptr, align 16
1403   %r = call i64 @llvm.mips.copy.s.d(<2 x i64> %a, i32 -1)
1404   ret i64 %r
1407 define i64 @neg_copy_u_d(ptr %ptr) {
1408 entry:  %a = load <2 x i64>, ptr %ptr, align 16
1409   %r = call i64 @llvm.mips.copy.u.d(<2 x i64> %a, i32 -1)
1410   ret i64 %r
1413 define void @neg_addvi_d(ptr %ptr) {
1414 entry:
1415   %a = load <2 x i64>, ptr %ptr, align 16
1416   %r = call <2 x i64> @llvm.mips.addvi.d(<2 x i64> %a, i32 -25)
1417   store <2 x i64> %r, ptr %ptr, align 16
1418   ret void
1421 define void @neg_bclri_d(ptr %ptr) {
1422 entry:
1423   %a = load <2 x i64>, ptr %ptr, align 16
1424   %r = call <2 x i64> @llvm.mips.bclri.d(<2 x i64> %a, i32 -25)
1425   store <2 x i64> %r, ptr %ptr, align 16
1426   ret void
1429 define void @neg_binsli_d(ptr %ptr) {
1430 entry:
1431   %a = load <2 x i64>, ptr %ptr, align 16
1432   %r = call <2 x i64> @llvm.mips.binsli.d(<2 x i64> %a, <2 x i64> %a, i32 -25)
1433   store <2 x i64> %r, ptr %ptr, align 16
1434   ret void
1437 define void @neg_binsri_d(ptr %ptr) {
1438 entry:
1439   %a = load <2 x i64>, ptr %ptr, align 16
1440   %r = call <2 x i64> @llvm.mips.binsri.d(<2 x i64> %a, <2 x i64> %a, i32 -25)
1441   store <2 x i64> %r, ptr %ptr, align 16
1442   ret void
1445 define void @neg_bnegi_d(ptr %ptr) {
1446 entry:
1447   %a = load <2 x i64>, ptr %ptr, align 16
1448   %r = call <2 x i64> @llvm.mips.bnegi.d(<2 x i64> %a, i32 -25)
1449   store <2 x i64> %r, ptr %ptr, align 16
1450   ret void
1453 define void @neg_bseti_d(ptr %ptr) {
1454 entry:
1455   %a = load <2 x i64>, ptr %ptr, align 16
1456   %r = call <2 x i64> @llvm.mips.bseti.d(<2 x i64> %a, i32 -25)
1457   store <2 x i64> %r, ptr %ptr, align 16
1458   ret void
1461 define void @neg_clei_s_d(ptr %ptr) {
1462 entry:
1463   %a = load <2 x i64>, ptr %ptr, align 16
1464   %r = call <2 x i64> @llvm.mips.clei.s.d(<2 x i64> %a, i32 -45)
1465   store <2 x i64> %r, ptr %ptr, align 16
1466   ret void
1469 define void @neg_clei_u_d(ptr %ptr) {
1470 entry:
1471   %a = load <2 x i64>, ptr %ptr, align 16
1472   %r = call <2 x i64> @llvm.mips.clei.u.d(<2 x i64> %a, i32 -25)
1473   store <2 x i64> %r, ptr %ptr, align 16
1474   ret void
1477 define void @neg_clti_s_d(ptr %ptr) {
1478 entry:
1479   %a = load <2 x i64>, ptr %ptr, align 16
1480   %r = call <2 x i64> @llvm.mips.clti.s.d(<2 x i64> %a, i32 -32)
1481   store <2 x i64> %r, ptr %ptr, align 16
1482   ret void
1485 define void @neg_clti_u_d(ptr %ptr) {
1486 entry:
1487   %a = load <2 x i64>, ptr %ptr, align 16
1488   %r = call <2 x i64> @llvm.mips.clti.u.d(<2 x i64> %a, i32 -25)
1489   store <2 x i64> %r, ptr %ptr, align 16
1490   ret void
1493 define void @neg_ldi_d(ptr %ptr) {
1494 entry:
1495   %r = call <2 x i64> @llvm.mips.ldi.d(i32 -3)
1496   store <2 x i64> %r, ptr %ptr, align 16
1497   ret void
1500 define void @neg_maxi_s_d(ptr %ptr) {
1501 entry:
1502   %a = load <2 x i64>, ptr %ptr, align 16
1503   %r = call <2 x i64> @llvm.mips.maxi.s.d(<2 x i64> %a, i32 -202)
1504   store <2 x i64> %r, ptr %ptr, align 16
1505   ret void
1508 define void @neg_maxi_u_d(ptr %ptr) {
1509 entry:
1510   %a = load <2 x i64>, ptr %ptr, align 16
1511   %r = call <2 x i64> @llvm.mips.maxi.u.d(<2 x i64> %a, i32 -2)
1512   store <2 x i64> %r, ptr %ptr, align 16
1513   ret void
1516 define void @neg_mini_s_d(ptr %ptr) {
1517 entry:
1518   %a = load <2 x i64>, ptr %ptr, align 16
1519   %r = call <2 x i64> @llvm.mips.mini.s.d(<2 x i64> %a, i32 -202)
1520   store <2 x i64> %r, ptr %ptr, align 16
1521   ret void
1524 define void @neg_mini_u_d(ptr %ptr) {
1525 entry:
1526   %a = load <2 x i64>, ptr %ptr, align 16
1527   %r = call <2 x i64> @llvm.mips.mini.u.d(<2 x i64> %a, i32 -2)
1528   store <2 x i64> %r, ptr %ptr, align 16
1529   ret void
1532 define void @neg_sldi_d(ptr %ptr) {
1533 entry:
1534   %a = load <2 x i64>, ptr %ptr, align 16
1535   %r = call <2 x i64> @llvm.mips.sldi.d(<2 x i64> %a, <2 x i64> %a, i32 -1)
1536   store <2 x i64> %r, ptr %ptr, align 16
1537   ret void
1540 define void @neg_slli_d(ptr %ptr) {
1541 entry:
1542   %a = load <2 x i64>, ptr %ptr, align 16
1543   %r = call <2 x i64> @llvm.mips.slli.d(<2 x i64> %a, i32 -3)
1544   store <2 x i64> %r, ptr %ptr, align 16
1545   ret void
1548 define void @neg_srai_d(ptr %ptr) {
1549 entry:
1550   %a = load <2 x i64>, ptr %ptr, align 16
1551   %r = call <2 x i64> @llvm.mips.srai.d(<2 x i64> %a, i32 -3)
1552   store <2 x i64> %r, ptr %ptr, align 16
1553   ret void
1556 define void @neg_srari_d(ptr %ptr) {
1557 entry:
1558   %a = load <2 x i64>, ptr %ptr, align 16
1559   %r = call <2 x i64> @llvm.mips.srari.d(<2 x i64> %a, i32 -3)
1560   store <2 x i64> %r, ptr %ptr, align 16
1561   ret void
1564 define void @neg_srli_d(ptr %ptr) {
1565 entry:
1566   %a = load <2 x i64>, ptr %ptr, align 16
1567   %r = call <2 x i64> @llvm.mips.srli.d(<2 x i64> %a, i32 -3)
1568   store <2 x i64> %r, ptr %ptr, align 16
1569   ret void
1572 define void @neg_srlri_d(ptr %ptr) {
1573 entry:
1574   %a = load <2 x i64>, ptr %ptr, align 16
1575   %r = call <2 x i64> @llvm.mips.srlri.d(<2 x i64> %a, i32 -3)
1576   store <2 x i64> %r, ptr %ptr, align 16
1577   ret void
1580 declare <8 x i16> @llvm.mips.ldi.h(i32)
1581 declare <8 x i16> @llvm.mips.addvi.h(<8 x i16>, i32)
1582 declare <8 x i16> @llvm.mips.bclri.h(<8 x i16>, i32)
1583 declare <8 x i16> @llvm.mips.binsli.h(<8 x i16>, <8 x i16>, i32)
1584 declare <8 x i16> @llvm.mips.binsri.h(<8 x i16>, <8 x i16>, i32)
1585 declare <8 x i16> @llvm.mips.bnegi.h(<8 x i16>, i32)
1586 declare <8 x i16> @llvm.mips.bseti.h(<8 x i16>, i32)
1587 declare <8 x i16> @llvm.mips.clei.s.h(<8 x i16>, i32)
1588 declare <8 x i16> @llvm.mips.clei.u.h(<8 x i16>, i32)
1589 declare <8 x i16> @llvm.mips.clti.s.h(<8 x i16>, i32)
1590 declare <8 x i16> @llvm.mips.clti.u.h(<8 x i16>, i32)
1591 declare <8 x i16> @llvm.mips.maxi.s.h(<8 x i16>, i32)
1592 declare <8 x i16> @llvm.mips.maxi.u.h(<8 x i16>, i32)
1593 declare <8 x i16> @llvm.mips.mini.s.h(<8 x i16>, i32)
1594 declare <8 x i16> @llvm.mips.mini.u.h(<8 x i16>, i32)
1595 declare <8 x i16> @llvm.mips.sldi.h(<8 x i16>, <8 x i16>, i32)
1596 declare <8 x i16> @llvm.mips.slli.h(<8 x i16>, i32)
1597 declare <8 x i16> @llvm.mips.splati.h(<8 x i16>, i32)
1598 declare <8 x i16> @llvm.mips.srai.h(<8 x i16>, i32)
1599 declare <8 x i16> @llvm.mips.srari.h(<8 x i16>, i32)
1600 declare <8 x i16> @llvm.mips.srli.h(<8 x i16>, i32)
1601 declare <8 x i16> @llvm.mips.srlri.h(<8 x i16>, i32)
1602 declare <4 x i32> @llvm.mips.addvi.w(<4 x i32>, i32)
1603 declare <4 x i32> @llvm.mips.bclri.w(<4 x i32>, i32)
1604 declare <4 x i32> @llvm.mips.binsli.w(<4 x i32>, <4 x i32>, i32)
1605 declare <4 x i32> @llvm.mips.binsri.w(<4 x i32>, <4 x i32>, i32)
1606 declare <4 x i32> @llvm.mips.bnegi.w(<4 x i32>, i32)
1607 declare <4 x i32> @llvm.mips.bseti.w(<4 x i32>, i32)
1608 declare <4 x i32> @llvm.mips.ldi.w(i32)
1609 declare <4 x i32> @llvm.mips.clei.s.w(<4 x i32>, i32)
1610 declare <4 x i32> @llvm.mips.clei.u.w(<4 x i32>, i32)
1611 declare <4 x i32> @llvm.mips.clti.s.w(<4 x i32>, i32)
1612 declare <4 x i32> @llvm.mips.clti.u.w(<4 x i32>, i32)
1613 declare <4 x i32> @llvm.mips.maxi.s.w(<4 x i32>, i32)
1614 declare <4 x i32> @llvm.mips.maxi.u.w(<4 x i32>, i32)
1615 declare <4 x i32> @llvm.mips.mini.s.w(<4 x i32>, i32)
1616 declare <4 x i32> @llvm.mips.mini.u.w(<4 x i32>, i32)
1617 declare <4 x i32> @llvm.mips.sldi.w(<4 x i32>, <4 x i32>, i32)
1618 declare <4 x i32> @llvm.mips.slli.w(<4 x i32>, i32)
1619 declare <4 x i32> @llvm.mips.splati.w(<4 x i32>, i32)
1620 declare <4 x i32> @llvm.mips.srai.w(<4 x i32>, i32)
1621 declare <4 x i32> @llvm.mips.srari.w(<4 x i32>, i32)
1622 declare <4 x i32> @llvm.mips.srli.w(<4 x i32>, i32)
1623 declare <4 x i32> @llvm.mips.srlri.w(<4 x i32>, i32)
1624 declare <2 x i64> @llvm.mips.ldi.d(i32)
1625 declare <2 x i64> @llvm.mips.addvi.d(<2 x i64>, i32)
1626 declare <2 x i64> @llvm.mips.bclri.d(<2 x i64>, i32)
1627 declare <2 x i64> @llvm.mips.binsli.d(<2 x i64>, <2 x i64>, i32)
1628 declare <2 x i64> @llvm.mips.binsri.d(<2 x i64>, <2 x i64>, i32)
1629 declare <2 x i64> @llvm.mips.bnegi.d(<2 x i64>, i32)
1630 declare <2 x i64> @llvm.mips.bseti.d(<2 x i64>, i32)
1631 declare <2 x i64> @llvm.mips.clei.s.d(<2 x i64>, i32)
1632 declare <2 x i64> @llvm.mips.clei.u.d(<2 x i64>, i32)
1633 declare <2 x i64> @llvm.mips.clti.s.d(<2 x i64>, i32)
1634 declare <2 x i64> @llvm.mips.clti.u.d(<2 x i64>, i32)
1635 declare <2 x i64> @llvm.mips.maxi.s.d(<2 x i64>, i32)
1636 declare <2 x i64> @llvm.mips.maxi.u.d(<2 x i64>, i32)
1637 declare <2 x i64> @llvm.mips.mini.s.d(<2 x i64>, i32)
1638 declare <2 x i64> @llvm.mips.mini.u.d(<2 x i64>, i32)
1639 declare <2 x i64> @llvm.mips.sldi.d(<2 x i64>, <2 x i64>, i32)
1640 declare <2 x i64> @llvm.mips.slli.d(<2 x i64>, i32)
1641 declare <2 x i64> @llvm.mips.splati.d(<2 x i64>, i32)
1642 declare <2 x i64> @llvm.mips.srai.d(<2 x i64>, i32)
1643 declare <2 x i64> @llvm.mips.srari.d(<2 x i64>, i32)
1644 declare <2 x i64> @llvm.mips.srli.d(<2 x i64>, i32)
1645 declare <2 x i64> @llvm.mips.srlri.d(<2 x i64>, i32)
1646 declare <16 x i8> @llvm.mips.ldi.b(i32)
1647 declare <16 x i8> @llvm.mips.addvi.b(<16 x i8>, i32)
1648 declare <16 x i8> @llvm.mips.andi.b(<16 x i8>, i32)
1649 declare <16 x i8> @llvm.mips.bclri.b(<16 x i8>, i32)
1650 declare <16 x i8> @llvm.mips.binsli.b(<16 x i8>, <16 x i8>, i32)
1651 declare <16 x i8> @llvm.mips.binsri.b(<16 x i8>, <16 x i8>, i32)
1652 declare <16 x i8> @llvm.mips.bmnzi.b(<16 x i8>, <16 x i8>, i32)
1653 declare <16 x i8> @llvm.mips.bnegi.b(<16 x i8>, i32)
1654 declare <16 x i8> @llvm.mips.bseli.b(<16 x i8>, <16 x i8>, i32)
1655 declare <16 x i8> @llvm.mips.bseti.b(<16 x i8>, i32)
1656 declare <16 x i8> @llvm.mips.clei.s.b(<16 x i8>, i32)
1657 declare <16 x i8> @llvm.mips.clei.u.b(<16 x i8>, i32)
1658 declare <16 x i8> @llvm.mips.clti.s.b(<16 x i8>, i32)
1659 declare <16 x i8> @llvm.mips.clti.u.b(<16 x i8>, i32)
1660 declare <16 x i8> @llvm.mips.maxi.s.b(<16 x i8>, i32)
1661 declare <16 x i8> @llvm.mips.maxi.u.b(<16 x i8>, i32)
1662 declare <16 x i8> @llvm.mips.mini.s.b(<16 x i8>, i32)
1663 declare <16 x i8> @llvm.mips.mini.u.b(<16 x i8>, i32)
1664 declare <16 x i8> @llvm.mips.nori.b(<16 x i8>, i32)
1665 declare <16 x i8> @llvm.mips.ori.b(<16 x i8>, i32)
1666 declare <16 x i8> @llvm.mips.sldi.b(<16 x i8>, <16 x i8>, i32)
1667 declare <16 x i8> @llvm.mips.slli.b(<16 x i8>, i32)
1668 declare <16 x i8> @llvm.mips.splati.b(<16 x i8>, i32)
1669 declare <16 x i8> @llvm.mips.srai.b(<16 x i8>, i32)
1670 declare <16 x i8> @llvm.mips.srari.b(<16 x i8>, i32)
1671 declare <16 x i8> @llvm.mips.srli.b(<16 x i8>, i32)
1672 declare <16 x i8> @llvm.mips.srlri.b(<16 x i8>, i32)
1673 declare i32 @llvm.mips.copy.s.h(<8 x i16>, i32)
1674 declare i32 @llvm.mips.copy.u.h(<8 x i16>, i32)
1675 declare i32 @llvm.mips.copy.s.w(<4 x i32>, i32)
1676 declare i32 @llvm.mips.copy.u.w(<4 x i32>, i32)
1677 declare i64 @llvm.mips.copy.s.d(<2 x i64>, i32)
1678 declare i64 @llvm.mips.copy.u.d(<2 x i64>, i32)
1679 declare i32 @llvm.mips.copy.s.b(<16 x i8>, i32)
1680 declare i32 @llvm.mips.copy.u.b(<16 x i8>, i32)
1681 declare <16 x i8> @llvm.mips.bmzi.b(<16 x i8>, <16 x i8>, i32)