[mips][msa] CHECK-DAG-ize MSA 2rf.ll test.
[oota-llvm.git] / test / CodeGen / Mips / msa / bit.ll
1 ; Test the MSA intrinsics that are encoded with the BIT instruction format.
2
3 ; RUN: llc -march=mips -mattr=+msa,+fp64 < %s | FileCheck %s
4
5 @llvm_mips_sat_s_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
6 @llvm_mips_sat_s_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
7
8 define void @llvm_mips_sat_s_b_test() nounwind {
9 entry:
10   %0 = load <16 x i8>* @llvm_mips_sat_s_b_ARG1
11   %1 = tail call <16 x i8> @llvm.mips.sat.s.b(<16 x i8> %0, i32 7)
12   store <16 x i8> %1, <16 x i8>* @llvm_mips_sat_s_b_RES
13   ret void
14 }
15
16 declare <16 x i8> @llvm.mips.sat.s.b(<16 x i8>, i32) nounwind
17
18 ; CHECK: llvm_mips_sat_s_b_test:
19 ; CHECK: ld.b
20 ; CHECK: sat_s.b
21 ; CHECK: st.b
22 ; CHECK: .size llvm_mips_sat_s_b_test
23 ;
24 @llvm_mips_sat_s_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
25 @llvm_mips_sat_s_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
26
27 define void @llvm_mips_sat_s_h_test() nounwind {
28 entry:
29   %0 = load <8 x i16>* @llvm_mips_sat_s_h_ARG1
30   %1 = tail call <8 x i16> @llvm.mips.sat.s.h(<8 x i16> %0, i32 7)
31   store <8 x i16> %1, <8 x i16>* @llvm_mips_sat_s_h_RES
32   ret void
33 }
34
35 declare <8 x i16> @llvm.mips.sat.s.h(<8 x i16>, i32) nounwind
36
37 ; CHECK: llvm_mips_sat_s_h_test:
38 ; CHECK: ld.h
39 ; CHECK: sat_s.h
40 ; CHECK: st.h
41 ; CHECK: .size llvm_mips_sat_s_h_test
42 ;
43 @llvm_mips_sat_s_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
44 @llvm_mips_sat_s_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
45
46 define void @llvm_mips_sat_s_w_test() nounwind {
47 entry:
48   %0 = load <4 x i32>* @llvm_mips_sat_s_w_ARG1
49   %1 = tail call <4 x i32> @llvm.mips.sat.s.w(<4 x i32> %0, i32 7)
50   store <4 x i32> %1, <4 x i32>* @llvm_mips_sat_s_w_RES
51   ret void
52 }
53
54 declare <4 x i32> @llvm.mips.sat.s.w(<4 x i32>, i32) nounwind
55
56 ; CHECK: llvm_mips_sat_s_w_test:
57 ; CHECK: ld.w
58 ; CHECK: sat_s.w
59 ; CHECK: st.w
60 ; CHECK: .size llvm_mips_sat_s_w_test
61 ;
62 @llvm_mips_sat_s_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
63 @llvm_mips_sat_s_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
64
65 define void @llvm_mips_sat_s_d_test() nounwind {
66 entry:
67   %0 = load <2 x i64>* @llvm_mips_sat_s_d_ARG1
68   %1 = tail call <2 x i64> @llvm.mips.sat.s.d(<2 x i64> %0, i32 7)
69   store <2 x i64> %1, <2 x i64>* @llvm_mips_sat_s_d_RES
70   ret void
71 }
72
73 declare <2 x i64> @llvm.mips.sat.s.d(<2 x i64>, i32) nounwind
74
75 ; CHECK: llvm_mips_sat_s_d_test:
76 ; CHECK: ld.d
77 ; CHECK: sat_s.d
78 ; CHECK: st.d
79 ; CHECK: .size llvm_mips_sat_s_d_test
80 ;
81 @llvm_mips_sat_u_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
82 @llvm_mips_sat_u_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
83
84 define void @llvm_mips_sat_u_b_test() nounwind {
85 entry:
86   %0 = load <16 x i8>* @llvm_mips_sat_u_b_ARG1
87   %1 = tail call <16 x i8> @llvm.mips.sat.u.b(<16 x i8> %0, i32 7)
88   store <16 x i8> %1, <16 x i8>* @llvm_mips_sat_u_b_RES
89   ret void
90 }
91
92 declare <16 x i8> @llvm.mips.sat.u.b(<16 x i8>, i32) nounwind
93
94 ; CHECK: llvm_mips_sat_u_b_test:
95 ; CHECK: ld.b
96 ; CHECK: sat_u.b
97 ; CHECK: st.b
98 ; CHECK: .size llvm_mips_sat_u_b_test
99 ;
100 @llvm_mips_sat_u_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
101 @llvm_mips_sat_u_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
102
103 define void @llvm_mips_sat_u_h_test() nounwind {
104 entry:
105   %0 = load <8 x i16>* @llvm_mips_sat_u_h_ARG1
106   %1 = tail call <8 x i16> @llvm.mips.sat.u.h(<8 x i16> %0, i32 7)
107   store <8 x i16> %1, <8 x i16>* @llvm_mips_sat_u_h_RES
108   ret void
109 }
110
111 declare <8 x i16> @llvm.mips.sat.u.h(<8 x i16>, i32) nounwind
112
113 ; CHECK: llvm_mips_sat_u_h_test:
114 ; CHECK: ld.h
115 ; CHECK: sat_u.h
116 ; CHECK: st.h
117 ; CHECK: .size llvm_mips_sat_u_h_test
118 ;
119 @llvm_mips_sat_u_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
120 @llvm_mips_sat_u_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
121
122 define void @llvm_mips_sat_u_w_test() nounwind {
123 entry:
124   %0 = load <4 x i32>* @llvm_mips_sat_u_w_ARG1
125   %1 = tail call <4 x i32> @llvm.mips.sat.u.w(<4 x i32> %0, i32 7)
126   store <4 x i32> %1, <4 x i32>* @llvm_mips_sat_u_w_RES
127   ret void
128 }
129
130 declare <4 x i32> @llvm.mips.sat.u.w(<4 x i32>, i32) nounwind
131
132 ; CHECK: llvm_mips_sat_u_w_test:
133 ; CHECK: ld.w
134 ; CHECK: sat_u.w
135 ; CHECK: st.w
136 ; CHECK: .size llvm_mips_sat_u_w_test
137 ;
138 @llvm_mips_sat_u_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
139 @llvm_mips_sat_u_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
140
141 define void @llvm_mips_sat_u_d_test() nounwind {
142 entry:
143   %0 = load <2 x i64>* @llvm_mips_sat_u_d_ARG1
144   %1 = tail call <2 x i64> @llvm.mips.sat.u.d(<2 x i64> %0, i32 7)
145   store <2 x i64> %1, <2 x i64>* @llvm_mips_sat_u_d_RES
146   ret void
147 }
148
149 declare <2 x i64> @llvm.mips.sat.u.d(<2 x i64>, i32) nounwind
150
151 ; CHECK: llvm_mips_sat_u_d_test:
152 ; CHECK: ld.d
153 ; CHECK: sat_u.d
154 ; CHECK: st.d
155 ; CHECK: .size llvm_mips_sat_u_d_test
156 ;
157 @llvm_mips_slli_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
158 @llvm_mips_slli_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
159
160 define void @llvm_mips_slli_b_test() nounwind {
161 entry:
162   %0 = load <16 x i8>* @llvm_mips_slli_b_ARG1
163   %1 = tail call <16 x i8> @llvm.mips.slli.b(<16 x i8> %0, i32 7)
164   store <16 x i8> %1, <16 x i8>* @llvm_mips_slli_b_RES
165   ret void
166 }
167
168 declare <16 x i8> @llvm.mips.slli.b(<16 x i8>, i32) nounwind
169
170 ; CHECK: llvm_mips_slli_b_test:
171 ; CHECK: ld.b
172 ; CHECK: slli.b
173 ; CHECK: st.b
174 ; CHECK: .size llvm_mips_slli_b_test
175 ;
176 @llvm_mips_slli_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
177 @llvm_mips_slli_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
178
179 define void @llvm_mips_slli_h_test() nounwind {
180 entry:
181   %0 = load <8 x i16>* @llvm_mips_slli_h_ARG1
182   %1 = tail call <8 x i16> @llvm.mips.slli.h(<8 x i16> %0, i32 7)
183   store <8 x i16> %1, <8 x i16>* @llvm_mips_slli_h_RES
184   ret void
185 }
186
187 declare <8 x i16> @llvm.mips.slli.h(<8 x i16>, i32) nounwind
188
189 ; CHECK: llvm_mips_slli_h_test:
190 ; CHECK: ld.h
191 ; CHECK: slli.h
192 ; CHECK: st.h
193 ; CHECK: .size llvm_mips_slli_h_test
194 ;
195 @llvm_mips_slli_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
196 @llvm_mips_slli_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
197
198 define void @llvm_mips_slli_w_test() nounwind {
199 entry:
200   %0 = load <4 x i32>* @llvm_mips_slli_w_ARG1
201   %1 = tail call <4 x i32> @llvm.mips.slli.w(<4 x i32> %0, i32 7)
202   store <4 x i32> %1, <4 x i32>* @llvm_mips_slli_w_RES
203   ret void
204 }
205
206 declare <4 x i32> @llvm.mips.slli.w(<4 x i32>, i32) nounwind
207
208 ; CHECK: llvm_mips_slli_w_test:
209 ; CHECK: ld.w
210 ; CHECK: slli.w
211 ; CHECK: st.w
212 ; CHECK: .size llvm_mips_slli_w_test
213 ;
214 @llvm_mips_slli_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
215 @llvm_mips_slli_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
216
217 define void @llvm_mips_slli_d_test() nounwind {
218 entry:
219   %0 = load <2 x i64>* @llvm_mips_slli_d_ARG1
220   %1 = tail call <2 x i64> @llvm.mips.slli.d(<2 x i64> %0, i32 7)
221   store <2 x i64> %1, <2 x i64>* @llvm_mips_slli_d_RES
222   ret void
223 }
224
225 declare <2 x i64> @llvm.mips.slli.d(<2 x i64>, i32) nounwind
226
227 ; CHECK: llvm_mips_slli_d_test:
228 ; CHECK: ld.d
229 ; CHECK: slli.d
230 ; CHECK: st.d
231 ; CHECK: .size llvm_mips_slli_d_test
232 ;
233 @llvm_mips_srai_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
234 @llvm_mips_srai_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
235
236 define void @llvm_mips_srai_b_test() nounwind {
237 entry:
238   %0 = load <16 x i8>* @llvm_mips_srai_b_ARG1
239   %1 = tail call <16 x i8> @llvm.mips.srai.b(<16 x i8> %0, i32 7)
240   store <16 x i8> %1, <16 x i8>* @llvm_mips_srai_b_RES
241   ret void
242 }
243
244 declare <16 x i8> @llvm.mips.srai.b(<16 x i8>, i32) nounwind
245
246 ; CHECK: llvm_mips_srai_b_test:
247 ; CHECK: ld.b
248 ; CHECK: srai.b
249 ; CHECK: st.b
250 ; CHECK: .size llvm_mips_srai_b_test
251 ;
252 @llvm_mips_srai_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
253 @llvm_mips_srai_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
254
255 define void @llvm_mips_srai_h_test() nounwind {
256 entry:
257   %0 = load <8 x i16>* @llvm_mips_srai_h_ARG1
258   %1 = tail call <8 x i16> @llvm.mips.srai.h(<8 x i16> %0, i32 7)
259   store <8 x i16> %1, <8 x i16>* @llvm_mips_srai_h_RES
260   ret void
261 }
262
263 declare <8 x i16> @llvm.mips.srai.h(<8 x i16>, i32) nounwind
264
265 ; CHECK: llvm_mips_srai_h_test:
266 ; CHECK: ld.h
267 ; CHECK: srai.h
268 ; CHECK: st.h
269 ; CHECK: .size llvm_mips_srai_h_test
270 ;
271 @llvm_mips_srai_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
272 @llvm_mips_srai_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
273
274 define void @llvm_mips_srai_w_test() nounwind {
275 entry:
276   %0 = load <4 x i32>* @llvm_mips_srai_w_ARG1
277   %1 = tail call <4 x i32> @llvm.mips.srai.w(<4 x i32> %0, i32 7)
278   store <4 x i32> %1, <4 x i32>* @llvm_mips_srai_w_RES
279   ret void
280 }
281
282 declare <4 x i32> @llvm.mips.srai.w(<4 x i32>, i32) nounwind
283
284 ; CHECK: llvm_mips_srai_w_test:
285 ; CHECK: ld.w
286 ; CHECK: srai.w
287 ; CHECK: st.w
288 ; CHECK: .size llvm_mips_srai_w_test
289 ;
290 @llvm_mips_srai_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
291 @llvm_mips_srai_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
292
293 define void @llvm_mips_srai_d_test() nounwind {
294 entry:
295   %0 = load <2 x i64>* @llvm_mips_srai_d_ARG1
296   %1 = tail call <2 x i64> @llvm.mips.srai.d(<2 x i64> %0, i32 7)
297   store <2 x i64> %1, <2 x i64>* @llvm_mips_srai_d_RES
298   ret void
299 }
300
301 declare <2 x i64> @llvm.mips.srai.d(<2 x i64>, i32) nounwind
302
303 ; CHECK: llvm_mips_srai_d_test:
304 ; CHECK: ld.d
305 ; CHECK: srai.d
306 ; CHECK: st.d
307 ; CHECK: .size llvm_mips_srai_d_test
308 ;
309 @llvm_mips_srari_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
310 @llvm_mips_srari_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
311
312 define void @llvm_mips_srari_b_test() nounwind {
313 entry:
314   %0 = load <16 x i8>* @llvm_mips_srari_b_ARG1
315   %1 = tail call <16 x i8> @llvm.mips.srari.b(<16 x i8> %0, i32 7)
316   store <16 x i8> %1, <16 x i8>* @llvm_mips_srari_b_RES
317   ret void
318 }
319
320 declare <16 x i8> @llvm.mips.srari.b(<16 x i8>, i32) nounwind
321
322 ; CHECK: llvm_mips_srari_b_test:
323 ; CHECK: ld.b
324 ; CHECK: srari.b
325 ; CHECK: st.b
326 ; CHECK: .size llvm_mips_srari_b_test
327 ;
328 @llvm_mips_srari_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
329 @llvm_mips_srari_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
330
331 define void @llvm_mips_srari_h_test() nounwind {
332 entry:
333   %0 = load <8 x i16>* @llvm_mips_srari_h_ARG1
334   %1 = tail call <8 x i16> @llvm.mips.srari.h(<8 x i16> %0, i32 7)
335   store <8 x i16> %1, <8 x i16>* @llvm_mips_srari_h_RES
336   ret void
337 }
338
339 declare <8 x i16> @llvm.mips.srari.h(<8 x i16>, i32) nounwind
340
341 ; CHECK: llvm_mips_srari_h_test:
342 ; CHECK: ld.h
343 ; CHECK: srari.h
344 ; CHECK: st.h
345 ; CHECK: .size llvm_mips_srari_h_test
346 ;
347 @llvm_mips_srari_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
348 @llvm_mips_srari_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
349
350 define void @llvm_mips_srari_w_test() nounwind {
351 entry:
352   %0 = load <4 x i32>* @llvm_mips_srari_w_ARG1
353   %1 = tail call <4 x i32> @llvm.mips.srari.w(<4 x i32> %0, i32 7)
354   store <4 x i32> %1, <4 x i32>* @llvm_mips_srari_w_RES
355   ret void
356 }
357
358 declare <4 x i32> @llvm.mips.srari.w(<4 x i32>, i32) nounwind
359
360 ; CHECK: llvm_mips_srari_w_test:
361 ; CHECK: ld.w
362 ; CHECK: srari.w
363 ; CHECK: st.w
364 ; CHECK: .size llvm_mips_srari_w_test
365 ;
366 @llvm_mips_srari_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
367 @llvm_mips_srari_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
368
369 define void @llvm_mips_srari_d_test() nounwind {
370 entry:
371   %0 = load <2 x i64>* @llvm_mips_srari_d_ARG1
372   %1 = tail call <2 x i64> @llvm.mips.srari.d(<2 x i64> %0, i32 7)
373   store <2 x i64> %1, <2 x i64>* @llvm_mips_srari_d_RES
374   ret void
375 }
376
377 declare <2 x i64> @llvm.mips.srari.d(<2 x i64>, i32) nounwind
378
379 ; CHECK: llvm_mips_srari_d_test:
380 ; CHECK: ld.d
381 ; CHECK: srari.d
382 ; CHECK: st.d
383 ; CHECK: .size llvm_mips_srari_d_test
384 ;
385 @llvm_mips_srli_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
386 @llvm_mips_srli_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
387
388 define void @llvm_mips_srli_b_test() nounwind {
389 entry:
390   %0 = load <16 x i8>* @llvm_mips_srli_b_ARG1
391   %1 = tail call <16 x i8> @llvm.mips.srli.b(<16 x i8> %0, i32 7)
392   store <16 x i8> %1, <16 x i8>* @llvm_mips_srli_b_RES
393   ret void
394 }
395
396 declare <16 x i8> @llvm.mips.srli.b(<16 x i8>, i32) nounwind
397
398 ; CHECK: llvm_mips_srli_b_test:
399 ; CHECK: ld.b
400 ; CHECK: srli.b
401 ; CHECK: st.b
402 ; CHECK: .size llvm_mips_srli_b_test
403 ;
404 @llvm_mips_srli_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
405 @llvm_mips_srli_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
406
407 define void @llvm_mips_srli_h_test() nounwind {
408 entry:
409   %0 = load <8 x i16>* @llvm_mips_srli_h_ARG1
410   %1 = tail call <8 x i16> @llvm.mips.srli.h(<8 x i16> %0, i32 7)
411   store <8 x i16> %1, <8 x i16>* @llvm_mips_srli_h_RES
412   ret void
413 }
414
415 declare <8 x i16> @llvm.mips.srli.h(<8 x i16>, i32) nounwind
416
417 ; CHECK: llvm_mips_srli_h_test:
418 ; CHECK: ld.h
419 ; CHECK: srli.h
420 ; CHECK: st.h
421 ; CHECK: .size llvm_mips_srli_h_test
422 ;
423 @llvm_mips_srli_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
424 @llvm_mips_srli_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
425
426 define void @llvm_mips_srli_w_test() nounwind {
427 entry:
428   %0 = load <4 x i32>* @llvm_mips_srli_w_ARG1
429   %1 = tail call <4 x i32> @llvm.mips.srli.w(<4 x i32> %0, i32 7)
430   store <4 x i32> %1, <4 x i32>* @llvm_mips_srli_w_RES
431   ret void
432 }
433
434 declare <4 x i32> @llvm.mips.srli.w(<4 x i32>, i32) nounwind
435
436 ; CHECK: llvm_mips_srli_w_test:
437 ; CHECK: ld.w
438 ; CHECK: srli.w
439 ; CHECK: st.w
440 ; CHECK: .size llvm_mips_srli_w_test
441 ;
442 @llvm_mips_srli_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
443 @llvm_mips_srli_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
444
445 define void @llvm_mips_srli_d_test() nounwind {
446 entry:
447   %0 = load <2 x i64>* @llvm_mips_srli_d_ARG1
448   %1 = tail call <2 x i64> @llvm.mips.srli.d(<2 x i64> %0, i32 7)
449   store <2 x i64> %1, <2 x i64>* @llvm_mips_srli_d_RES
450   ret void
451 }
452
453 declare <2 x i64> @llvm.mips.srli.d(<2 x i64>, i32) nounwind
454
455 ; CHECK: llvm_mips_srli_d_test:
456 ; CHECK: ld.d
457 ; CHECK: srli.d
458 ; CHECK: st.d
459 ; CHECK: .size llvm_mips_srli_d_test
460 ;
461 @llvm_mips_srlri_b_ARG1 = global <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, align 16
462 @llvm_mips_srlri_b_RES  = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16
463
464 define void @llvm_mips_srlri_b_test() nounwind {
465 entry:
466   %0 = load <16 x i8>* @llvm_mips_srlri_b_ARG1
467   %1 = tail call <16 x i8> @llvm.mips.srlri.b(<16 x i8> %0, i32 7)
468   store <16 x i8> %1, <16 x i8>* @llvm_mips_srlri_b_RES
469   ret void
470 }
471
472 declare <16 x i8> @llvm.mips.srlri.b(<16 x i8>, i32) nounwind
473
474 ; CHECK: llvm_mips_srlri_b_test:
475 ; CHECK: ld.b
476 ; CHECK: srlri.b
477 ; CHECK: st.b
478 ; CHECK: .size llvm_mips_srlri_b_test
479 ;
480 @llvm_mips_srlri_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16
481 @llvm_mips_srlri_h_RES  = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16
482
483 define void @llvm_mips_srlri_h_test() nounwind {
484 entry:
485   %0 = load <8 x i16>* @llvm_mips_srlri_h_ARG1
486   %1 = tail call <8 x i16> @llvm.mips.srlri.h(<8 x i16> %0, i32 7)
487   store <8 x i16> %1, <8 x i16>* @llvm_mips_srlri_h_RES
488   ret void
489 }
490
491 declare <8 x i16> @llvm.mips.srlri.h(<8 x i16>, i32) nounwind
492
493 ; CHECK: llvm_mips_srlri_h_test:
494 ; CHECK: ld.h
495 ; CHECK: srlri.h
496 ; CHECK: st.h
497 ; CHECK: .size llvm_mips_srlri_h_test
498 ;
499 @llvm_mips_srlri_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16
500 @llvm_mips_srlri_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
501
502 define void @llvm_mips_srlri_w_test() nounwind {
503 entry:
504   %0 = load <4 x i32>* @llvm_mips_srlri_w_ARG1
505   %1 = tail call <4 x i32> @llvm.mips.srlri.w(<4 x i32> %0, i32 7)
506   store <4 x i32> %1, <4 x i32>* @llvm_mips_srlri_w_RES
507   ret void
508 }
509
510 declare <4 x i32> @llvm.mips.srlri.w(<4 x i32>, i32) nounwind
511
512 ; CHECK: llvm_mips_srlri_w_test:
513 ; CHECK: ld.w
514 ; CHECK: srlri.w
515 ; CHECK: st.w
516 ; CHECK: .size llvm_mips_srlri_w_test
517 ;
518 @llvm_mips_srlri_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16
519 @llvm_mips_srlri_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
520
521 define void @llvm_mips_srlri_d_test() nounwind {
522 entry:
523   %0 = load <2 x i64>* @llvm_mips_srlri_d_ARG1
524   %1 = tail call <2 x i64> @llvm.mips.srlri.d(<2 x i64> %0, i32 7)
525   store <2 x i64> %1, <2 x i64>* @llvm_mips_srlri_d_RES
526   ret void
527 }
528
529 declare <2 x i64> @llvm.mips.srlri.d(<2 x i64>, i32) nounwind
530
531 ; CHECK: llvm_mips_srlri_d_test:
532 ; CHECK: ld.d
533 ; CHECK: srlri.d
534 ; CHECK: st.d
535 ; CHECK: .size llvm_mips_srlri_d_test
536 ;