xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/dsp-r2.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -mattr=+dspr2 < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine i64 @test__builtin_mips_dpa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
4*9880d681SAndroid Build Coastguard Workerentry:
5*9880d681SAndroid Build Coastguard Worker; CHECK: dpa.w.ph
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
8*9880d681SAndroid Build Coastguard Worker  %2 = bitcast i32 %a2.coerce to <2 x i16>
9*9880d681SAndroid Build Coastguard Worker  %3 = tail call i64 @llvm.mips.dpa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
10*9880d681SAndroid Build Coastguard Worker  ret i64 %3
11*9880d681SAndroid Build Coastguard Worker}
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.mips.dpa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerdefine i64 @test__builtin_mips_dps_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
16*9880d681SAndroid Build Coastguard Workerentry:
17*9880d681SAndroid Build Coastguard Worker; CHECK: dps.w.ph
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
20*9880d681SAndroid Build Coastguard Worker  %2 = bitcast i32 %a2.coerce to <2 x i16>
21*9880d681SAndroid Build Coastguard Worker  %3 = tail call i64 @llvm.mips.dps.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
22*9880d681SAndroid Build Coastguard Worker  ret i64 %3
23*9880d681SAndroid Build Coastguard Worker}
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.mips.dps.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workerdefine i64 @test__builtin_mips_mulsa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
28*9880d681SAndroid Build Coastguard Workerentry:
29*9880d681SAndroid Build Coastguard Worker; CHECK: mulsa.w.ph
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
32*9880d681SAndroid Build Coastguard Worker  %2 = bitcast i32 %a2.coerce to <2 x i16>
33*9880d681SAndroid Build Coastguard Worker  %3 = tail call i64 @llvm.mips.mulsa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
34*9880d681SAndroid Build Coastguard Worker  ret i64 %3
35*9880d681SAndroid Build Coastguard Worker}
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.mips.mulsa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Workerdefine i64 @test__builtin_mips_dpax_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
40*9880d681SAndroid Build Coastguard Workerentry:
41*9880d681SAndroid Build Coastguard Worker; CHECK: dpax.w.ph
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
44*9880d681SAndroid Build Coastguard Worker  %2 = bitcast i32 %a2.coerce to <2 x i16>
45*9880d681SAndroid Build Coastguard Worker  %3 = tail call i64 @llvm.mips.dpax.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
46*9880d681SAndroid Build Coastguard Worker  ret i64 %3
47*9880d681SAndroid Build Coastguard Worker}
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.mips.dpax.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Workerdefine i64 @test__builtin_mips_dpsx_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone {
52*9880d681SAndroid Build Coastguard Workerentry:
53*9880d681SAndroid Build Coastguard Worker; CHECK: dpsx.w.ph
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
56*9880d681SAndroid Build Coastguard Worker  %2 = bitcast i32 %a2.coerce to <2 x i16>
57*9880d681SAndroid Build Coastguard Worker  %3 = tail call i64 @llvm.mips.dpsx.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
58*9880d681SAndroid Build Coastguard Worker  ret i64 %3
59*9880d681SAndroid Build Coastguard Worker}
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.mips.dpsx.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Workerdefine i64 @test__builtin_mips_dpaqx_s_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind {
64*9880d681SAndroid Build Coastguard Workerentry:
65*9880d681SAndroid Build Coastguard Worker; CHECK: dpaqx_s.w.ph
66*9880d681SAndroid Build Coastguard Worker
67*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
68*9880d681SAndroid Build Coastguard Worker  %2 = bitcast i32 %a2.coerce to <2 x i16>
69*9880d681SAndroid Build Coastguard Worker  %3 = tail call i64 @llvm.mips.dpaqx.s.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
70*9880d681SAndroid Build Coastguard Worker  ret i64 %3
71*9880d681SAndroid Build Coastguard Worker}
72*9880d681SAndroid Build Coastguard Worker
73*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.mips.dpaqx.s.w.ph(i64, <2 x i16>, <2 x i16>) nounwind
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Workerdefine i64 @test__builtin_mips_dpaqx_sa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind {
76*9880d681SAndroid Build Coastguard Workerentry:
77*9880d681SAndroid Build Coastguard Worker; CHECK: dpaqx_sa.w.ph
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
80*9880d681SAndroid Build Coastguard Worker  %2 = bitcast i32 %a2.coerce to <2 x i16>
81*9880d681SAndroid Build Coastguard Worker  %3 = tail call i64 @llvm.mips.dpaqx.sa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
82*9880d681SAndroid Build Coastguard Worker  ret i64 %3
83*9880d681SAndroid Build Coastguard Worker}
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.mips.dpaqx.sa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard Workerdefine i64 @test__builtin_mips_dpsqx_s_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind {
88*9880d681SAndroid Build Coastguard Workerentry:
89*9880d681SAndroid Build Coastguard Worker; CHECK: dpsqx_s.w.ph
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
92*9880d681SAndroid Build Coastguard Worker  %2 = bitcast i32 %a2.coerce to <2 x i16>
93*9880d681SAndroid Build Coastguard Worker  %3 = tail call i64 @llvm.mips.dpsqx.s.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
94*9880d681SAndroid Build Coastguard Worker  ret i64 %3
95*9880d681SAndroid Build Coastguard Worker}
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.mips.dpsqx.s.w.ph(i64, <2 x i16>, <2 x i16>) nounwind
98*9880d681SAndroid Build Coastguard Worker
99*9880d681SAndroid Build Coastguard Workerdefine i64 @test__builtin_mips_dpsqx_sa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind {
100*9880d681SAndroid Build Coastguard Workerentry:
101*9880d681SAndroid Build Coastguard Worker; CHECK: dpsqx_sa.w.ph
102*9880d681SAndroid Build Coastguard Worker
103*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
104*9880d681SAndroid Build Coastguard Worker  %2 = bitcast i32 %a2.coerce to <2 x i16>
105*9880d681SAndroid Build Coastguard Worker  %3 = tail call i64 @llvm.mips.dpsqx.sa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2)
106*9880d681SAndroid Build Coastguard Worker  ret i64 %3
107*9880d681SAndroid Build Coastguard Worker}
108*9880d681SAndroid Build Coastguard Worker
109*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.mips.dpsqx.sa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind
110*9880d681SAndroid Build Coastguard Worker
111*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_addu_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
112*9880d681SAndroid Build Coastguard Workerentry:
113*9880d681SAndroid Build Coastguard Worker; CHECK: addu.ph
114*9880d681SAndroid Build Coastguard Worker
115*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
116*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
117*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i16> @llvm.mips.addu.ph(<2 x i16> %0, <2 x i16> %1)
118*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i16> %2 to i32
119*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
120*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
121*9880d681SAndroid Build Coastguard Worker}
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.addu.ph(<2 x i16>, <2 x i16>) nounwind
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_addu_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
126*9880d681SAndroid Build Coastguard Workerentry:
127*9880d681SAndroid Build Coastguard Worker; CHECK: addu_s.ph
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
130*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
131*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i16> @llvm.mips.addu.s.ph(<2 x i16> %0, <2 x i16> %1)
132*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i16> %2 to i32
133*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
134*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
135*9880d681SAndroid Build Coastguard Worker}
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.addu.s.ph(<2 x i16>, <2 x i16>) nounwind
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_mulq_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
140*9880d681SAndroid Build Coastguard Workerentry:
141*9880d681SAndroid Build Coastguard Worker; CHECK: mulq_s.ph
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
144*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
145*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i16> @llvm.mips.mulq.s.ph(<2 x i16> %0, <2 x i16> %1)
146*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i16> %2 to i32
147*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
148*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
149*9880d681SAndroid Build Coastguard Worker}
150*9880d681SAndroid Build Coastguard Worker
151*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.mulq.s.ph(<2 x i16>, <2 x i16>) nounwind
152*9880d681SAndroid Build Coastguard Worker
153*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_subu_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
154*9880d681SAndroid Build Coastguard Workerentry:
155*9880d681SAndroid Build Coastguard Worker; CHECK: subu.ph
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
158*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
159*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i16> @llvm.mips.subu.ph(<2 x i16> %0, <2 x i16> %1)
160*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i16> %2 to i32
161*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
162*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
163*9880d681SAndroid Build Coastguard Worker}
164*9880d681SAndroid Build Coastguard Worker
165*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.subu.ph(<2 x i16>, <2 x i16>) nounwind
166*9880d681SAndroid Build Coastguard Worker
167*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_subu_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
168*9880d681SAndroid Build Coastguard Workerentry:
169*9880d681SAndroid Build Coastguard Worker; CHECK: subu_s.ph
170*9880d681SAndroid Build Coastguard Worker
171*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
172*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
173*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i16> @llvm.mips.subu.s.ph(<2 x i16> %0, <2 x i16> %1)
174*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i16> %2 to i32
175*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
176*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
177*9880d681SAndroid Build Coastguard Worker}
178*9880d681SAndroid Build Coastguard Worker
179*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.subu.s.ph(<2 x i16>, <2 x i16>) nounwind
180*9880d681SAndroid Build Coastguard Worker
181*9880d681SAndroid Build Coastguard Workerdefine i32 @test__builtin_mips_cmpgdu_eq_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
182*9880d681SAndroid Build Coastguard Workerentry:
183*9880d681SAndroid Build Coastguard Worker; CHECK: cmpgdu.eq.qb
184*9880d681SAndroid Build Coastguard Worker
185*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <4 x i8>
186*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <4 x i8>
187*9880d681SAndroid Build Coastguard Worker  %2 = tail call i32 @llvm.mips.cmpgdu.eq.qb(<4 x i8> %0, <4 x i8> %1)
188*9880d681SAndroid Build Coastguard Worker  ret i32 %2
189*9880d681SAndroid Build Coastguard Worker}
190*9880d681SAndroid Build Coastguard Worker
191*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.mips.cmpgdu.eq.qb(<4 x i8>, <4 x i8>) nounwind
192*9880d681SAndroid Build Coastguard Worker
193*9880d681SAndroid Build Coastguard Workerdefine i32 @test__builtin_mips_cmpgdu_lt_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
194*9880d681SAndroid Build Coastguard Workerentry:
195*9880d681SAndroid Build Coastguard Worker; CHECK: cmpgdu.lt.qb
196*9880d681SAndroid Build Coastguard Worker
197*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <4 x i8>
198*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <4 x i8>
199*9880d681SAndroid Build Coastguard Worker  %2 = tail call i32 @llvm.mips.cmpgdu.lt.qb(<4 x i8> %0, <4 x i8> %1)
200*9880d681SAndroid Build Coastguard Worker  ret i32 %2
201*9880d681SAndroid Build Coastguard Worker}
202*9880d681SAndroid Build Coastguard Worker
203*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.mips.cmpgdu.lt.qb(<4 x i8>, <4 x i8>) nounwind
204*9880d681SAndroid Build Coastguard Worker
205*9880d681SAndroid Build Coastguard Workerdefine i32 @test__builtin_mips_cmpgdu_le_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
206*9880d681SAndroid Build Coastguard Workerentry:
207*9880d681SAndroid Build Coastguard Worker; CHECK: cmpgdu.le.qb
208*9880d681SAndroid Build Coastguard Worker
209*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <4 x i8>
210*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <4 x i8>
211*9880d681SAndroid Build Coastguard Worker  %2 = tail call i32 @llvm.mips.cmpgdu.le.qb(<4 x i8> %0, <4 x i8> %1)
212*9880d681SAndroid Build Coastguard Worker  ret i32 %2
213*9880d681SAndroid Build Coastguard Worker}
214*9880d681SAndroid Build Coastguard Worker
215*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.mips.cmpgdu.le.qb(<4 x i8>, <4 x i8>) nounwind
216*9880d681SAndroid Build Coastguard Worker
217*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_precr_qb_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
218*9880d681SAndroid Build Coastguard Workerentry:
219*9880d681SAndroid Build Coastguard Worker; CHECK: precr.qb.ph
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
222*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
223*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i8> @llvm.mips.precr.qb.ph(<2 x i16> %0, <2 x i16> %1)
224*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i8> %2 to i32
225*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
226*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
227*9880d681SAndroid Build Coastguard Worker}
228*9880d681SAndroid Build Coastguard Worker
229*9880d681SAndroid Build Coastguard Workerdeclare <4 x i8> @llvm.mips.precr.qb.ph(<2 x i16>, <2 x i16>) nounwind
230*9880d681SAndroid Build Coastguard Worker
231*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_precr_sra_ph_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
232*9880d681SAndroid Build Coastguard Workerentry:
233*9880d681SAndroid Build Coastguard Worker; CHECK: precr_sra.ph.w
234*9880d681SAndroid Build Coastguard Worker
235*9880d681SAndroid Build Coastguard Worker  %0 = tail call <2 x i16> @llvm.mips.precr.sra.ph.w(i32 %a0, i32 %a1, i32 15)
236*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <2 x i16> %0 to i32
237*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %1, 0
238*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
239*9880d681SAndroid Build Coastguard Worker}
240*9880d681SAndroid Build Coastguard Worker
241*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.precr.sra.ph.w(i32, i32, i32) nounwind readnone
242*9880d681SAndroid Build Coastguard Worker
243*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_precr_sra_r_ph_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
244*9880d681SAndroid Build Coastguard Workerentry:
245*9880d681SAndroid Build Coastguard Worker; CHECK: precr_sra_r.ph.w
246*9880d681SAndroid Build Coastguard Worker
247*9880d681SAndroid Build Coastguard Worker  %0 = tail call <2 x i16> @llvm.mips.precr.sra.r.ph.w(i32 %a0, i32 %a1, i32 15)
248*9880d681SAndroid Build Coastguard Worker  %1 = bitcast <2 x i16> %0 to i32
249*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %1, 0
250*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
251*9880d681SAndroid Build Coastguard Worker}
252*9880d681SAndroid Build Coastguard Worker
253*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.precr.sra.r.ph.w(i32, i32, i32) nounwind readnone
254*9880d681SAndroid Build Coastguard Worker
255*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_shra_qb1(i32 %i0, i32 %a0.coerce) nounwind readnone {
256*9880d681SAndroid Build Coastguard Workerentry:
257*9880d681SAndroid Build Coastguard Worker; CHECK: shra.qb
258*9880d681SAndroid Build Coastguard Worker
259*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <4 x i8>
260*9880d681SAndroid Build Coastguard Worker  %1 = tail call <4 x i8> @llvm.mips.shra.qb(<4 x i8> %0, i32 3)
261*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x i8> %1 to i32
262*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
263*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
264*9880d681SAndroid Build Coastguard Worker}
265*9880d681SAndroid Build Coastguard Worker
266*9880d681SAndroid Build Coastguard Workerdeclare <4 x i8> @llvm.mips.shra.qb(<4 x i8>, i32) nounwind readnone
267*9880d681SAndroid Build Coastguard Worker
268*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_shra_r_qb1(i32 %i0, i32 %a0.coerce) nounwind readnone {
269*9880d681SAndroid Build Coastguard Workerentry:
270*9880d681SAndroid Build Coastguard Worker; CHECK: shra_r.qb
271*9880d681SAndroid Build Coastguard Worker
272*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <4 x i8>
273*9880d681SAndroid Build Coastguard Worker  %1 = tail call <4 x i8> @llvm.mips.shra.r.qb(<4 x i8> %0, i32 3)
274*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x i8> %1 to i32
275*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
276*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
277*9880d681SAndroid Build Coastguard Worker}
278*9880d681SAndroid Build Coastguard Worker
279*9880d681SAndroid Build Coastguard Workerdeclare <4 x i8> @llvm.mips.shra.r.qb(<4 x i8>, i32) nounwind readnone
280*9880d681SAndroid Build Coastguard Worker
281*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_shra_qb2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind readnone {
282*9880d681SAndroid Build Coastguard Workerentry:
283*9880d681SAndroid Build Coastguard Worker; CHECK: shrav.qb
284*9880d681SAndroid Build Coastguard Worker
285*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <4 x i8>
286*9880d681SAndroid Build Coastguard Worker  %1 = tail call <4 x i8> @llvm.mips.shra.qb(<4 x i8> %0, i32 %a1)
287*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x i8> %1 to i32
288*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
289*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
290*9880d681SAndroid Build Coastguard Worker}
291*9880d681SAndroid Build Coastguard Worker
292*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_shra_r_qb2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind readnone {
293*9880d681SAndroid Build Coastguard Workerentry:
294*9880d681SAndroid Build Coastguard Worker; CHECK: shrav_r.qb
295*9880d681SAndroid Build Coastguard Worker
296*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <4 x i8>
297*9880d681SAndroid Build Coastguard Worker  %1 = tail call <4 x i8> @llvm.mips.shra.r.qb(<4 x i8> %0, i32 %a1)
298*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x i8> %1 to i32
299*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
300*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
301*9880d681SAndroid Build Coastguard Worker}
302*9880d681SAndroid Build Coastguard Worker
303*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_shrl_ph1(i32 %i0, i32 %a0.coerce) nounwind readnone {
304*9880d681SAndroid Build Coastguard Workerentry:
305*9880d681SAndroid Build Coastguard Worker; CHECK: shrl.ph
306*9880d681SAndroid Build Coastguard Worker
307*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
308*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i16> @llvm.mips.shrl.ph(<2 x i16> %0, i32 7)
309*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x i16> %1 to i32
310*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
311*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
312*9880d681SAndroid Build Coastguard Worker}
313*9880d681SAndroid Build Coastguard Worker
314*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.shrl.ph(<2 x i16>, i32) nounwind readnone
315*9880d681SAndroid Build Coastguard Worker
316*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_shrl_ph2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind readnone {
317*9880d681SAndroid Build Coastguard Workerentry:
318*9880d681SAndroid Build Coastguard Worker; CHECK: shrlv.ph
319*9880d681SAndroid Build Coastguard Worker
320*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
321*9880d681SAndroid Build Coastguard Worker  %1 = tail call <2 x i16> @llvm.mips.shrl.ph(<2 x i16> %0, i32 %a1)
322*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <2 x i16> %1 to i32
323*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
324*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
325*9880d681SAndroid Build Coastguard Worker}
326*9880d681SAndroid Build Coastguard Worker
327*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_absq_s_qb1(i32 %i0, i32 %a0.coerce) nounwind {
328*9880d681SAndroid Build Coastguard Workerentry:
329*9880d681SAndroid Build Coastguard Worker; CHECK: absq_s.qb
330*9880d681SAndroid Build Coastguard Worker
331*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <4 x i8>
332*9880d681SAndroid Build Coastguard Worker  %1 = tail call <4 x i8> @llvm.mips.absq.s.qb(<4 x i8> %0)
333*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x i8> %1 to i32
334*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0
335*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
336*9880d681SAndroid Build Coastguard Worker}
337*9880d681SAndroid Build Coastguard Worker
338*9880d681SAndroid Build Coastguard Workerdeclare <4 x i8> @llvm.mips.absq.s.qb(<4 x i8>) nounwind
339*9880d681SAndroid Build Coastguard Worker
340*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_mul_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
341*9880d681SAndroid Build Coastguard Workerentry:
342*9880d681SAndroid Build Coastguard Worker; CHECK: mul.ph
343*9880d681SAndroid Build Coastguard Worker
344*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
345*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
346*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i16> @llvm.mips.mul.ph(<2 x i16> %0, <2 x i16> %1)
347*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i16> %2 to i32
348*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
349*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
350*9880d681SAndroid Build Coastguard Worker}
351*9880d681SAndroid Build Coastguard Worker
352*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.mul.ph(<2 x i16>, <2 x i16>) nounwind
353*9880d681SAndroid Build Coastguard Worker
354*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_mul_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind {
355*9880d681SAndroid Build Coastguard Workerentry:
356*9880d681SAndroid Build Coastguard Worker; CHECK: mul_s.ph
357*9880d681SAndroid Build Coastguard Worker
358*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
359*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
360*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i16> @llvm.mips.mul.s.ph(<2 x i16> %0, <2 x i16> %1)
361*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i16> %2 to i32
362*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
363*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
364*9880d681SAndroid Build Coastguard Worker}
365*9880d681SAndroid Build Coastguard Worker
366*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.mul.s.ph(<2 x i16>, <2 x i16>) nounwind
367*9880d681SAndroid Build Coastguard Worker
368*9880d681SAndroid Build Coastguard Workerdefine i32 @test__builtin_mips_mulq_rs_w1(i32 %i0, i32 %a0, i32 %a1) nounwind {
369*9880d681SAndroid Build Coastguard Workerentry:
370*9880d681SAndroid Build Coastguard Worker; CHECK: mulq_rs.w
371*9880d681SAndroid Build Coastguard Worker
372*9880d681SAndroid Build Coastguard Worker  %0 = tail call i32 @llvm.mips.mulq.rs.w(i32 %a0, i32 %a1)
373*9880d681SAndroid Build Coastguard Worker  ret i32 %0
374*9880d681SAndroid Build Coastguard Worker}
375*9880d681SAndroid Build Coastguard Worker
376*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.mips.mulq.rs.w(i32, i32) nounwind
377*9880d681SAndroid Build Coastguard Worker
378*9880d681SAndroid Build Coastguard Workerdefine i32 @test__builtin_mips_mulq_s_w1(i32 %i0, i32 %a0, i32 %a1) nounwind {
379*9880d681SAndroid Build Coastguard Workerentry:
380*9880d681SAndroid Build Coastguard Worker; CHECK: mulq_s.w
381*9880d681SAndroid Build Coastguard Worker
382*9880d681SAndroid Build Coastguard Worker  %0 = tail call i32 @llvm.mips.mulq.s.w(i32 %a0, i32 %a1)
383*9880d681SAndroid Build Coastguard Worker  ret i32 %0
384*9880d681SAndroid Build Coastguard Worker}
385*9880d681SAndroid Build Coastguard Worker
386*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.mips.mulq.s.w(i32, i32) nounwind
387*9880d681SAndroid Build Coastguard Worker
388*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_adduh_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
389*9880d681SAndroid Build Coastguard Workerentry:
390*9880d681SAndroid Build Coastguard Worker; CHECK: adduh.qb
391*9880d681SAndroid Build Coastguard Worker
392*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <4 x i8>
393*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <4 x i8>
394*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i8> @llvm.mips.adduh.qb(<4 x i8> %0, <4 x i8> %1)
395*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i8> %2 to i32
396*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
397*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
398*9880d681SAndroid Build Coastguard Worker}
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Workerdeclare <4 x i8> @llvm.mips.adduh.qb(<4 x i8>, <4 x i8>) nounwind readnone
401*9880d681SAndroid Build Coastguard Worker
402*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_adduh_r_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
403*9880d681SAndroid Build Coastguard Workerentry:
404*9880d681SAndroid Build Coastguard Worker; CHECK: adduh_r.qb
405*9880d681SAndroid Build Coastguard Worker
406*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <4 x i8>
407*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <4 x i8>
408*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i8> @llvm.mips.adduh.r.qb(<4 x i8> %0, <4 x i8> %1)
409*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i8> %2 to i32
410*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
411*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
412*9880d681SAndroid Build Coastguard Worker}
413*9880d681SAndroid Build Coastguard Worker
414*9880d681SAndroid Build Coastguard Workerdeclare <4 x i8> @llvm.mips.adduh.r.qb(<4 x i8>, <4 x i8>) nounwind readnone
415*9880d681SAndroid Build Coastguard Worker
416*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_subuh_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
417*9880d681SAndroid Build Coastguard Workerentry:
418*9880d681SAndroid Build Coastguard Worker; CHECK: subuh.qb
419*9880d681SAndroid Build Coastguard Worker
420*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <4 x i8>
421*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <4 x i8>
422*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i8> @llvm.mips.subuh.qb(<4 x i8> %0, <4 x i8> %1)
423*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i8> %2 to i32
424*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
425*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
426*9880d681SAndroid Build Coastguard Worker}
427*9880d681SAndroid Build Coastguard Worker
428*9880d681SAndroid Build Coastguard Workerdeclare <4 x i8> @llvm.mips.subuh.qb(<4 x i8>, <4 x i8>) nounwind readnone
429*9880d681SAndroid Build Coastguard Worker
430*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_subuh_r_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
431*9880d681SAndroid Build Coastguard Workerentry:
432*9880d681SAndroid Build Coastguard Worker; CHECK: subuh_r.qb
433*9880d681SAndroid Build Coastguard Worker
434*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <4 x i8>
435*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <4 x i8>
436*9880d681SAndroid Build Coastguard Worker  %2 = tail call <4 x i8> @llvm.mips.subuh.r.qb(<4 x i8> %0, <4 x i8> %1)
437*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <4 x i8> %2 to i32
438*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
439*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
440*9880d681SAndroid Build Coastguard Worker}
441*9880d681SAndroid Build Coastguard Worker
442*9880d681SAndroid Build Coastguard Workerdeclare <4 x i8> @llvm.mips.subuh.r.qb(<4 x i8>, <4 x i8>) nounwind readnone
443*9880d681SAndroid Build Coastguard Worker
444*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_addqh_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
445*9880d681SAndroid Build Coastguard Workerentry:
446*9880d681SAndroid Build Coastguard Worker; CHECK: addqh.ph
447*9880d681SAndroid Build Coastguard Worker
448*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
449*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
450*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i16> @llvm.mips.addqh.ph(<2 x i16> %0, <2 x i16> %1)
451*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i16> %2 to i32
452*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
453*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
454*9880d681SAndroid Build Coastguard Worker}
455*9880d681SAndroid Build Coastguard Worker
456*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.addqh.ph(<2 x i16>, <2 x i16>) nounwind readnone
457*9880d681SAndroid Build Coastguard Worker
458*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_addqh_r_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
459*9880d681SAndroid Build Coastguard Workerentry:
460*9880d681SAndroid Build Coastguard Worker; CHECK: addqh_r.ph
461*9880d681SAndroid Build Coastguard Worker
462*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
463*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
464*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i16> @llvm.mips.addqh.r.ph(<2 x i16> %0, <2 x i16> %1)
465*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i16> %2 to i32
466*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
467*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
468*9880d681SAndroid Build Coastguard Worker}
469*9880d681SAndroid Build Coastguard Worker
470*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.addqh.r.ph(<2 x i16>, <2 x i16>) nounwind readnone
471*9880d681SAndroid Build Coastguard Worker
472*9880d681SAndroid Build Coastguard Workerdefine i32 @test__builtin_mips_addqh_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
473*9880d681SAndroid Build Coastguard Workerentry:
474*9880d681SAndroid Build Coastguard Worker; CHECK: addqh.w
475*9880d681SAndroid Build Coastguard Worker
476*9880d681SAndroid Build Coastguard Worker  %0 = tail call i32 @llvm.mips.addqh.w(i32 %a0, i32 %a1)
477*9880d681SAndroid Build Coastguard Worker  ret i32 %0
478*9880d681SAndroid Build Coastguard Worker}
479*9880d681SAndroid Build Coastguard Worker
480*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.mips.addqh.w(i32, i32) nounwind readnone
481*9880d681SAndroid Build Coastguard Worker
482*9880d681SAndroid Build Coastguard Workerdefine i32 @test__builtin_mips_addqh_r_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
483*9880d681SAndroid Build Coastguard Workerentry:
484*9880d681SAndroid Build Coastguard Worker; CHECK: addqh_r.w
485*9880d681SAndroid Build Coastguard Worker
486*9880d681SAndroid Build Coastguard Worker  %0 = tail call i32 @llvm.mips.addqh.r.w(i32 %a0, i32 %a1)
487*9880d681SAndroid Build Coastguard Worker  ret i32 %0
488*9880d681SAndroid Build Coastguard Worker}
489*9880d681SAndroid Build Coastguard Worker
490*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.mips.addqh.r.w(i32, i32) nounwind readnone
491*9880d681SAndroid Build Coastguard Worker
492*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_subqh_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
493*9880d681SAndroid Build Coastguard Workerentry:
494*9880d681SAndroid Build Coastguard Worker; CHECK: subqh.ph
495*9880d681SAndroid Build Coastguard Worker
496*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
497*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
498*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i16> @llvm.mips.subqh.ph(<2 x i16> %0, <2 x i16> %1)
499*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i16> %2 to i32
500*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
501*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
502*9880d681SAndroid Build Coastguard Worker}
503*9880d681SAndroid Build Coastguard Worker
504*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.subqh.ph(<2 x i16>, <2 x i16>) nounwind readnone
505*9880d681SAndroid Build Coastguard Worker
506*9880d681SAndroid Build Coastguard Workerdefine { i32 } @test__builtin_mips_subqh_r_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone {
507*9880d681SAndroid Build Coastguard Workerentry:
508*9880d681SAndroid Build Coastguard Worker; CHECK: subqh_r.ph
509*9880d681SAndroid Build Coastguard Worker
510*9880d681SAndroid Build Coastguard Worker  %0 = bitcast i32 %a0.coerce to <2 x i16>
511*9880d681SAndroid Build Coastguard Worker  %1 = bitcast i32 %a1.coerce to <2 x i16>
512*9880d681SAndroid Build Coastguard Worker  %2 = tail call <2 x i16> @llvm.mips.subqh.r.ph(<2 x i16> %0, <2 x i16> %1)
513*9880d681SAndroid Build Coastguard Worker  %3 = bitcast <2 x i16> %2 to i32
514*9880d681SAndroid Build Coastguard Worker  %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0
515*9880d681SAndroid Build Coastguard Worker  ret { i32 } %.fca.0.insert
516*9880d681SAndroid Build Coastguard Worker}
517*9880d681SAndroid Build Coastguard Worker
518*9880d681SAndroid Build Coastguard Workerdeclare <2 x i16> @llvm.mips.subqh.r.ph(<2 x i16>, <2 x i16>) nounwind readnone
519*9880d681SAndroid Build Coastguard Worker
520*9880d681SAndroid Build Coastguard Workerdefine i32 @test__builtin_mips_subqh_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
521*9880d681SAndroid Build Coastguard Workerentry:
522*9880d681SAndroid Build Coastguard Worker; CHECK: subqh.w
523*9880d681SAndroid Build Coastguard Worker
524*9880d681SAndroid Build Coastguard Worker  %0 = tail call i32 @llvm.mips.subqh.w(i32 %a0, i32 %a1)
525*9880d681SAndroid Build Coastguard Worker  ret i32 %0
526*9880d681SAndroid Build Coastguard Worker}
527*9880d681SAndroid Build Coastguard Worker
528*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.mips.subqh.w(i32, i32) nounwind readnone
529*9880d681SAndroid Build Coastguard Worker
530*9880d681SAndroid Build Coastguard Workerdefine i32 @test__builtin_mips_subqh_r_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
531*9880d681SAndroid Build Coastguard Workerentry:
532*9880d681SAndroid Build Coastguard Worker; CHECK: subqh_r.w
533*9880d681SAndroid Build Coastguard Worker
534*9880d681SAndroid Build Coastguard Worker  %0 = tail call i32 @llvm.mips.subqh.r.w(i32 %a0, i32 %a1)
535*9880d681SAndroid Build Coastguard Worker  ret i32 %0
536*9880d681SAndroid Build Coastguard Worker}
537*9880d681SAndroid Build Coastguard Worker
538*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.mips.subqh.r.w(i32, i32) nounwind readnone
539*9880d681SAndroid Build Coastguard Worker
540*9880d681SAndroid Build Coastguard Workerdefine i32 @test__builtin_mips_append1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
541*9880d681SAndroid Build Coastguard Workerentry:
542*9880d681SAndroid Build Coastguard Worker; CHECK: append ${{[0-9]+}}
543*9880d681SAndroid Build Coastguard Worker
544*9880d681SAndroid Build Coastguard Worker  %0 = tail call i32 @llvm.mips.append(i32 %a0, i32 %a1, i32 15)
545*9880d681SAndroid Build Coastguard Worker  ret i32 %0
546*9880d681SAndroid Build Coastguard Worker}
547*9880d681SAndroid Build Coastguard Worker
548*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.mips.append(i32, i32, i32) nounwind readnone
549*9880d681SAndroid Build Coastguard Worker
550*9880d681SAndroid Build Coastguard Workerdefine i32 @test__builtin_mips_balign1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
551*9880d681SAndroid Build Coastguard Workerentry:
552*9880d681SAndroid Build Coastguard Worker; CHECK: balign ${{[0-9]+}}
553*9880d681SAndroid Build Coastguard Worker
554*9880d681SAndroid Build Coastguard Worker  %0 = tail call i32 @llvm.mips.balign(i32 %a0, i32 %a1, i32 1)
555*9880d681SAndroid Build Coastguard Worker  ret i32 %0
556*9880d681SAndroid Build Coastguard Worker}
557*9880d681SAndroid Build Coastguard Worker
558*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.mips.balign(i32, i32, i32) nounwind readnone
559*9880d681SAndroid Build Coastguard Worker
560*9880d681SAndroid Build Coastguard Workerdefine i32 @test__builtin_mips_prepend1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone {
561*9880d681SAndroid Build Coastguard Workerentry:
562*9880d681SAndroid Build Coastguard Worker; CHECK: prepend ${{[0-9]+}}
563*9880d681SAndroid Build Coastguard Worker
564*9880d681SAndroid Build Coastguard Worker  %0 = tail call i32 @llvm.mips.prepend(i32 %a0, i32 %a1, i32 15)
565*9880d681SAndroid Build Coastguard Worker  ret i32 %0
566*9880d681SAndroid Build Coastguard Worker}
567*9880d681SAndroid Build Coastguard Worker
568*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.mips.prepend(i32, i32, i32) nounwind readnone
569