1 ; RUN: llc -march=mipsel -mattr=+dspr2 < %s | FileCheck %s
3 define i64 @test__builtin_mips_dpa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
7 %1 = bitcast i32 %a1.coerce to <2 x i16>
8 %2 = bitcast i32 %a2.coerce to <2 x i16>
9 %3 = tail call i64 @llvm.mips.dpa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
13 declare i64 @llvm.mips.dpa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
15 define i64 @test__builtin_mips_dps_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
19 %1 = bitcast i32 %a1.coerce to <2 x i16>
20 %2 = bitcast i32 %a2.coerce to <2 x i16>
21 %3 = tail call i64 @llvm.mips.dps.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
25 declare i64 @llvm.mips.dps.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
27 define i64 @test__builtin_mips_mulsa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
31 %1 = bitcast i32 %a1.coerce to <2 x i16>
32 %2 = bitcast i32 %a2.coerce to <2 x i16>
33 %3 = tail call i64 @llvm.mips.mulsa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
37 declare i64 @llvm.mips.mulsa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
39 define i64 @test__builtin_mips_dpax_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
43 %1 = bitcast i32 %a1.coerce to <2 x i16>
44 %2 = bitcast i32 %a2.coerce to <2 x i16>
45 %3 = tail call i64 @llvm.mips.dpax.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
49 declare i64 @llvm.mips.dpax.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
51 define i64 @test__builtin_mips_dpsx_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
55 %1 = bitcast i32 %a1.coerce to <2 x i16>
56 %2 = bitcast i32 %a2.coerce to <2 x i16>
57 %3 = tail call i64 @llvm.mips.dpsx.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
61 declare i64 @llvm.mips.dpsx.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
63 define i64 @test__builtin_mips_dpaqx_s_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind {
67 %1 = bitcast i32 %a1.coerce to <2 x i16>
68 %2 = bitcast i32 %a2.coerce to <2 x i16>
69 %3 = tail call i64 @llvm.mips.dpaqx.s.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
73 declare i64 @llvm.mips.dpaqx.s.w.ph(i64, <2 x i16>, <2 x i16>) nounwind
75 define i64 @test__builtin_mips_dpaqx_sa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind {
77 ; CHECK: dpaqx_sa.w.ph
79 %1 = bitcast i32 %a1.coerce to <2 x i16>
80 %2 = bitcast i32 %a2.coerce to <2 x i16>
81 %3 = tail call i64 @llvm.mips.dpaqx.sa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
85 declare i64 @llvm.mips.dpaqx.sa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind
87 define i64 @test__builtin_mips_dpsqx_s_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind {
91 %1 = bitcast i32 %a1.coerce to <2 x i16>
92 %2 = bitcast i32 %a2.coerce to <2 x i16>
93 %3 = tail call i64 @llvm.mips.dpsqx.s.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
97 declare i64 @llvm.mips.dpsqx.s.w.ph(i64, <2 x i16>, <2 x i16>) nounwind
99 define i64 @test__builtin_mips_dpsqx_sa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind {
101 ; CHECK: dpsqx_sa.w.ph
103 %1 = bitcast i32 %a1.coerce to <2 x i16>
104 %2 = bitcast i32 %a2.coerce to <2 x i16>
105 %3 = tail call i64 @llvm.mips.dpsqx.sa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
109 declare i64 @llvm.mips.dpsqx.sa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind
111 define { i32 } @test__builtin_mips_addu_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
115 %0 = bitcast i32 %a0.coerce to <2 x i16>
116 %1 = bitcast i32 %a1.coerce to <2 x i16>
117 %2 = tail call <2 x i16> @llvm.mips.addu.ph(<2 x i16> %0, <2 x i16> %1)
118 %3 = bitcast <2 x i16> %2 to i32
119 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
120 ret { i32 } %.fca.0.insert
123 declare <2 x i16> @llvm.mips.addu.ph(<2 x i16>, <2 x i16>) nounwind
125 define { i32 } @test__builtin_mips_addu_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
129 %0 = bitcast i32 %a0.coerce to <2 x i16>
130 %1 = bitcast i32 %a1.coerce to <2 x i16>
131 %2 = tail call <2 x i16> @llvm.mips.addu.s.ph(<2 x i16> %0, <2 x i16> %1)
132 %3 = bitcast <2 x i16> %2 to i32
133 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
134 ret { i32 } %.fca.0.insert
137 declare <2 x i16> @llvm.mips.addu.s.ph(<2 x i16>, <2 x i16>) nounwind
139 define { i32 } @test__builtin_mips_mulq_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
143 %0 = bitcast i32 %a0.coerce to <2 x i16>
144 %1 = bitcast i32 %a1.coerce to <2 x i16>
145 %2 = tail call <2 x i16> @llvm.mips.mulq.s.ph(<2 x i16> %0, <2 x i16> %1)
146 %3 = bitcast <2 x i16> %2 to i32
147 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
148 ret { i32 } %.fca.0.insert
151 declare <2 x i16> @llvm.mips.mulq.s.ph(<2 x i16>, <2 x i16>) nounwind
153 define { i32 } @test__builtin_mips_subu_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
157 %0 = bitcast i32 %a0.coerce to <2 x i16>
158 %1 = bitcast i32 %a1.coerce to <2 x i16>
159 %2 = tail call <2 x i16> @llvm.mips.subu.ph(<2 x i16> %0, <2 x i16> %1)
160 %3 = bitcast <2 x i16> %2 to i32
161 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
162 ret { i32 } %.fca.0.insert
165 declare <2 x i16> @llvm.mips.subu.ph(<2 x i16>, <2 x i16>) nounwind
167 define { i32 } @test__builtin_mips_subu_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
171 %0 = bitcast i32 %a0.coerce to <2 x i16>
172 %1 = bitcast i32 %a1.coerce to <2 x i16>
173 %2 = tail call <2 x i16> @llvm.mips.subu.s.ph(<2 x i16> %0, <2 x i16> %1)
174 %3 = bitcast <2 x i16> %2 to i32
175 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
176 ret { i32 } %.fca.0.insert
179 declare <2 x i16> @llvm.mips.subu.s.ph(<2 x i16>, <2 x i16>) nounwind
181 define i32 @test__builtin_mips_cmpgdu_eq_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
183 ; CHECK: cmpgdu.eq.qb
185 %0 = bitcast i32 %a0.coerce to <4 x i8>
186 %1 = bitcast i32 %a1.coerce to <4 x i8>
187 %2 = tail call i32 @llvm.mips.cmpgdu.eq.qb(<4 x i8> %0, <4 x i8> %1)
191 declare i32 @llvm.mips.cmpgdu.eq.qb(<4 x i8>, <4 x i8>) nounwind
193 define i32 @test__builtin_mips_cmpgdu_lt_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
195 ; CHECK: cmpgdu.lt.qb
197 %0 = bitcast i32 %a0.coerce to <4 x i8>
198 %1 = bitcast i32 %a1.coerce to <4 x i8>
199 %2 = tail call i32 @llvm.mips.cmpgdu.lt.qb(<4 x i8> %0, <4 x i8> %1)
203 declare i32 @llvm.mips.cmpgdu.lt.qb(<4 x i8>, <4 x i8>) nounwind
205 define i32 @test__builtin_mips_cmpgdu_le_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
207 ; CHECK: cmpgdu.le.qb
209 %0 = bitcast i32 %a0.coerce to <4 x i8>
210 %1 = bitcast i32 %a1.coerce to <4 x i8>
211 %2 = tail call i32 @llvm.mips.cmpgdu.le.qb(<4 x i8> %0, <4 x i8> %1)
215 declare i32 @llvm.mips.cmpgdu.le.qb(<4 x i8>, <4 x i8>) nounwind
217 define { i32 } @test__builtin_mips_precr_qb_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
221 %0 = bitcast i32 %a0.coerce to <2 x i16>
222 %1 = bitcast i32 %a1.coerce to <2 x i16>
223 %2 = tail call <4 x i8> @llvm.mips.precr.qb.ph(<2 x i16> %0, <2 x i16> %1)
224 %3 = bitcast <4 x i8> %2 to i32
225 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
226 ret { i32 } %.fca.0.insert
229 declare <4 x i8> @llvm.mips.precr.qb.ph(<2 x i16>, <2 x i16>) nounwind
231 define { i32 } @test__builtin_mips_precr_sra_ph_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
233 ; CHECK: precr_sra.ph.w
235 %0 = tail call <2 x i16> @llvm.mips.precr.sra.ph.w(i32 %a0, i32 %a1, i32 15)
236 %1 = bitcast <2 x i16> %0 to i32
237 %.fca.0.insert = insertvalue { i32 } undef, i32 %1, 0
238 ret { i32 } %.fca.0.insert
241 declare <2 x i16> @llvm.mips.precr.sra.ph.w(i32, i32, i32) nounwind readnone
243 define { i32 } @test__builtin_mips_precr_sra_r_ph_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
245 ; CHECK: precr_sra_r.ph.w
247 %0 = tail call <2 x i16> @llvm.mips.precr.sra.r.ph.w(i32 %a0, i32 %a1, i32 15)
248 %1 = bitcast <2 x i16> %0 to i32
249 %.fca.0.insert = insertvalue { i32 } undef, i32 %1, 0
250 ret { i32 } %.fca.0.insert
253 declare <2 x i16> @llvm.mips.precr.sra.r.ph.w(i32, i32, i32) nounwind readnone
255 define { i32 } @test__builtin_mips_shra_qb1(i32 %i0, i32 %a0.coerce) nounwind readnone {
259 %0 = bitcast i32 %a0.coerce to <4 x i8>
260 %1 = tail call <4 x i8> @llvm.mips.shra.qb(<4 x i8> %0, i32 3)
261 %2 = bitcast <4 x i8> %1 to i32
262 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
263 ret { i32 } %.fca.0.insert
266 declare <4 x i8> @llvm.mips.shra.qb(<4 x i8>, i32) nounwind readnone
268 define { i32 } @test__builtin_mips_shra_r_qb1(i32 %i0, i32 %a0.coerce) nounwind readnone {
272 %0 = bitcast i32 %a0.coerce to <4 x i8>
273 %1 = tail call <4 x i8> @llvm.mips.shra.r.qb(<4 x i8> %0, i32 3)
274 %2 = bitcast <4 x i8> %1 to i32
275 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
276 ret { i32 } %.fca.0.insert
279 declare <4 x i8> @llvm.mips.shra.r.qb(<4 x i8>, i32) nounwind readnone
281 define { i32 } @test__builtin_mips_shra_qb2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind readnone {
285 %0 = bitcast i32 %a0.coerce to <4 x i8>
286 %1 = tail call <4 x i8> @llvm.mips.shra.qb(<4 x i8> %0, i32 %a1)
287 %2 = bitcast <4 x i8> %1 to i32
288 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
289 ret { i32 } %.fca.0.insert
292 define { i32 } @test__builtin_mips_shra_r_qb2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind readnone {
296 %0 = bitcast i32 %a0.coerce to <4 x i8>
297 %1 = tail call <4 x i8> @llvm.mips.shra.r.qb(<4 x i8> %0, i32 %a1)
298 %2 = bitcast <4 x i8> %1 to i32
299 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
300 ret { i32 } %.fca.0.insert
303 define { i32 } @test__builtin_mips_shrl_ph1(i32 %i0, i32 %a0.coerce) nounwind readnone {
307 %0 = bitcast i32 %a0.coerce to <2 x i16>
308 %1 = tail call <2 x i16> @llvm.mips.shrl.ph(<2 x i16> %0, i32 7)
309 %2 = bitcast <2 x i16> %1 to i32
310 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
311 ret { i32 } %.fca.0.insert
314 declare <2 x i16> @llvm.mips.shrl.ph(<2 x i16>, i32) nounwind readnone
316 define { i32 } @test__builtin_mips_shrl_ph2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind readnone {
320 %0 = bitcast i32 %a0.coerce to <2 x i16>
321 %1 = tail call <2 x i16> @llvm.mips.shrl.ph(<2 x i16> %0, i32 %a1)
322 %2 = bitcast <2 x i16> %1 to i32
323 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
324 ret { i32 } %.fca.0.insert
327 define { i32 } @test__builtin_mips_absq_s_qb1(i32 %i0, i32 %a0.coerce) nounwind {
331 %0 = bitcast i32 %a0.coerce to <4 x i8>
332 %1 = tail call <4 x i8> @llvm.mips.absq.s.qb(<4 x i8> %0)
333 %2 = bitcast <4 x i8> %1 to i32
334 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
335 ret { i32 } %.fca.0.insert
338 declare <4 x i8> @llvm.mips.absq.s.qb(<4 x i8>) nounwind
340 define { i32 } @test__builtin_mips_mul_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
344 %0 = bitcast i32 %a0.coerce to <2 x i16>
345 %1 = bitcast i32 %a1.coerce to <2 x i16>
346 %2 = tail call <2 x i16> @llvm.mips.mul.ph(<2 x i16> %0, <2 x i16> %1)
347 %3 = bitcast <2 x i16> %2 to i32
348 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
349 ret { i32 } %.fca.0.insert
352 declare <2 x i16> @llvm.mips.mul.ph(<2 x i16>, <2 x i16>) nounwind
354 define { i32 } @test__builtin_mips_mul_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
358 %0 = bitcast i32 %a0.coerce to <2 x i16>
359 %1 = bitcast i32 %a1.coerce to <2 x i16>
360 %2 = tail call <2 x i16> @llvm.mips.mul.s.ph(<2 x i16> %0, <2 x i16> %1)
361 %3 = bitcast <2 x i16> %2 to i32
362 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
363 ret { i32 } %.fca.0.insert
366 declare <2 x i16> @llvm.mips.mul.s.ph(<2 x i16>, <2 x i16>) nounwind
368 define i32 @test__builtin_mips_mulq_rs_w1(i32 %i0, i32 %a0, i32 %a1) nounwind {
372 %0 = tail call i32 @llvm.mips.mulq.rs.w(i32 %a0, i32 %a1)
376 declare i32 @llvm.mips.mulq.rs.w(i32, i32) nounwind
378 define i32 @test__builtin_mips_mulq_s_w1(i32 %i0, i32 %a0, i32 %a1) nounwind {
382 %0 = tail call i32 @llvm.mips.mulq.s.w(i32 %a0, i32 %a1)
386 declare i32 @llvm.mips.mulq.s.w(i32, i32) nounwind
388 define { i32 } @test__builtin_mips_adduh_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
392 %0 = bitcast i32 %a0.coerce to <4 x i8>
393 %1 = bitcast i32 %a1.coerce to <4 x i8>
394 %2 = tail call <4 x i8> @llvm.mips.adduh.qb(<4 x i8> %0, <4 x i8> %1)
395 %3 = bitcast <4 x i8> %2 to i32
396 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
397 ret { i32 } %.fca.0.insert
400 declare <4 x i8> @llvm.mips.adduh.qb(<4 x i8>, <4 x i8>) nounwind readnone
402 define { i32 } @test__builtin_mips_adduh_r_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
406 %0 = bitcast i32 %a0.coerce to <4 x i8>
407 %1 = bitcast i32 %a1.coerce to <4 x i8>
408 %2 = tail call <4 x i8> @llvm.mips.adduh.r.qb(<4 x i8> %0, <4 x i8> %1)
409 %3 = bitcast <4 x i8> %2 to i32
410 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
411 ret { i32 } %.fca.0.insert
414 declare <4 x i8> @llvm.mips.adduh.r.qb(<4 x i8>, <4 x i8>) nounwind readnone
416 define { i32 } @test__builtin_mips_subuh_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
420 %0 = bitcast i32 %a0.coerce to <4 x i8>
421 %1 = bitcast i32 %a1.coerce to <4 x i8>
422 %2 = tail call <4 x i8> @llvm.mips.subuh.qb(<4 x i8> %0, <4 x i8> %1)
423 %3 = bitcast <4 x i8> %2 to i32
424 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
425 ret { i32 } %.fca.0.insert
428 declare <4 x i8> @llvm.mips.subuh.qb(<4 x i8>, <4 x i8>) nounwind readnone
430 define { i32 } @test__builtin_mips_subuh_r_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
434 %0 = bitcast i32 %a0.coerce to <4 x i8>
435 %1 = bitcast i32 %a1.coerce to <4 x i8>
436 %2 = tail call <4 x i8> @llvm.mips.subuh.r.qb(<4 x i8> %0, <4 x i8> %1)
437 %3 = bitcast <4 x i8> %2 to i32
438 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
439 ret { i32 } %.fca.0.insert
442 declare <4 x i8> @llvm.mips.subuh.r.qb(<4 x i8>, <4 x i8>) nounwind readnone
444 define { i32 } @test__builtin_mips_addqh_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
448 %0 = bitcast i32 %a0.coerce to <2 x i16>
449 %1 = bitcast i32 %a1.coerce to <2 x i16>
450 %2 = tail call <2 x i16> @llvm.mips.addqh.ph(<2 x i16> %0, <2 x i16> %1)
451 %3 = bitcast <2 x i16> %2 to i32
452 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
453 ret { i32 } %.fca.0.insert
456 declare <2 x i16> @llvm.mips.addqh.ph(<2 x i16>, <2 x i16>) nounwind readnone
458 define { i32 } @test__builtin_mips_addqh_r_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
462 %0 = bitcast i32 %a0.coerce to <2 x i16>
463 %1 = bitcast i32 %a1.coerce to <2 x i16>
464 %2 = tail call <2 x i16> @llvm.mips.addqh.r.ph(<2 x i16> %0, <2 x i16> %1)
465 %3 = bitcast <2 x i16> %2 to i32
466 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
467 ret { i32 } %.fca.0.insert
470 declare <2 x i16> @llvm.mips.addqh.r.ph(<2 x i16>, <2 x i16>) nounwind readnone
472 define i32 @test__builtin_mips_addqh_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
476 %0 = tail call i32 @llvm.mips.addqh.w(i32 %a0, i32 %a1)
480 declare i32 @llvm.mips.addqh.w(i32, i32) nounwind readnone
482 define i32 @test__builtin_mips_addqh_r_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
486 %0 = tail call i32 @llvm.mips.addqh.r.w(i32 %a0, i32 %a1)
490 declare i32 @llvm.mips.addqh.r.w(i32, i32) nounwind readnone
492 define { i32 } @test__builtin_mips_subqh_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
496 %0 = bitcast i32 %a0.coerce to <2 x i16>
497 %1 = bitcast i32 %a1.coerce to <2 x i16>
498 %2 = tail call <2 x i16> @llvm.mips.subqh.ph(<2 x i16> %0, <2 x i16> %1)
499 %3 = bitcast <2 x i16> %2 to i32
500 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
501 ret { i32 } %.fca.0.insert
504 declare <2 x i16> @llvm.mips.subqh.ph(<2 x i16>, <2 x i16>) nounwind readnone
506 define { i32 } @test__builtin_mips_subqh_r_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
510 %0 = bitcast i32 %a0.coerce to <2 x i16>
511 %1 = bitcast i32 %a1.coerce to <2 x i16>
512 %2 = tail call <2 x i16> @llvm.mips.subqh.r.ph(<2 x i16> %0, <2 x i16> %1)
513 %3 = bitcast <2 x i16> %2 to i32
514 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
515 ret { i32 } %.fca.0.insert
518 declare <2 x i16> @llvm.mips.subqh.r.ph(<2 x i16>, <2 x i16>) nounwind readnone
520 define i32 @test__builtin_mips_subqh_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
524 %0 = tail call i32 @llvm.mips.subqh.w(i32 %a0, i32 %a1)
528 declare i32 @llvm.mips.subqh.w(i32, i32) nounwind readnone
530 define i32 @test__builtin_mips_subqh_r_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
534 %0 = tail call i32 @llvm.mips.subqh.r.w(i32 %a0, i32 %a1)
538 declare i32 @llvm.mips.subqh.r.w(i32, i32) nounwind readnone
540 define i32 @test__builtin_mips_append1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
542 ; CHECK: append ${{[0-9]+}}
544 %0 = tail call i32 @llvm.mips.append(i32 %a0, i32 %a1, i32 15)
548 declare i32 @llvm.mips.append(i32, i32, i32) nounwind readnone
550 define i32 @test__builtin_mips_balign1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
552 ; CHECK: balign ${{[0-9]+}}
554 %0 = tail call i32 @llvm.mips.balign(i32 %a0, i32 %a1, i32 1)
558 declare i32 @llvm.mips.balign(i32, i32, i32) nounwind readnone
560 define i32 @test__builtin_mips_prepend1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
562 ; CHECK: prepend ${{[0-9]+}}
564 %0 = tail call i32 @llvm.mips.prepend(i32 %a0, i32 %a1, i32 15)
568 declare i32 @llvm.mips.prepend(i32, i32, i32) nounwind readnone