xref: /aosp_15_r20/external/llvm/test/CodeGen/Mips/msa/compare.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips -mattr=+msa,+fp64 < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -mattr=+msa,+fp64 < %s | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine void @ceq_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
5*9880d681SAndroid Build Coastguard Worker  ; CHECK: ceq_v16i8:
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
8*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
9*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
10*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
11*9880d681SAndroid Build Coastguard Worker  %3 = icmp eq <16 x i8> %1, %2
12*9880d681SAndroid Build Coastguard Worker  %4 = sext <16 x i1> %3 to <16 x i8>
13*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ceq.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
14*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
15*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker  ret void
18*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ceq_v16i8
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine void @ceq_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
22*9880d681SAndroid Build Coastguard Worker  ; CHECK: ceq_v8i16:
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
25*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
26*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
27*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
28*9880d681SAndroid Build Coastguard Worker  %3 = icmp eq <8 x i16> %1, %2
29*9880d681SAndroid Build Coastguard Worker  %4 = sext <8 x i1> %3 to <8 x i16>
30*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ceq.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
31*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
32*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Worker  ret void
35*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ceq_v8i16
36*9880d681SAndroid Build Coastguard Worker}
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Workerdefine void @ceq_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
39*9880d681SAndroid Build Coastguard Worker  ; CHECK: ceq_v4i32:
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
42*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
43*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
44*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
45*9880d681SAndroid Build Coastguard Worker  %3 = icmp eq <4 x i32> %1, %2
46*9880d681SAndroid Build Coastguard Worker  %4 = sext <4 x i1> %3 to <4 x i32>
47*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ceq.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
48*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
49*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Worker  ret void
52*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ceq_v4i32
53*9880d681SAndroid Build Coastguard Worker}
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Workerdefine void @ceq_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
56*9880d681SAndroid Build Coastguard Worker  ; CHECK: ceq_v2i64:
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
59*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
60*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
61*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
62*9880d681SAndroid Build Coastguard Worker  %3 = icmp eq <2 x i64> %1, %2
63*9880d681SAndroid Build Coastguard Worker  %4 = sext <2 x i1> %3 to <2 x i64>
64*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ceq.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
65*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
66*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker  ret void
69*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ceq_v2i64
70*9880d681SAndroid Build Coastguard Worker}
71*9880d681SAndroid Build Coastguard Worker
72*9880d681SAndroid Build Coastguard Workerdefine void @cle_s_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
73*9880d681SAndroid Build Coastguard Worker  ; CHECK: cle_s_v16i8:
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
76*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
77*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
78*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
79*9880d681SAndroid Build Coastguard Worker  %3 = icmp sle <16 x i8> %1, %2
80*9880d681SAndroid Build Coastguard Worker  %4 = sext <16 x i1> %3 to <16 x i8>
81*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: cle_s.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
82*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
83*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Worker  ret void
86*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size cle_s_v16i8
87*9880d681SAndroid Build Coastguard Worker}
88*9880d681SAndroid Build Coastguard Worker
89*9880d681SAndroid Build Coastguard Workerdefine void @cle_s_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
90*9880d681SAndroid Build Coastguard Worker  ; CHECK: cle_s_v8i16:
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
93*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
94*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
95*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
96*9880d681SAndroid Build Coastguard Worker  %3 = icmp sle <8 x i16> %1, %2
97*9880d681SAndroid Build Coastguard Worker  %4 = sext <8 x i1> %3 to <8 x i16>
98*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: cle_s.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
99*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
100*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Worker  ret void
103*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size cle_s_v8i16
104*9880d681SAndroid Build Coastguard Worker}
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Workerdefine void @cle_s_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
107*9880d681SAndroid Build Coastguard Worker  ; CHECK: cle_s_v4i32:
108*9880d681SAndroid Build Coastguard Worker
109*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
110*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
111*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
112*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
113*9880d681SAndroid Build Coastguard Worker  %3 = icmp sle <4 x i32> %1, %2
114*9880d681SAndroid Build Coastguard Worker  %4 = sext <4 x i1> %3 to <4 x i32>
115*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: cle_s.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
116*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
117*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
118*9880d681SAndroid Build Coastguard Worker
119*9880d681SAndroid Build Coastguard Worker  ret void
120*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size cle_s_v4i32
121*9880d681SAndroid Build Coastguard Worker}
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Workerdefine void @cle_s_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
124*9880d681SAndroid Build Coastguard Worker  ; CHECK: cle_s_v2i64:
125*9880d681SAndroid Build Coastguard Worker
126*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
127*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
128*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
129*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
130*9880d681SAndroid Build Coastguard Worker  %3 = icmp sle <2 x i64> %1, %2
131*9880d681SAndroid Build Coastguard Worker  %4 = sext <2 x i1> %3 to <2 x i64>
132*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: cle_s.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
133*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
134*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
135*9880d681SAndroid Build Coastguard Worker
136*9880d681SAndroid Build Coastguard Worker  ret void
137*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size cle_s_v2i64
138*9880d681SAndroid Build Coastguard Worker}
139*9880d681SAndroid Build Coastguard Worker
140*9880d681SAndroid Build Coastguard Workerdefine void @cle_u_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
141*9880d681SAndroid Build Coastguard Worker  ; CHECK: cle_u_v16i8:
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
144*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
145*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
146*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
147*9880d681SAndroid Build Coastguard Worker  %3 = icmp ule <16 x i8> %1, %2
148*9880d681SAndroid Build Coastguard Worker  %4 = sext <16 x i1> %3 to <16 x i8>
149*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: cle_u.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
150*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
151*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
152*9880d681SAndroid Build Coastguard Worker
153*9880d681SAndroid Build Coastguard Worker  ret void
154*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size cle_u_v16i8
155*9880d681SAndroid Build Coastguard Worker}
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Workerdefine void @cle_u_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
158*9880d681SAndroid Build Coastguard Worker  ; CHECK: cle_u_v8i16:
159*9880d681SAndroid Build Coastguard Worker
160*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
161*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
162*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
163*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
164*9880d681SAndroid Build Coastguard Worker  %3 = icmp ule <8 x i16> %1, %2
165*9880d681SAndroid Build Coastguard Worker  %4 = sext <8 x i1> %3 to <8 x i16>
166*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: cle_u.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
167*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
168*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
169*9880d681SAndroid Build Coastguard Worker
170*9880d681SAndroid Build Coastguard Worker  ret void
171*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size cle_u_v8i16
172*9880d681SAndroid Build Coastguard Worker}
173*9880d681SAndroid Build Coastguard Worker
174*9880d681SAndroid Build Coastguard Workerdefine void @cle_u_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
175*9880d681SAndroid Build Coastguard Worker  ; CHECK: cle_u_v4i32:
176*9880d681SAndroid Build Coastguard Worker
177*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
178*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
179*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
180*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
181*9880d681SAndroid Build Coastguard Worker  %3 = icmp ule <4 x i32> %1, %2
182*9880d681SAndroid Build Coastguard Worker  %4 = sext <4 x i1> %3 to <4 x i32>
183*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: cle_u.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
184*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
185*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
186*9880d681SAndroid Build Coastguard Worker
187*9880d681SAndroid Build Coastguard Worker  ret void
188*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size cle_u_v4i32
189*9880d681SAndroid Build Coastguard Worker}
190*9880d681SAndroid Build Coastguard Worker
191*9880d681SAndroid Build Coastguard Workerdefine void @cle_u_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
192*9880d681SAndroid Build Coastguard Worker  ; CHECK: cle_u_v2i64:
193*9880d681SAndroid Build Coastguard Worker
194*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
195*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
196*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
197*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
198*9880d681SAndroid Build Coastguard Worker  %3 = icmp ule <2 x i64> %1, %2
199*9880d681SAndroid Build Coastguard Worker  %4 = sext <2 x i1> %3 to <2 x i64>
200*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: cle_u.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
201*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
202*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
203*9880d681SAndroid Build Coastguard Worker
204*9880d681SAndroid Build Coastguard Worker  ret void
205*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size cle_u_v2i64
206*9880d681SAndroid Build Coastguard Worker}
207*9880d681SAndroid Build Coastguard Worker
208*9880d681SAndroid Build Coastguard Workerdefine void @clt_s_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
209*9880d681SAndroid Build Coastguard Worker  ; CHECK: clt_s_v16i8:
210*9880d681SAndroid Build Coastguard Worker
211*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
212*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
213*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
214*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
215*9880d681SAndroid Build Coastguard Worker  %3 = icmp slt <16 x i8> %1, %2
216*9880d681SAndroid Build Coastguard Worker  %4 = sext <16 x i1> %3 to <16 x i8>
217*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_s.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
218*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
219*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard Worker  ret void
222*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clt_s_v16i8
223*9880d681SAndroid Build Coastguard Worker}
224*9880d681SAndroid Build Coastguard Worker
225*9880d681SAndroid Build Coastguard Workerdefine void @clt_s_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
226*9880d681SAndroid Build Coastguard Worker  ; CHECK: clt_s_v8i16:
227*9880d681SAndroid Build Coastguard Worker
228*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
229*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
230*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
231*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
232*9880d681SAndroid Build Coastguard Worker  %3 = icmp slt <8 x i16> %1, %2
233*9880d681SAndroid Build Coastguard Worker  %4 = sext <8 x i1> %3 to <8 x i16>
234*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_s.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
235*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
236*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
237*9880d681SAndroid Build Coastguard Worker
238*9880d681SAndroid Build Coastguard Worker  ret void
239*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clt_s_v8i16
240*9880d681SAndroid Build Coastguard Worker}
241*9880d681SAndroid Build Coastguard Worker
242*9880d681SAndroid Build Coastguard Workerdefine void @clt_s_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
243*9880d681SAndroid Build Coastguard Worker  ; CHECK: clt_s_v4i32:
244*9880d681SAndroid Build Coastguard Worker
245*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
246*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
247*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
248*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
249*9880d681SAndroid Build Coastguard Worker  %3 = icmp slt <4 x i32> %1, %2
250*9880d681SAndroid Build Coastguard Worker  %4 = sext <4 x i1> %3 to <4 x i32>
251*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_s.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
252*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
253*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
254*9880d681SAndroid Build Coastguard Worker
255*9880d681SAndroid Build Coastguard Worker  ret void
256*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clt_s_v4i32
257*9880d681SAndroid Build Coastguard Worker}
258*9880d681SAndroid Build Coastguard Worker
259*9880d681SAndroid Build Coastguard Workerdefine void @clt_s_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
260*9880d681SAndroid Build Coastguard Worker  ; CHECK: clt_s_v2i64:
261*9880d681SAndroid Build Coastguard Worker
262*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
263*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
264*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
265*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
266*9880d681SAndroid Build Coastguard Worker  %3 = icmp slt <2 x i64> %1, %2
267*9880d681SAndroid Build Coastguard Worker  %4 = sext <2 x i1> %3 to <2 x i64>
268*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_s.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
269*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
270*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
271*9880d681SAndroid Build Coastguard Worker
272*9880d681SAndroid Build Coastguard Worker  ret void
273*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clt_s_v2i64
274*9880d681SAndroid Build Coastguard Worker}
275*9880d681SAndroid Build Coastguard Worker
276*9880d681SAndroid Build Coastguard Workerdefine void @clt_u_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
277*9880d681SAndroid Build Coastguard Worker  ; CHECK: clt_u_v16i8:
278*9880d681SAndroid Build Coastguard Worker
279*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
280*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
281*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
282*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
283*9880d681SAndroid Build Coastguard Worker  %3 = icmp ult <16 x i8> %1, %2
284*9880d681SAndroid Build Coastguard Worker  %4 = sext <16 x i1> %3 to <16 x i8>
285*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_u.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
286*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
287*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
288*9880d681SAndroid Build Coastguard Worker
289*9880d681SAndroid Build Coastguard Worker  ret void
290*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clt_u_v16i8
291*9880d681SAndroid Build Coastguard Worker}
292*9880d681SAndroid Build Coastguard Worker
293*9880d681SAndroid Build Coastguard Workerdefine void @clt_u_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
294*9880d681SAndroid Build Coastguard Worker  ; CHECK: clt_u_v8i16:
295*9880d681SAndroid Build Coastguard Worker
296*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
297*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
298*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
299*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
300*9880d681SAndroid Build Coastguard Worker  %3 = icmp ult <8 x i16> %1, %2
301*9880d681SAndroid Build Coastguard Worker  %4 = sext <8 x i1> %3 to <8 x i16>
302*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_u.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
303*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
304*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
305*9880d681SAndroid Build Coastguard Worker
306*9880d681SAndroid Build Coastguard Worker  ret void
307*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clt_u_v8i16
308*9880d681SAndroid Build Coastguard Worker}
309*9880d681SAndroid Build Coastguard Worker
310*9880d681SAndroid Build Coastguard Workerdefine void @clt_u_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
311*9880d681SAndroid Build Coastguard Worker  ; CHECK: clt_u_v4i32:
312*9880d681SAndroid Build Coastguard Worker
313*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
314*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
315*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
316*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
317*9880d681SAndroid Build Coastguard Worker  %3 = icmp ult <4 x i32> %1, %2
318*9880d681SAndroid Build Coastguard Worker  %4 = sext <4 x i1> %3 to <4 x i32>
319*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_u.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
320*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
321*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
322*9880d681SAndroid Build Coastguard Worker
323*9880d681SAndroid Build Coastguard Worker  ret void
324*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clt_u_v4i32
325*9880d681SAndroid Build Coastguard Worker}
326*9880d681SAndroid Build Coastguard Worker
327*9880d681SAndroid Build Coastguard Workerdefine void @clt_u_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
328*9880d681SAndroid Build Coastguard Worker  ; CHECK: clt_u_v2i64:
329*9880d681SAndroid Build Coastguard Worker
330*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
331*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
332*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
333*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
334*9880d681SAndroid Build Coastguard Worker  %3 = icmp ult <2 x i64> %1, %2
335*9880d681SAndroid Build Coastguard Worker  %4 = sext <2 x i1> %3 to <2 x i64>
336*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_u.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
337*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
338*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
339*9880d681SAndroid Build Coastguard Worker
340*9880d681SAndroid Build Coastguard Worker  ret void
341*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clt_u_v2i64
342*9880d681SAndroid Build Coastguard Worker}
343*9880d681SAndroid Build Coastguard Worker
344*9880d681SAndroid Build Coastguard Worker; There is no != comparison, but test it anyway since we've had legalizer
345*9880d681SAndroid Build Coastguard Worker; issues in this area.
346*9880d681SAndroid Build Coastguard Workerdefine void @cne_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
347*9880d681SAndroid Build Coastguard Worker  ; CHECK: cne_v16i8:
348*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
349*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
350*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
351*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
352*9880d681SAndroid Build Coastguard Worker  %3 = icmp ne <16 x i8> %1, %2
353*9880d681SAndroid Build Coastguard Worker  %4 = sext <16 x i1> %3 to <16 x i8>
354*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ceq.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
355*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: xori.b [[R3]], [[R3]], 255
356*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
357*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
358*9880d681SAndroid Build Coastguard Worker
359*9880d681SAndroid Build Coastguard Worker  ret void
360*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size cne_v16i8
361*9880d681SAndroid Build Coastguard Worker}
362*9880d681SAndroid Build Coastguard Worker
363*9880d681SAndroid Build Coastguard Worker; There is no != comparison, but test it anyway since we've had legalizer
364*9880d681SAndroid Build Coastguard Worker; issues in this area.
365*9880d681SAndroid Build Coastguard Workerdefine void @cne_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
366*9880d681SAndroid Build Coastguard Worker  ; CHECK: cne_v8i16:
367*9880d681SAndroid Build Coastguard Worker
368*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
369*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
370*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
371*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
372*9880d681SAndroid Build Coastguard Worker  %3 = icmp ne <8 x i16> %1, %2
373*9880d681SAndroid Build Coastguard Worker  %4 = sext <8 x i1> %3 to <8 x i16>
374*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ceq.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
375*9880d681SAndroid Build Coastguard Worker  ; TODO: This should be an 'xori.b [[R3]], [[R3]], 255' but thats an optimisation issue
376*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.b [[R4:\$w[0-9]+]], -1
377*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: xor.v [[R3]], [[R3]], [[R4]]
378*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
379*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
380*9880d681SAndroid Build Coastguard Worker
381*9880d681SAndroid Build Coastguard Worker  ret void
382*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size cne_v8i16
383*9880d681SAndroid Build Coastguard Worker}
384*9880d681SAndroid Build Coastguard Worker
385*9880d681SAndroid Build Coastguard Worker; There is no != comparison, but test it anyway since we've had legalizer
386*9880d681SAndroid Build Coastguard Worker; issues in this area.
387*9880d681SAndroid Build Coastguard Workerdefine void @cne_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
388*9880d681SAndroid Build Coastguard Worker  ; CHECK: cne_v4i32:
389*9880d681SAndroid Build Coastguard Worker
390*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
391*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
392*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
393*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
394*9880d681SAndroid Build Coastguard Worker  %3 = icmp ne <4 x i32> %1, %2
395*9880d681SAndroid Build Coastguard Worker  %4 = sext <4 x i1> %3 to <4 x i32>
396*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ceq.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
397*9880d681SAndroid Build Coastguard Worker  ; TODO: This should be an 'xori.b [[R3]], [[R3]], 255' but thats an optimisation issue
398*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.b [[R4:\$w[0-9]+]], -1
399*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: xor.v [[R3]], [[R3]], [[R4]]
400*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
401*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
402*9880d681SAndroid Build Coastguard Worker
403*9880d681SAndroid Build Coastguard Worker  ret void
404*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size cne_v4i32
405*9880d681SAndroid Build Coastguard Worker}
406*9880d681SAndroid Build Coastguard Worker
407*9880d681SAndroid Build Coastguard Worker; There is no != comparison, but test it anyway since we've had legalizer
408*9880d681SAndroid Build Coastguard Worker; issues in this area.
409*9880d681SAndroid Build Coastguard Workerdefine void @cne_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
410*9880d681SAndroid Build Coastguard Worker  ; CHECK: cne_v2i64:
411*9880d681SAndroid Build Coastguard Worker
412*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
413*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
414*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
415*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
416*9880d681SAndroid Build Coastguard Worker  %3 = icmp ne <2 x i64> %1, %2
417*9880d681SAndroid Build Coastguard Worker  %4 = sext <2 x i1> %3 to <2 x i64>
418*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ceq.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
419*9880d681SAndroid Build Coastguard Worker  ; TODO: This should be an 'xori.b [[R3]], [[R3]], 255' but thats an optimisation issue
420*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.b [[R4:\$w[0-9]+]], -1
421*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: xor.v [[R3]], [[R3]], [[R4]]
422*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
423*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
424*9880d681SAndroid Build Coastguard Worker
425*9880d681SAndroid Build Coastguard Worker  ret void
426*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size cne_v2i64
427*9880d681SAndroid Build Coastguard Worker}
428*9880d681SAndroid Build Coastguard Worker
429*9880d681SAndroid Build Coastguard Workerdefine void @ceqi_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
430*9880d681SAndroid Build Coastguard Worker  ; CHECK: ceqi_v16i8:
431*9880d681SAndroid Build Coastguard Worker
432*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
433*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
434*9880d681SAndroid Build Coastguard Worker  %2 = icmp eq <16 x i8> %1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
435*9880d681SAndroid Build Coastguard Worker  %3 = sext <16 x i1> %2 to <16 x i8>
436*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ceqi.b [[R3:\$w[0-9]+]], [[R1]], 1
437*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
438*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
439*9880d681SAndroid Build Coastguard Worker
440*9880d681SAndroid Build Coastguard Worker  ret void
441*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ceqi_v16i8
442*9880d681SAndroid Build Coastguard Worker}
443*9880d681SAndroid Build Coastguard Worker
444*9880d681SAndroid Build Coastguard Workerdefine void @ceqi_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
445*9880d681SAndroid Build Coastguard Worker  ; CHECK: ceqi_v8i16:
446*9880d681SAndroid Build Coastguard Worker
447*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
448*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
449*9880d681SAndroid Build Coastguard Worker  %2 = icmp eq <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
450*9880d681SAndroid Build Coastguard Worker  %3 = sext <8 x i1> %2 to <8 x i16>
451*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ceqi.h [[R3:\$w[0-9]+]], [[R1]], 1
452*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
453*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
454*9880d681SAndroid Build Coastguard Worker
455*9880d681SAndroid Build Coastguard Worker  ret void
456*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ceqi_v8i16
457*9880d681SAndroid Build Coastguard Worker}
458*9880d681SAndroid Build Coastguard Worker
459*9880d681SAndroid Build Coastguard Workerdefine void @ceqi_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
460*9880d681SAndroid Build Coastguard Worker  ; CHECK: ceqi_v4i32:
461*9880d681SAndroid Build Coastguard Worker
462*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
463*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
464*9880d681SAndroid Build Coastguard Worker  %2 = icmp eq <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
465*9880d681SAndroid Build Coastguard Worker  %3 = sext <4 x i1> %2 to <4 x i32>
466*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ceqi.w [[R3:\$w[0-9]+]], [[R1]], 1
467*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
468*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
469*9880d681SAndroid Build Coastguard Worker
470*9880d681SAndroid Build Coastguard Worker  ret void
471*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ceqi_v4i32
472*9880d681SAndroid Build Coastguard Worker}
473*9880d681SAndroid Build Coastguard Worker
474*9880d681SAndroid Build Coastguard Workerdefine void @ceqi_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
475*9880d681SAndroid Build Coastguard Worker  ; CHECK: ceqi_v2i64:
476*9880d681SAndroid Build Coastguard Worker
477*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
478*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
479*9880d681SAndroid Build Coastguard Worker  %2 = icmp eq <2 x i64> %1, <i64 1, i64 1>
480*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i1> %2 to <2 x i64>
481*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ceqi.d [[R3:\$w[0-9]+]], [[R1]], 1
482*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
483*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
484*9880d681SAndroid Build Coastguard Worker
485*9880d681SAndroid Build Coastguard Worker  ret void
486*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size ceqi_v2i64
487*9880d681SAndroid Build Coastguard Worker}
488*9880d681SAndroid Build Coastguard Worker
489*9880d681SAndroid Build Coastguard Workerdefine void @clei_s_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
490*9880d681SAndroid Build Coastguard Worker  ; CHECK: clei_s_v16i8:
491*9880d681SAndroid Build Coastguard Worker
492*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
493*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
494*9880d681SAndroid Build Coastguard Worker  %2 = icmp sle <16 x i8> %1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
495*9880d681SAndroid Build Coastguard Worker  %3 = sext <16 x i1> %2 to <16 x i8>
496*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clei_s.b [[R3:\$w[0-9]+]], [[R1]], 1
497*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
498*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
499*9880d681SAndroid Build Coastguard Worker
500*9880d681SAndroid Build Coastguard Worker  ret void
501*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clei_s_v16i8
502*9880d681SAndroid Build Coastguard Worker}
503*9880d681SAndroid Build Coastguard Worker
504*9880d681SAndroid Build Coastguard Workerdefine void @clei_s_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
505*9880d681SAndroid Build Coastguard Worker  ; CHECK: clei_s_v8i16:
506*9880d681SAndroid Build Coastguard Worker
507*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
508*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
509*9880d681SAndroid Build Coastguard Worker  %2 = icmp sle <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
510*9880d681SAndroid Build Coastguard Worker  %3 = sext <8 x i1> %2 to <8 x i16>
511*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clei_s.h [[R3:\$w[0-9]+]], [[R1]], 1
512*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
513*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
514*9880d681SAndroid Build Coastguard Worker
515*9880d681SAndroid Build Coastguard Worker  ret void
516*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clei_s_v8i16
517*9880d681SAndroid Build Coastguard Worker}
518*9880d681SAndroid Build Coastguard Worker
519*9880d681SAndroid Build Coastguard Workerdefine void @clei_s_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
520*9880d681SAndroid Build Coastguard Worker  ; CHECK: clei_s_v4i32:
521*9880d681SAndroid Build Coastguard Worker
522*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
523*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
524*9880d681SAndroid Build Coastguard Worker  %2 = icmp sle <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
525*9880d681SAndroid Build Coastguard Worker  %3 = sext <4 x i1> %2 to <4 x i32>
526*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clei_s.w [[R3:\$w[0-9]+]], [[R1]], 1
527*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
528*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
529*9880d681SAndroid Build Coastguard Worker
530*9880d681SAndroid Build Coastguard Worker  ret void
531*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clei_s_v4i32
532*9880d681SAndroid Build Coastguard Worker}
533*9880d681SAndroid Build Coastguard Worker
534*9880d681SAndroid Build Coastguard Workerdefine void @clei_s_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
535*9880d681SAndroid Build Coastguard Worker  ; CHECK: clei_s_v2i64:
536*9880d681SAndroid Build Coastguard Worker
537*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
538*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
539*9880d681SAndroid Build Coastguard Worker  %2 = icmp sle <2 x i64> %1, <i64 1, i64 1>
540*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i1> %2 to <2 x i64>
541*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clei_s.d [[R3:\$w[0-9]+]], [[R1]], 1
542*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
543*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
544*9880d681SAndroid Build Coastguard Worker
545*9880d681SAndroid Build Coastguard Worker  ret void
546*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clei_s_v2i64
547*9880d681SAndroid Build Coastguard Worker}
548*9880d681SAndroid Build Coastguard Worker
549*9880d681SAndroid Build Coastguard Workerdefine void @clei_u_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
550*9880d681SAndroid Build Coastguard Worker  ; CHECK: clei_u_v16i8:
551*9880d681SAndroid Build Coastguard Worker
552*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
553*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
554*9880d681SAndroid Build Coastguard Worker  %2 = icmp ule <16 x i8> %1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
555*9880d681SAndroid Build Coastguard Worker  %3 = sext <16 x i1> %2 to <16 x i8>
556*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clei_u.b [[R3:\$w[0-9]+]], [[R1]], 1
557*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
558*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
559*9880d681SAndroid Build Coastguard Worker
560*9880d681SAndroid Build Coastguard Worker  ret void
561*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clei_u_v16i8
562*9880d681SAndroid Build Coastguard Worker}
563*9880d681SAndroid Build Coastguard Worker
564*9880d681SAndroid Build Coastguard Workerdefine void @clei_u_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
565*9880d681SAndroid Build Coastguard Worker  ; CHECK: clei_u_v8i16:
566*9880d681SAndroid Build Coastguard Worker
567*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
568*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
569*9880d681SAndroid Build Coastguard Worker  %2 = icmp ule <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
570*9880d681SAndroid Build Coastguard Worker  %3 = sext <8 x i1> %2 to <8 x i16>
571*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clei_u.h [[R3:\$w[0-9]+]], [[R1]], 1
572*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
573*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
574*9880d681SAndroid Build Coastguard Worker
575*9880d681SAndroid Build Coastguard Worker  ret void
576*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clei_u_v8i16
577*9880d681SAndroid Build Coastguard Worker}
578*9880d681SAndroid Build Coastguard Worker
579*9880d681SAndroid Build Coastguard Workerdefine void @clei_u_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
580*9880d681SAndroid Build Coastguard Worker  ; CHECK: clei_u_v4i32:
581*9880d681SAndroid Build Coastguard Worker
582*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
583*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
584*9880d681SAndroid Build Coastguard Worker  %2 = icmp ule <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
585*9880d681SAndroid Build Coastguard Worker  %3 = sext <4 x i1> %2 to <4 x i32>
586*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clei_u.w [[R3:\$w[0-9]+]], [[R1]], 1
587*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
588*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
589*9880d681SAndroid Build Coastguard Worker
590*9880d681SAndroid Build Coastguard Worker  ret void
591*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clei_u_v4i32
592*9880d681SAndroid Build Coastguard Worker}
593*9880d681SAndroid Build Coastguard Worker
594*9880d681SAndroid Build Coastguard Workerdefine void @clei_u_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
595*9880d681SAndroid Build Coastguard Worker  ; CHECK: clei_u_v2i64:
596*9880d681SAndroid Build Coastguard Worker
597*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
598*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
599*9880d681SAndroid Build Coastguard Worker  %2 = icmp ule <2 x i64> %1, <i64 1, i64 1>
600*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i1> %2 to <2 x i64>
601*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clei_u.d [[R3:\$w[0-9]+]], [[R1]], 1
602*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
603*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
604*9880d681SAndroid Build Coastguard Worker
605*9880d681SAndroid Build Coastguard Worker  ret void
606*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clei_u_v2i64
607*9880d681SAndroid Build Coastguard Worker}
608*9880d681SAndroid Build Coastguard Worker
609*9880d681SAndroid Build Coastguard Workerdefine void @clti_s_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
610*9880d681SAndroid Build Coastguard Worker  ; CHECK: clti_s_v16i8:
611*9880d681SAndroid Build Coastguard Worker
612*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
613*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
614*9880d681SAndroid Build Coastguard Worker  %2 = icmp slt <16 x i8> %1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
615*9880d681SAndroid Build Coastguard Worker  %3 = sext <16 x i1> %2 to <16 x i8>
616*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clti_s.b [[R3:\$w[0-9]+]], [[R1]], 1
617*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
618*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
619*9880d681SAndroid Build Coastguard Worker
620*9880d681SAndroid Build Coastguard Worker  ret void
621*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clti_s_v16i8
622*9880d681SAndroid Build Coastguard Worker}
623*9880d681SAndroid Build Coastguard Worker
624*9880d681SAndroid Build Coastguard Workerdefine void @clti_s_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
625*9880d681SAndroid Build Coastguard Worker  ; CHECK: clti_s_v8i16:
626*9880d681SAndroid Build Coastguard Worker
627*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
628*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
629*9880d681SAndroid Build Coastguard Worker  %2 = icmp slt <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
630*9880d681SAndroid Build Coastguard Worker  %3 = sext <8 x i1> %2 to <8 x i16>
631*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clti_s.h [[R3:\$w[0-9]+]], [[R1]], 1
632*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
633*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
634*9880d681SAndroid Build Coastguard Worker
635*9880d681SAndroid Build Coastguard Worker  ret void
636*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clti_s_v8i16
637*9880d681SAndroid Build Coastguard Worker}
638*9880d681SAndroid Build Coastguard Worker
639*9880d681SAndroid Build Coastguard Workerdefine void @clti_s_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
640*9880d681SAndroid Build Coastguard Worker  ; CHECK: clti_s_v4i32:
641*9880d681SAndroid Build Coastguard Worker
642*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
643*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
644*9880d681SAndroid Build Coastguard Worker  %2 = icmp slt <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
645*9880d681SAndroid Build Coastguard Worker  %3 = sext <4 x i1> %2 to <4 x i32>
646*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clti_s.w [[R3:\$w[0-9]+]], [[R1]], 1
647*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
648*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
649*9880d681SAndroid Build Coastguard Worker
650*9880d681SAndroid Build Coastguard Worker  ret void
651*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clti_s_v4i32
652*9880d681SAndroid Build Coastguard Worker}
653*9880d681SAndroid Build Coastguard Worker
654*9880d681SAndroid Build Coastguard Workerdefine void @clti_s_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
655*9880d681SAndroid Build Coastguard Worker  ; CHECK: clti_s_v2i64:
656*9880d681SAndroid Build Coastguard Worker
657*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
658*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
659*9880d681SAndroid Build Coastguard Worker  %2 = icmp slt <2 x i64> %1, <i64 1, i64 1>
660*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i1> %2 to <2 x i64>
661*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clti_s.d [[R3:\$w[0-9]+]], [[R1]], 1
662*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
663*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
664*9880d681SAndroid Build Coastguard Worker
665*9880d681SAndroid Build Coastguard Worker  ret void
666*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clti_s_v2i64
667*9880d681SAndroid Build Coastguard Worker}
668*9880d681SAndroid Build Coastguard Worker
669*9880d681SAndroid Build Coastguard Workerdefine void @clti_u_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
670*9880d681SAndroid Build Coastguard Worker  ; CHECK: clti_u_v16i8:
671*9880d681SAndroid Build Coastguard Worker
672*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
673*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
674*9880d681SAndroid Build Coastguard Worker  %2 = icmp ult <16 x i8> %1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
675*9880d681SAndroid Build Coastguard Worker  %3 = sext <16 x i1> %2 to <16 x i8>
676*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clti_u.b [[R3:\$w[0-9]+]], [[R1]], 1
677*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
678*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
679*9880d681SAndroid Build Coastguard Worker
680*9880d681SAndroid Build Coastguard Worker  ret void
681*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clti_u_v16i8
682*9880d681SAndroid Build Coastguard Worker}
683*9880d681SAndroid Build Coastguard Worker
684*9880d681SAndroid Build Coastguard Workerdefine void @clti_u_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
685*9880d681SAndroid Build Coastguard Worker  ; CHECK: clti_u_v8i16:
686*9880d681SAndroid Build Coastguard Worker
687*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
688*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
689*9880d681SAndroid Build Coastguard Worker  %2 = icmp ult <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
690*9880d681SAndroid Build Coastguard Worker  %3 = sext <8 x i1> %2 to <8 x i16>
691*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clti_u.h [[R3:\$w[0-9]+]], [[R1]], 1
692*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
693*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
694*9880d681SAndroid Build Coastguard Worker
695*9880d681SAndroid Build Coastguard Worker  ret void
696*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clti_u_v8i16
697*9880d681SAndroid Build Coastguard Worker}
698*9880d681SAndroid Build Coastguard Worker
699*9880d681SAndroid Build Coastguard Workerdefine void @clti_u_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
700*9880d681SAndroid Build Coastguard Worker  ; CHECK: clti_u_v4i32:
701*9880d681SAndroid Build Coastguard Worker
702*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
703*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
704*9880d681SAndroid Build Coastguard Worker  %2 = icmp ult <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
705*9880d681SAndroid Build Coastguard Worker  %3 = sext <4 x i1> %2 to <4 x i32>
706*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clti_u.w [[R3:\$w[0-9]+]], [[R1]], 1
707*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
708*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
709*9880d681SAndroid Build Coastguard Worker
710*9880d681SAndroid Build Coastguard Worker  ret void
711*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clti_u_v4i32
712*9880d681SAndroid Build Coastguard Worker}
713*9880d681SAndroid Build Coastguard Worker
714*9880d681SAndroid Build Coastguard Workerdefine void @clti_u_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
715*9880d681SAndroid Build Coastguard Worker  ; CHECK: clti_u_v2i64:
716*9880d681SAndroid Build Coastguard Worker
717*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
718*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
719*9880d681SAndroid Build Coastguard Worker  %2 = icmp ult <2 x i64> %1, <i64 1, i64 1>
720*9880d681SAndroid Build Coastguard Worker  %3 = sext <2 x i1> %2 to <2 x i64>
721*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clti_u.d [[R3:\$w[0-9]+]], [[R1]], 1
722*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
723*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
724*9880d681SAndroid Build Coastguard Worker
725*9880d681SAndroid Build Coastguard Worker  ret void
726*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size clti_u_v2i64
727*9880d681SAndroid Build Coastguard Worker}
728*9880d681SAndroid Build Coastguard Worker
729*9880d681SAndroid Build Coastguard Workerdefine void @bsel_s_v16i8(<16 x i8>* %d, <16 x i8>* %a, <16 x i8>* %b,
730*9880d681SAndroid Build Coastguard Worker                        <16 x i8>* %c) nounwind {
731*9880d681SAndroid Build Coastguard Worker  ; CHECK: bsel_s_v16i8:
732*9880d681SAndroid Build Coastguard Worker
733*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
734*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
735*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
736*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
737*9880d681SAndroid Build Coastguard Worker  %3 = load <16 x i8>, <16 x i8>* %c
738*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R3:\$w[0-9]+]], 0($7)
739*9880d681SAndroid Build Coastguard Worker  %4 = icmp sgt <16 x i8> %1, %2
740*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_s.b [[R4:\$w[0-9]+]], [[R2]], [[R1]]
741*9880d681SAndroid Build Coastguard Worker  %5 = select <16 x i1> %4, <16 x i8> %1, <16 x i8> %3
742*9880d681SAndroid Build Coastguard Worker  ; bmnz.v is the same operation
743*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bmnz.v [[R3]], [[R1]], [[R4]]
744*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %5, <16 x i8>* %d
745*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
746*9880d681SAndroid Build Coastguard Worker
747*9880d681SAndroid Build Coastguard Worker  ret void
748*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bsel_s_v16i8
749*9880d681SAndroid Build Coastguard Worker}
750*9880d681SAndroid Build Coastguard Worker
751*9880d681SAndroid Build Coastguard Workerdefine void @bsel_s_v8i16(<8 x i16>* %d, <8 x i16>* %a, <8 x i16>* %b,
752*9880d681SAndroid Build Coastguard Worker                        <8 x i16>* %c) nounwind {
753*9880d681SAndroid Build Coastguard Worker  ; CHECK: bsel_s_v8i16:
754*9880d681SAndroid Build Coastguard Worker
755*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
756*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
757*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
758*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
759*9880d681SAndroid Build Coastguard Worker  %3 = load <8 x i16>, <8 x i16>* %c
760*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R3:\$w[0-9]+]], 0($7)
761*9880d681SAndroid Build Coastguard Worker  %4 = icmp sgt <8 x i16> %1, %2
762*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_s.h [[R4:\$w[0-9]+]], [[R2]], [[R1]]
763*9880d681SAndroid Build Coastguard Worker  %5 = select <8 x i1> %4, <8 x i16> %1, <8 x i16> %3
764*9880d681SAndroid Build Coastguard Worker  ; Note that IfSet and IfClr are swapped since the condition is inverted
765*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R4]], [[R3]], [[R1]]
766*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %5, <8 x i16>* %d
767*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R4]], 0($4)
768*9880d681SAndroid Build Coastguard Worker
769*9880d681SAndroid Build Coastguard Worker  ret void
770*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bsel_s_v8i16
771*9880d681SAndroid Build Coastguard Worker}
772*9880d681SAndroid Build Coastguard Worker
773*9880d681SAndroid Build Coastguard Workerdefine void @bsel_s_v4i32(<4 x i32>* %d, <4 x i32>* %a, <4 x i32>* %b,
774*9880d681SAndroid Build Coastguard Worker                        <4 x i32>* %c) nounwind {
775*9880d681SAndroid Build Coastguard Worker  ; CHECK: bsel_s_v4i32:
776*9880d681SAndroid Build Coastguard Worker
777*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
778*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
779*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
780*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
781*9880d681SAndroid Build Coastguard Worker  %3 = load <4 x i32>, <4 x i32>* %c
782*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R3:\$w[0-9]+]], 0($7)
783*9880d681SAndroid Build Coastguard Worker  %4 = icmp sgt <4 x i32> %1, %2
784*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_s.w [[R4:\$w[0-9]+]], [[R2]], [[R1]]
785*9880d681SAndroid Build Coastguard Worker  %5 = select <4 x i1> %4, <4 x i32> %1, <4 x i32> %3
786*9880d681SAndroid Build Coastguard Worker  ; Note that IfSet and IfClr are swapped since the condition is inverted
787*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R4]], [[R3]], [[R1]]
788*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %5, <4 x i32>* %d
789*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R4]], 0($4)
790*9880d681SAndroid Build Coastguard Worker
791*9880d681SAndroid Build Coastguard Worker  ret void
792*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bsel_s_v4i32
793*9880d681SAndroid Build Coastguard Worker}
794*9880d681SAndroid Build Coastguard Worker
795*9880d681SAndroid Build Coastguard Workerdefine void @bsel_s_v2i64(<2 x i64>* %d, <2 x i64>* %a, <2 x i64>* %b,
796*9880d681SAndroid Build Coastguard Worker                        <2 x i64>* %c) nounwind {
797*9880d681SAndroid Build Coastguard Worker  ; CHECK: bsel_s_v2i64:
798*9880d681SAndroid Build Coastguard Worker
799*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
800*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
801*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
802*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
803*9880d681SAndroid Build Coastguard Worker  %3 = load <2 x i64>, <2 x i64>* %c
804*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R3:\$w[0-9]+]], 0($7)
805*9880d681SAndroid Build Coastguard Worker  %4 = icmp sgt <2 x i64> %1, %2
806*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_s.d [[R4:\$w[0-9]+]], [[R2]], [[R1]]
807*9880d681SAndroid Build Coastguard Worker  %5 = select <2 x i1> %4, <2 x i64> %1, <2 x i64> %3
808*9880d681SAndroid Build Coastguard Worker  ; Note that IfSet and IfClr are swapped since the condition is inverted
809*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R4]], [[R3]], [[R1]]
810*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %5, <2 x i64>* %d
811*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R4]], 0($4)
812*9880d681SAndroid Build Coastguard Worker
813*9880d681SAndroid Build Coastguard Worker  ret void
814*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bsel_s_v2i64
815*9880d681SAndroid Build Coastguard Worker}
816*9880d681SAndroid Build Coastguard Worker
817*9880d681SAndroid Build Coastguard Workerdefine void @bsel_u_v16i8(<16 x i8>* %d, <16 x i8>* %a, <16 x i8>* %b,
818*9880d681SAndroid Build Coastguard Worker                        <16 x i8>* %c) nounwind {
819*9880d681SAndroid Build Coastguard Worker  ; CHECK: bsel_u_v16i8:
820*9880d681SAndroid Build Coastguard Worker
821*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
822*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
823*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
824*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
825*9880d681SAndroid Build Coastguard Worker  %3 = load <16 x i8>, <16 x i8>* %c
826*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R3:\$w[0-9]+]], 0($7)
827*9880d681SAndroid Build Coastguard Worker  %4 = icmp ugt <16 x i8> %1, %2
828*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_u.b [[R4:\$w[0-9]+]], [[R2]], [[R1]]
829*9880d681SAndroid Build Coastguard Worker  %5 = select <16 x i1> %4, <16 x i8> %1, <16 x i8> %3
830*9880d681SAndroid Build Coastguard Worker  ; bmnz.v is the same operation
831*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bmnz.v [[R3]], [[R1]], [[R4]]
832*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %5, <16 x i8>* %d
833*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
834*9880d681SAndroid Build Coastguard Worker
835*9880d681SAndroid Build Coastguard Worker  ret void
836*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bsel_u_v16i8
837*9880d681SAndroid Build Coastguard Worker}
838*9880d681SAndroid Build Coastguard Worker
839*9880d681SAndroid Build Coastguard Workerdefine void @bsel_u_v8i16(<8 x i16>* %d, <8 x i16>* %a, <8 x i16>* %b,
840*9880d681SAndroid Build Coastguard Worker                        <8 x i16>* %c) nounwind {
841*9880d681SAndroid Build Coastguard Worker  ; CHECK: bsel_u_v8i16:
842*9880d681SAndroid Build Coastguard Worker
843*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
844*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
845*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
846*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
847*9880d681SAndroid Build Coastguard Worker  %3 = load <8 x i16>, <8 x i16>* %c
848*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R3:\$w[0-9]+]], 0($7)
849*9880d681SAndroid Build Coastguard Worker  %4 = icmp ugt <8 x i16> %1, %2
850*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_u.h [[R4:\$w[0-9]+]], [[R2]], [[R1]]
851*9880d681SAndroid Build Coastguard Worker  %5 = select <8 x i1> %4, <8 x i16> %1, <8 x i16> %3
852*9880d681SAndroid Build Coastguard Worker  ; Note that IfSet and IfClr are swapped since the condition is inverted
853*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R4]], [[R3]], [[R1]]
854*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %5, <8 x i16>* %d
855*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R4]], 0($4)
856*9880d681SAndroid Build Coastguard Worker
857*9880d681SAndroid Build Coastguard Worker  ret void
858*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bsel_u_v8i16
859*9880d681SAndroid Build Coastguard Worker}
860*9880d681SAndroid Build Coastguard Worker
861*9880d681SAndroid Build Coastguard Workerdefine void @bsel_u_v4i32(<4 x i32>* %d, <4 x i32>* %a, <4 x i32>* %b,
862*9880d681SAndroid Build Coastguard Worker                        <4 x i32>* %c) nounwind {
863*9880d681SAndroid Build Coastguard Worker  ; CHECK: bsel_u_v4i32:
864*9880d681SAndroid Build Coastguard Worker
865*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
866*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
867*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
868*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
869*9880d681SAndroid Build Coastguard Worker  %3 = load <4 x i32>, <4 x i32>* %c
870*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R3:\$w[0-9]+]], 0($7)
871*9880d681SAndroid Build Coastguard Worker  %4 = icmp ugt <4 x i32> %1, %2
872*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_u.w [[R4:\$w[0-9]+]], [[R2]], [[R1]]
873*9880d681SAndroid Build Coastguard Worker  %5 = select <4 x i1> %4, <4 x i32> %1, <4 x i32> %3
874*9880d681SAndroid Build Coastguard Worker  ; Note that IfSet and IfClr are swapped since the condition is inverted
875*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R4]], [[R3]], [[R1]]
876*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %5, <4 x i32>* %d
877*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R4]], 0($4)
878*9880d681SAndroid Build Coastguard Worker
879*9880d681SAndroid Build Coastguard Worker  ret void
880*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bsel_u_v4i32
881*9880d681SAndroid Build Coastguard Worker}
882*9880d681SAndroid Build Coastguard Worker
883*9880d681SAndroid Build Coastguard Workerdefine void @bsel_u_v2i64(<2 x i64>* %d, <2 x i64>* %a, <2 x i64>* %b,
884*9880d681SAndroid Build Coastguard Worker                        <2 x i64>* %c) nounwind {
885*9880d681SAndroid Build Coastguard Worker  ; CHECK: bsel_u_v2i64:
886*9880d681SAndroid Build Coastguard Worker
887*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
888*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
889*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
890*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
891*9880d681SAndroid Build Coastguard Worker  %3 = load <2 x i64>, <2 x i64>* %c
892*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R3:\$w[0-9]+]], 0($7)
893*9880d681SAndroid Build Coastguard Worker  %4 = icmp ugt <2 x i64> %1, %2
894*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_u.d [[R4:\$w[0-9]+]], [[R2]], [[R1]]
895*9880d681SAndroid Build Coastguard Worker  %5 = select <2 x i1> %4, <2 x i64> %1, <2 x i64> %3
896*9880d681SAndroid Build Coastguard Worker  ; Note that IfSet and IfClr are swapped since the condition is inverted
897*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R4]], [[R3]], [[R1]]
898*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %5, <2 x i64>* %d
899*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R4]], 0($4)
900*9880d681SAndroid Build Coastguard Worker
901*9880d681SAndroid Build Coastguard Worker  ret void
902*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bsel_u_v2i64
903*9880d681SAndroid Build Coastguard Worker}
904*9880d681SAndroid Build Coastguard Worker
905*9880d681SAndroid Build Coastguard Workerdefine void @bseli_s_v16i8(<16 x i8>* %d, <16 x i8>* %a, <16 x i8>* %b,
906*9880d681SAndroid Build Coastguard Worker                        <16 x i8>* %c) nounwind {
907*9880d681SAndroid Build Coastguard Worker  ; CHECK: bseli_s_v16i8:
908*9880d681SAndroid Build Coastguard Worker
909*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
910*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
911*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
912*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
913*9880d681SAndroid Build Coastguard Worker  %3 = icmp sgt <16 x i8> %1, %2
914*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_s.b [[R4:\$w[0-9]+]], [[R2]], [[R1]]
915*9880d681SAndroid Build Coastguard Worker  %4 = select <16 x i1> %3, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>, <16 x i8> %1
916*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bseli.b [[R4]], [[R1]], 1
917*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %d
918*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R4]], 0($4)
919*9880d681SAndroid Build Coastguard Worker
920*9880d681SAndroid Build Coastguard Worker  ret void
921*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bseli_s_v16i8
922*9880d681SAndroid Build Coastguard Worker}
923*9880d681SAndroid Build Coastguard Worker
924*9880d681SAndroid Build Coastguard Workerdefine void @bseli_s_v8i16(<8 x i16>* %d, <8 x i16>* %a, <8 x i16>* %b,
925*9880d681SAndroid Build Coastguard Worker                        <8 x i16>* %c) nounwind {
926*9880d681SAndroid Build Coastguard Worker  ; CHECK: bseli_s_v8i16:
927*9880d681SAndroid Build Coastguard Worker
928*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
929*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
930*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
931*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
932*9880d681SAndroid Build Coastguard Worker  %3 = icmp sgt <8 x i16> %1, %2
933*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_s.h [[R4:\$w[0-9]+]], [[R2]], [[R1]]
934*9880d681SAndroid Build Coastguard Worker  %4 = select <8 x i1> %3, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>, <8 x i16> %1
935*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.h [[R3:\$w[0-9]+]], 1
936*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R4]], [[R1]], [[R3]]
937*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %d
938*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R4]], 0($4)
939*9880d681SAndroid Build Coastguard Worker
940*9880d681SAndroid Build Coastguard Worker  ret void
941*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bseli_s_v8i16
942*9880d681SAndroid Build Coastguard Worker}
943*9880d681SAndroid Build Coastguard Worker
944*9880d681SAndroid Build Coastguard Workerdefine void @bseli_s_v4i32(<4 x i32>* %d, <4 x i32>* %a, <4 x i32>* %b,
945*9880d681SAndroid Build Coastguard Worker                        <4 x i32>* %c) nounwind {
946*9880d681SAndroid Build Coastguard Worker  ; CHECK: bseli_s_v4i32:
947*9880d681SAndroid Build Coastguard Worker
948*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
949*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
950*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
951*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
952*9880d681SAndroid Build Coastguard Worker  %3 = icmp sgt <4 x i32> %1, %2
953*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_s.w [[R4:\$w[0-9]+]], [[R2]], [[R1]]
954*9880d681SAndroid Build Coastguard Worker  %4 = select <4 x i1> %3, <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32> %1
955*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.w [[R3:\$w[0-9]+]], 1
956*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R4]], [[R1]], [[R3]]
957*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %d
958*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R4]], 0($4)
959*9880d681SAndroid Build Coastguard Worker
960*9880d681SAndroid Build Coastguard Worker  ret void
961*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bseli_s_v4i32
962*9880d681SAndroid Build Coastguard Worker}
963*9880d681SAndroid Build Coastguard Worker
964*9880d681SAndroid Build Coastguard Workerdefine void @bseli_s_v2i64(<2 x i64>* %d, <2 x i64>* %a, <2 x i64>* %b,
965*9880d681SAndroid Build Coastguard Worker                        <2 x i64>* %c) nounwind {
966*9880d681SAndroid Build Coastguard Worker  ; CHECK: bseli_s_v2i64:
967*9880d681SAndroid Build Coastguard Worker
968*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
969*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
970*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
971*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
972*9880d681SAndroid Build Coastguard Worker  %3 = icmp sgt <2 x i64> %1, %2
973*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_s.d [[R4:\$w[0-9]+]], [[R2]], [[R1]]
974*9880d681SAndroid Build Coastguard Worker  %4 = select <2 x i1> %3, <2 x i64> <i64 1, i64 1>, <2 x i64> %1
975*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.d [[R3:\$w[0-9]+]], 1
976*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R4]], [[R1]], [[R3]]
977*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %d
978*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R4]], 0($4)
979*9880d681SAndroid Build Coastguard Worker
980*9880d681SAndroid Build Coastguard Worker  ret void
981*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bseli_s_v2i64
982*9880d681SAndroid Build Coastguard Worker}
983*9880d681SAndroid Build Coastguard Worker
984*9880d681SAndroid Build Coastguard Workerdefine void @bseli_u_v16i8(<16 x i8>* %d, <16 x i8>* %a, <16 x i8>* %b,
985*9880d681SAndroid Build Coastguard Worker                        <16 x i8>* %c) nounwind {
986*9880d681SAndroid Build Coastguard Worker  ; CHECK: bseli_u_v16i8:
987*9880d681SAndroid Build Coastguard Worker
988*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
989*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
990*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
991*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
992*9880d681SAndroid Build Coastguard Worker  %3 = icmp ugt <16 x i8> %1, %2
993*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_u.b [[R4:\$w[0-9]+]], [[R2]], [[R1]]
994*9880d681SAndroid Build Coastguard Worker  %4 = select <16 x i1> %3, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>, <16 x i8> %1
995*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bseli.b [[R4]], [[R1]], 1
996*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %d
997*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R4]], 0($4)
998*9880d681SAndroid Build Coastguard Worker
999*9880d681SAndroid Build Coastguard Worker  ret void
1000*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bseli_u_v16i8
1001*9880d681SAndroid Build Coastguard Worker}
1002*9880d681SAndroid Build Coastguard Worker
1003*9880d681SAndroid Build Coastguard Workerdefine void @bseli_u_v8i16(<8 x i16>* %d, <8 x i16>* %a, <8 x i16>* %b,
1004*9880d681SAndroid Build Coastguard Worker                        <8 x i16>* %c) nounwind {
1005*9880d681SAndroid Build Coastguard Worker  ; CHECK: bseli_u_v8i16:
1006*9880d681SAndroid Build Coastguard Worker
1007*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1008*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1009*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1010*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1011*9880d681SAndroid Build Coastguard Worker  %3 = icmp ugt <8 x i16> %1, %2
1012*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_u.h [[R4:\$w[0-9]+]], [[R2]], [[R1]]
1013*9880d681SAndroid Build Coastguard Worker  %4 = select <8 x i1> %3, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>, <8 x i16> %1
1014*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.h [[R3:\$w[0-9]+]], 1
1015*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R4]], [[R1]], [[R3]]
1016*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %d
1017*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R4]], 0($4)
1018*9880d681SAndroid Build Coastguard Worker
1019*9880d681SAndroid Build Coastguard Worker  ret void
1020*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bseli_u_v8i16
1021*9880d681SAndroid Build Coastguard Worker}
1022*9880d681SAndroid Build Coastguard Worker
1023*9880d681SAndroid Build Coastguard Workerdefine void @bseli_u_v4i32(<4 x i32>* %d, <4 x i32>* %a, <4 x i32>* %b,
1024*9880d681SAndroid Build Coastguard Worker                        <4 x i32>* %c) nounwind {
1025*9880d681SAndroid Build Coastguard Worker  ; CHECK: bseli_u_v4i32:
1026*9880d681SAndroid Build Coastguard Worker
1027*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1028*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1029*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1030*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1031*9880d681SAndroid Build Coastguard Worker  %3 = icmp ugt <4 x i32> %1, %2
1032*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_u.w [[R4:\$w[0-9]+]], [[R2]], [[R1]]
1033*9880d681SAndroid Build Coastguard Worker  %4 = select <4 x i1> %3, <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32> %1
1034*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.w [[R3:\$w[0-9]+]], 1
1035*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R4]], [[R1]], [[R3]]
1036*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %d
1037*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R4]], 0($4)
1038*9880d681SAndroid Build Coastguard Worker
1039*9880d681SAndroid Build Coastguard Worker  ret void
1040*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bseli_u_v4i32
1041*9880d681SAndroid Build Coastguard Worker}
1042*9880d681SAndroid Build Coastguard Worker
1043*9880d681SAndroid Build Coastguard Workerdefine void @bseli_u_v2i64(<2 x i64>* %d, <2 x i64>* %a, <2 x i64>* %b,
1044*9880d681SAndroid Build Coastguard Worker                        <2 x i64>* %c) nounwind {
1045*9880d681SAndroid Build Coastguard Worker  ; CHECK: bseli_u_v2i64:
1046*9880d681SAndroid Build Coastguard Worker
1047*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1048*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1049*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1050*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1051*9880d681SAndroid Build Coastguard Worker  %3 = icmp ugt <2 x i64> %1, %2
1052*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: clt_u.d [[R4:\$w[0-9]+]], [[R2]], [[R1]]
1053*9880d681SAndroid Build Coastguard Worker  %4 = select <2 x i1> %3, <2 x i64> <i64 1, i64 1>, <2 x i64> %1
1054*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ldi.d [[R3:\$w[0-9]+]], 1
1055*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: bsel.v [[R4]], [[R1]], [[R3]]
1056*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %d
1057*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R4]], 0($4)
1058*9880d681SAndroid Build Coastguard Worker
1059*9880d681SAndroid Build Coastguard Worker  ret void
1060*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size bseli_u_v2i64
1061*9880d681SAndroid Build Coastguard Worker}
1062*9880d681SAndroid Build Coastguard Worker
1063*9880d681SAndroid Build Coastguard Workerdefine void @max_s_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
1064*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_s_v16i8:
1065*9880d681SAndroid Build Coastguard Worker
1066*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1067*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1068*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
1069*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
1070*9880d681SAndroid Build Coastguard Worker  %3 = icmp sgt <16 x i8> %1, %2
1071*9880d681SAndroid Build Coastguard Worker  %4 = select <16 x i1> %3, <16 x i8> %1, <16 x i8> %2
1072*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_s.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1073*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
1074*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1075*9880d681SAndroid Build Coastguard Worker
1076*9880d681SAndroid Build Coastguard Worker  ret void
1077*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_s_v16i8
1078*9880d681SAndroid Build Coastguard Worker}
1079*9880d681SAndroid Build Coastguard Worker
1080*9880d681SAndroid Build Coastguard Workerdefine void @max_s_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1081*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_s_v8i16:
1082*9880d681SAndroid Build Coastguard Worker
1083*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1084*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1085*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1086*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1087*9880d681SAndroid Build Coastguard Worker  %3 = icmp sgt <8 x i16> %1, %2
1088*9880d681SAndroid Build Coastguard Worker  %4 = select <8 x i1> %3, <8 x i16> %1, <8 x i16> %2
1089*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_s.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1090*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
1091*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1092*9880d681SAndroid Build Coastguard Worker
1093*9880d681SAndroid Build Coastguard Worker  ret void
1094*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_s_v8i16
1095*9880d681SAndroid Build Coastguard Worker}
1096*9880d681SAndroid Build Coastguard Worker
1097*9880d681SAndroid Build Coastguard Workerdefine void @max_s_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1098*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_s_v4i32:
1099*9880d681SAndroid Build Coastguard Worker
1100*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1101*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1102*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1103*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1104*9880d681SAndroid Build Coastguard Worker  %3 = icmp sgt <4 x i32> %1, %2
1105*9880d681SAndroid Build Coastguard Worker  %4 = select <4 x i1> %3, <4 x i32> %1, <4 x i32> %2
1106*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_s.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1107*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
1108*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1109*9880d681SAndroid Build Coastguard Worker
1110*9880d681SAndroid Build Coastguard Worker  ret void
1111*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_s_v4i32
1112*9880d681SAndroid Build Coastguard Worker}
1113*9880d681SAndroid Build Coastguard Worker
1114*9880d681SAndroid Build Coastguard Workerdefine void @max_s_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1115*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_s_v2i64:
1116*9880d681SAndroid Build Coastguard Worker
1117*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1118*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1119*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1120*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1121*9880d681SAndroid Build Coastguard Worker  %3 = icmp sgt <2 x i64> %1, %2
1122*9880d681SAndroid Build Coastguard Worker  %4 = select <2 x i1> %3, <2 x i64> %1, <2 x i64> %2
1123*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_s.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1124*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
1125*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1126*9880d681SAndroid Build Coastguard Worker
1127*9880d681SAndroid Build Coastguard Worker  ret void
1128*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_s_v2i64
1129*9880d681SAndroid Build Coastguard Worker}
1130*9880d681SAndroid Build Coastguard Worker
1131*9880d681SAndroid Build Coastguard Workerdefine void @max_u_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
1132*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_u_v16i8:
1133*9880d681SAndroid Build Coastguard Worker
1134*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1135*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1136*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
1137*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
1138*9880d681SAndroid Build Coastguard Worker  %3 = icmp ugt <16 x i8> %1, %2
1139*9880d681SAndroid Build Coastguard Worker  %4 = select <16 x i1> %3, <16 x i8> %1, <16 x i8> %2
1140*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_u.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1141*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
1142*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1143*9880d681SAndroid Build Coastguard Worker
1144*9880d681SAndroid Build Coastguard Worker  ret void
1145*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_u_v16i8
1146*9880d681SAndroid Build Coastguard Worker}
1147*9880d681SAndroid Build Coastguard Worker
1148*9880d681SAndroid Build Coastguard Workerdefine void @max_u_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1149*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_u_v8i16:
1150*9880d681SAndroid Build Coastguard Worker
1151*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1152*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1153*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1154*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1155*9880d681SAndroid Build Coastguard Worker  %3 = icmp ugt <8 x i16> %1, %2
1156*9880d681SAndroid Build Coastguard Worker  %4 = select <8 x i1> %3, <8 x i16> %1, <8 x i16> %2
1157*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_u.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1158*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
1159*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1160*9880d681SAndroid Build Coastguard Worker
1161*9880d681SAndroid Build Coastguard Worker  ret void
1162*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_u_v8i16
1163*9880d681SAndroid Build Coastguard Worker}
1164*9880d681SAndroid Build Coastguard Worker
1165*9880d681SAndroid Build Coastguard Workerdefine void @max_u_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1166*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_u_v4i32:
1167*9880d681SAndroid Build Coastguard Worker
1168*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1169*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1170*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1171*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1172*9880d681SAndroid Build Coastguard Worker  %3 = icmp ugt <4 x i32> %1, %2
1173*9880d681SAndroid Build Coastguard Worker  %4 = select <4 x i1> %3, <4 x i32> %1, <4 x i32> %2
1174*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_u.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1175*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
1176*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1177*9880d681SAndroid Build Coastguard Worker
1178*9880d681SAndroid Build Coastguard Worker  ret void
1179*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_u_v4i32
1180*9880d681SAndroid Build Coastguard Worker}
1181*9880d681SAndroid Build Coastguard Worker
1182*9880d681SAndroid Build Coastguard Workerdefine void @max_u_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1183*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_u_v2i64:
1184*9880d681SAndroid Build Coastguard Worker
1185*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1186*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1187*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1188*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1189*9880d681SAndroid Build Coastguard Worker  %3 = icmp ugt <2 x i64> %1, %2
1190*9880d681SAndroid Build Coastguard Worker  %4 = select <2 x i1> %3, <2 x i64> %1, <2 x i64> %2
1191*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_u.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1192*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
1193*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1194*9880d681SAndroid Build Coastguard Worker
1195*9880d681SAndroid Build Coastguard Worker  ret void
1196*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_u_v2i64
1197*9880d681SAndroid Build Coastguard Worker}
1198*9880d681SAndroid Build Coastguard Worker
1199*9880d681SAndroid Build Coastguard Workerdefine void @max_s_eq_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
1200*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_s_eq_v16i8:
1201*9880d681SAndroid Build Coastguard Worker
1202*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1203*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1204*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
1205*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
1206*9880d681SAndroid Build Coastguard Worker  %3 = icmp sge <16 x i8> %1, %2
1207*9880d681SAndroid Build Coastguard Worker  %4 = select <16 x i1> %3, <16 x i8> %1, <16 x i8> %2
1208*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_s.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1209*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
1210*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1211*9880d681SAndroid Build Coastguard Worker
1212*9880d681SAndroid Build Coastguard Worker  ret void
1213*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_s_eq_v16i8
1214*9880d681SAndroid Build Coastguard Worker}
1215*9880d681SAndroid Build Coastguard Worker
1216*9880d681SAndroid Build Coastguard Workerdefine void @max_s_eq_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1217*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_s_eq_v8i16:
1218*9880d681SAndroid Build Coastguard Worker
1219*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1220*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1221*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1222*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1223*9880d681SAndroid Build Coastguard Worker  %3 = icmp sge <8 x i16> %1, %2
1224*9880d681SAndroid Build Coastguard Worker  %4 = select <8 x i1> %3, <8 x i16> %1, <8 x i16> %2
1225*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_s.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1226*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
1227*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1228*9880d681SAndroid Build Coastguard Worker
1229*9880d681SAndroid Build Coastguard Worker  ret void
1230*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_s_eq_v8i16
1231*9880d681SAndroid Build Coastguard Worker}
1232*9880d681SAndroid Build Coastguard Worker
1233*9880d681SAndroid Build Coastguard Workerdefine void @max_s_eq_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1234*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_s_eq_v4i32:
1235*9880d681SAndroid Build Coastguard Worker
1236*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1237*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1238*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1239*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1240*9880d681SAndroid Build Coastguard Worker  %3 = icmp sge <4 x i32> %1, %2
1241*9880d681SAndroid Build Coastguard Worker  %4 = select <4 x i1> %3, <4 x i32> %1, <4 x i32> %2
1242*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_s.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1243*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
1244*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1245*9880d681SAndroid Build Coastguard Worker
1246*9880d681SAndroid Build Coastguard Worker  ret void
1247*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_s_eq_v4i32
1248*9880d681SAndroid Build Coastguard Worker}
1249*9880d681SAndroid Build Coastguard Worker
1250*9880d681SAndroid Build Coastguard Workerdefine void @max_s_eq_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1251*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_s_eq_v2i64:
1252*9880d681SAndroid Build Coastguard Worker
1253*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1254*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1255*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1256*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1257*9880d681SAndroid Build Coastguard Worker  %3 = icmp sge <2 x i64> %1, %2
1258*9880d681SAndroid Build Coastguard Worker  %4 = select <2 x i1> %3, <2 x i64> %1, <2 x i64> %2
1259*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_s.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1260*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
1261*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1262*9880d681SAndroid Build Coastguard Worker
1263*9880d681SAndroid Build Coastguard Worker  ret void
1264*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_s_eq_v2i64
1265*9880d681SAndroid Build Coastguard Worker}
1266*9880d681SAndroid Build Coastguard Worker
1267*9880d681SAndroid Build Coastguard Workerdefine void @max_u_eq_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
1268*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_u_eq_v16i8:
1269*9880d681SAndroid Build Coastguard Worker
1270*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1271*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1272*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
1273*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
1274*9880d681SAndroid Build Coastguard Worker  %3 = icmp uge <16 x i8> %1, %2
1275*9880d681SAndroid Build Coastguard Worker  %4 = select <16 x i1> %3, <16 x i8> %1, <16 x i8> %2
1276*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_u.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1277*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
1278*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1279*9880d681SAndroid Build Coastguard Worker
1280*9880d681SAndroid Build Coastguard Worker  ret void
1281*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_u_eq_v16i8
1282*9880d681SAndroid Build Coastguard Worker}
1283*9880d681SAndroid Build Coastguard Worker
1284*9880d681SAndroid Build Coastguard Workerdefine void @max_u_eq_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1285*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_u_eq_v8i16:
1286*9880d681SAndroid Build Coastguard Worker
1287*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1288*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1289*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1290*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1291*9880d681SAndroid Build Coastguard Worker  %3 = icmp uge <8 x i16> %1, %2
1292*9880d681SAndroid Build Coastguard Worker  %4 = select <8 x i1> %3, <8 x i16> %1, <8 x i16> %2
1293*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_u.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1294*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
1295*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1296*9880d681SAndroid Build Coastguard Worker
1297*9880d681SAndroid Build Coastguard Worker  ret void
1298*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_u_eq_v8i16
1299*9880d681SAndroid Build Coastguard Worker}
1300*9880d681SAndroid Build Coastguard Worker
1301*9880d681SAndroid Build Coastguard Workerdefine void @max_u_eq_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1302*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_u_eq_v4i32:
1303*9880d681SAndroid Build Coastguard Worker
1304*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1305*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1306*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1307*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1308*9880d681SAndroid Build Coastguard Worker  %3 = icmp uge <4 x i32> %1, %2
1309*9880d681SAndroid Build Coastguard Worker  %4 = select <4 x i1> %3, <4 x i32> %1, <4 x i32> %2
1310*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_u.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1311*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
1312*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1313*9880d681SAndroid Build Coastguard Worker
1314*9880d681SAndroid Build Coastguard Worker  ret void
1315*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_u_eq_v4i32
1316*9880d681SAndroid Build Coastguard Worker}
1317*9880d681SAndroid Build Coastguard Worker
1318*9880d681SAndroid Build Coastguard Workerdefine void @max_u_eq_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1319*9880d681SAndroid Build Coastguard Worker  ; CHECK: max_u_eq_v2i64:
1320*9880d681SAndroid Build Coastguard Worker
1321*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1322*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1323*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1324*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1325*9880d681SAndroid Build Coastguard Worker  %3 = icmp uge <2 x i64> %1, %2
1326*9880d681SAndroid Build Coastguard Worker  %4 = select <2 x i1> %3, <2 x i64> %1, <2 x i64> %2
1327*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: max_u.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1328*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
1329*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1330*9880d681SAndroid Build Coastguard Worker
1331*9880d681SAndroid Build Coastguard Worker  ret void
1332*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size max_u_eq_v2i64
1333*9880d681SAndroid Build Coastguard Worker}
1334*9880d681SAndroid Build Coastguard Worker
1335*9880d681SAndroid Build Coastguard Workerdefine void @maxi_s_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
1336*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_s_v16i8:
1337*9880d681SAndroid Build Coastguard Worker
1338*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1339*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1340*9880d681SAndroid Build Coastguard Worker  %2 = icmp sgt <16 x i8> %1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1341*9880d681SAndroid Build Coastguard Worker  %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1342*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_s.b [[R3:\$w[0-9]+]], [[R1]], 1
1343*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
1344*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1345*9880d681SAndroid Build Coastguard Worker
1346*9880d681SAndroid Build Coastguard Worker  ret void
1347*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_s_v16i8
1348*9880d681SAndroid Build Coastguard Worker}
1349*9880d681SAndroid Build Coastguard Worker
1350*9880d681SAndroid Build Coastguard Workerdefine void @maxi_s_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
1351*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_s_v8i16:
1352*9880d681SAndroid Build Coastguard Worker
1353*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1354*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1355*9880d681SAndroid Build Coastguard Worker  %2 = icmp sgt <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1356*9880d681SAndroid Build Coastguard Worker  %3 = select <8 x i1> %2, <8 x i16> %1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1357*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_s.h [[R3:\$w[0-9]+]], [[R1]], 1
1358*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
1359*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1360*9880d681SAndroid Build Coastguard Worker
1361*9880d681SAndroid Build Coastguard Worker  ret void
1362*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_s_v8i16
1363*9880d681SAndroid Build Coastguard Worker}
1364*9880d681SAndroid Build Coastguard Worker
1365*9880d681SAndroid Build Coastguard Workerdefine void @maxi_s_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
1366*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_s_v4i32:
1367*9880d681SAndroid Build Coastguard Worker
1368*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1369*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1370*9880d681SAndroid Build Coastguard Worker  %2 = icmp sgt <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
1371*9880d681SAndroid Build Coastguard Worker  %3 = select <4 x i1> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
1372*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_s.w [[R3:\$w[0-9]+]], [[R1]], 1
1373*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
1374*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1375*9880d681SAndroid Build Coastguard Worker
1376*9880d681SAndroid Build Coastguard Worker  ret void
1377*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_s_v4i32
1378*9880d681SAndroid Build Coastguard Worker}
1379*9880d681SAndroid Build Coastguard Worker
1380*9880d681SAndroid Build Coastguard Workerdefine void @maxi_s_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
1381*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_s_v2i64:
1382*9880d681SAndroid Build Coastguard Worker
1383*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1384*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1385*9880d681SAndroid Build Coastguard Worker  %2 = icmp sgt <2 x i64> %1, <i64 1, i64 1>
1386*9880d681SAndroid Build Coastguard Worker  %3 = select <2 x i1> %2, <2 x i64> %1, <2 x i64> <i64 1, i64 1>
1387*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_s.d [[R3:\$w[0-9]+]], [[R1]], 1
1388*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
1389*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1390*9880d681SAndroid Build Coastguard Worker
1391*9880d681SAndroid Build Coastguard Worker  ret void
1392*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_s_v2i64
1393*9880d681SAndroid Build Coastguard Worker}
1394*9880d681SAndroid Build Coastguard Worker
1395*9880d681SAndroid Build Coastguard Workerdefine void @maxi_u_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
1396*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_u_v16i8:
1397*9880d681SAndroid Build Coastguard Worker
1398*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1399*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1400*9880d681SAndroid Build Coastguard Worker  %2 = icmp ugt <16 x i8> %1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1401*9880d681SAndroid Build Coastguard Worker  %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1402*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_u.b [[R3:\$w[0-9]+]], [[R1]], 1
1403*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
1404*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1405*9880d681SAndroid Build Coastguard Worker
1406*9880d681SAndroid Build Coastguard Worker  ret void
1407*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_u_v16i8
1408*9880d681SAndroid Build Coastguard Worker}
1409*9880d681SAndroid Build Coastguard Worker
1410*9880d681SAndroid Build Coastguard Workerdefine void @maxi_u_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
1411*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_u_v8i16:
1412*9880d681SAndroid Build Coastguard Worker
1413*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1414*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1415*9880d681SAndroid Build Coastguard Worker  %2 = icmp ugt <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1416*9880d681SAndroid Build Coastguard Worker  %3 = select <8 x i1> %2, <8 x i16> %1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1417*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_u.h [[R3:\$w[0-9]+]], [[R1]], 1
1418*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
1419*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1420*9880d681SAndroid Build Coastguard Worker
1421*9880d681SAndroid Build Coastguard Worker  ret void
1422*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_u_v8i16
1423*9880d681SAndroid Build Coastguard Worker}
1424*9880d681SAndroid Build Coastguard Worker
1425*9880d681SAndroid Build Coastguard Workerdefine void @maxi_u_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
1426*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_u_v4i32:
1427*9880d681SAndroid Build Coastguard Worker
1428*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1429*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1430*9880d681SAndroid Build Coastguard Worker  %2 = icmp ugt <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
1431*9880d681SAndroid Build Coastguard Worker  %3 = select <4 x i1> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
1432*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_u.w [[R3:\$w[0-9]+]], [[R1]], 1
1433*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
1434*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1435*9880d681SAndroid Build Coastguard Worker
1436*9880d681SAndroid Build Coastguard Worker  ret void
1437*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_u_v4i32
1438*9880d681SAndroid Build Coastguard Worker}
1439*9880d681SAndroid Build Coastguard Worker
1440*9880d681SAndroid Build Coastguard Workerdefine void @maxi_u_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
1441*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_u_v2i64:
1442*9880d681SAndroid Build Coastguard Worker
1443*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1444*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1445*9880d681SAndroid Build Coastguard Worker  %2 = icmp ugt <2 x i64> %1, <i64 1, i64 1>
1446*9880d681SAndroid Build Coastguard Worker  %3 = select <2 x i1> %2, <2 x i64> %1, <2 x i64> <i64 1, i64 1>
1447*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_u.d [[R3:\$w[0-9]+]], [[R1]], 1
1448*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
1449*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1450*9880d681SAndroid Build Coastguard Worker
1451*9880d681SAndroid Build Coastguard Worker  ret void
1452*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_u_v2i64
1453*9880d681SAndroid Build Coastguard Worker}
1454*9880d681SAndroid Build Coastguard Worker
1455*9880d681SAndroid Build Coastguard Workerdefine void @maxi_s_eq_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
1456*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_s_eq_v16i8:
1457*9880d681SAndroid Build Coastguard Worker
1458*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1459*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1460*9880d681SAndroid Build Coastguard Worker  %2 = icmp sge <16 x i8> %1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1461*9880d681SAndroid Build Coastguard Worker  %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1462*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_s.b [[R3:\$w[0-9]+]], [[R1]], 1
1463*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
1464*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1465*9880d681SAndroid Build Coastguard Worker
1466*9880d681SAndroid Build Coastguard Worker  ret void
1467*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_s_eq_v16i8
1468*9880d681SAndroid Build Coastguard Worker}
1469*9880d681SAndroid Build Coastguard Worker
1470*9880d681SAndroid Build Coastguard Workerdefine void @maxi_s_eq_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
1471*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_s_eq_v8i16:
1472*9880d681SAndroid Build Coastguard Worker
1473*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1474*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1475*9880d681SAndroid Build Coastguard Worker  %2 = icmp sge <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1476*9880d681SAndroid Build Coastguard Worker  %3 = select <8 x i1> %2, <8 x i16> %1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1477*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_s.h [[R3:\$w[0-9]+]], [[R1]], 1
1478*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
1479*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1480*9880d681SAndroid Build Coastguard Worker
1481*9880d681SAndroid Build Coastguard Worker  ret void
1482*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_s_eq_v8i16
1483*9880d681SAndroid Build Coastguard Worker}
1484*9880d681SAndroid Build Coastguard Worker
1485*9880d681SAndroid Build Coastguard Workerdefine void @maxi_s_eq_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
1486*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_s_eq_v4i32:
1487*9880d681SAndroid Build Coastguard Worker
1488*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1489*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1490*9880d681SAndroid Build Coastguard Worker  %2 = icmp sge <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
1491*9880d681SAndroid Build Coastguard Worker  %3 = select <4 x i1> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
1492*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_s.w [[R3:\$w[0-9]+]], [[R1]], 1
1493*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
1494*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1495*9880d681SAndroid Build Coastguard Worker
1496*9880d681SAndroid Build Coastguard Worker  ret void
1497*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_s_eq_v4i32
1498*9880d681SAndroid Build Coastguard Worker}
1499*9880d681SAndroid Build Coastguard Worker
1500*9880d681SAndroid Build Coastguard Workerdefine void @maxi_s_eq_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
1501*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_s_eq_v2i64:
1502*9880d681SAndroid Build Coastguard Worker
1503*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1504*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1505*9880d681SAndroid Build Coastguard Worker  %2 = icmp sge <2 x i64> %1, <i64 1, i64 1>
1506*9880d681SAndroid Build Coastguard Worker  %3 = select <2 x i1> %2, <2 x i64> %1, <2 x i64> <i64 1, i64 1>
1507*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_s.d [[R3:\$w[0-9]+]], [[R1]], 1
1508*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
1509*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1510*9880d681SAndroid Build Coastguard Worker
1511*9880d681SAndroid Build Coastguard Worker  ret void
1512*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_s_eq_v2i64
1513*9880d681SAndroid Build Coastguard Worker}
1514*9880d681SAndroid Build Coastguard Worker
1515*9880d681SAndroid Build Coastguard Workerdefine void @maxi_u_eq_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
1516*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_u_eq_v16i8:
1517*9880d681SAndroid Build Coastguard Worker
1518*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1519*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1520*9880d681SAndroid Build Coastguard Worker  %2 = icmp uge <16 x i8> %1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1521*9880d681SAndroid Build Coastguard Worker  %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1522*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_u.b [[R3:\$w[0-9]+]], [[R1]], 1
1523*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
1524*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1525*9880d681SAndroid Build Coastguard Worker
1526*9880d681SAndroid Build Coastguard Worker  ret void
1527*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_u_eq_v16i8
1528*9880d681SAndroid Build Coastguard Worker}
1529*9880d681SAndroid Build Coastguard Worker
1530*9880d681SAndroid Build Coastguard Workerdefine void @maxi_u_eq_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
1531*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_u_eq_v8i16:
1532*9880d681SAndroid Build Coastguard Worker
1533*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1534*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1535*9880d681SAndroid Build Coastguard Worker  %2 = icmp uge <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1536*9880d681SAndroid Build Coastguard Worker  %3 = select <8 x i1> %2, <8 x i16> %1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1537*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_u.h [[R3:\$w[0-9]+]], [[R1]], 1
1538*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
1539*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1540*9880d681SAndroid Build Coastguard Worker
1541*9880d681SAndroid Build Coastguard Worker  ret void
1542*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_u_eq_v8i16
1543*9880d681SAndroid Build Coastguard Worker}
1544*9880d681SAndroid Build Coastguard Worker
1545*9880d681SAndroid Build Coastguard Workerdefine void @maxi_u_eq_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
1546*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_u_eq_v4i32:
1547*9880d681SAndroid Build Coastguard Worker
1548*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1549*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1550*9880d681SAndroid Build Coastguard Worker  %2 = icmp uge <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
1551*9880d681SAndroid Build Coastguard Worker  %3 = select <4 x i1> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
1552*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_u.w [[R3:\$w[0-9]+]], [[R1]], 1
1553*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
1554*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1555*9880d681SAndroid Build Coastguard Worker
1556*9880d681SAndroid Build Coastguard Worker  ret void
1557*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_u_eq_v4i32
1558*9880d681SAndroid Build Coastguard Worker}
1559*9880d681SAndroid Build Coastguard Worker
1560*9880d681SAndroid Build Coastguard Workerdefine void @maxi_u_eq_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
1561*9880d681SAndroid Build Coastguard Worker  ; CHECK: maxi_u_eq_v2i64:
1562*9880d681SAndroid Build Coastguard Worker
1563*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1564*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1565*9880d681SAndroid Build Coastguard Worker  %2 = icmp uge <2 x i64> %1, <i64 1, i64 1>
1566*9880d681SAndroid Build Coastguard Worker  %3 = select <2 x i1> %2, <2 x i64> %1, <2 x i64> <i64 1, i64 1>
1567*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: maxi_u.d [[R3:\$w[0-9]+]], [[R1]], 1
1568*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
1569*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1570*9880d681SAndroid Build Coastguard Worker
1571*9880d681SAndroid Build Coastguard Worker  ret void
1572*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size maxi_u_eq_v2i64
1573*9880d681SAndroid Build Coastguard Worker}
1574*9880d681SAndroid Build Coastguard Worker
1575*9880d681SAndroid Build Coastguard Workerdefine void @min_s_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
1576*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_s_v16i8:
1577*9880d681SAndroid Build Coastguard Worker
1578*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1579*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1580*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
1581*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
1582*9880d681SAndroid Build Coastguard Worker  %3 = icmp sle <16 x i8> %1, %2
1583*9880d681SAndroid Build Coastguard Worker  %4 = select <16 x i1> %3, <16 x i8> %1, <16 x i8> %2
1584*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_s.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1585*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
1586*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1587*9880d681SAndroid Build Coastguard Worker
1588*9880d681SAndroid Build Coastguard Worker  ret void
1589*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_s_v16i8
1590*9880d681SAndroid Build Coastguard Worker}
1591*9880d681SAndroid Build Coastguard Worker
1592*9880d681SAndroid Build Coastguard Workerdefine void @min_s_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1593*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_s_v8i16:
1594*9880d681SAndroid Build Coastguard Worker
1595*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1596*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1597*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1598*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1599*9880d681SAndroid Build Coastguard Worker  %3 = icmp slt <8 x i16> %1, %2
1600*9880d681SAndroid Build Coastguard Worker  %4 = select <8 x i1> %3, <8 x i16> %1, <8 x i16> %2
1601*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_s.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1602*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
1603*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1604*9880d681SAndroid Build Coastguard Worker
1605*9880d681SAndroid Build Coastguard Worker  ret void
1606*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_s_v8i16
1607*9880d681SAndroid Build Coastguard Worker}
1608*9880d681SAndroid Build Coastguard Worker
1609*9880d681SAndroid Build Coastguard Workerdefine void @min_s_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1610*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_s_v4i32:
1611*9880d681SAndroid Build Coastguard Worker
1612*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1613*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1614*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1615*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1616*9880d681SAndroid Build Coastguard Worker  %3 = icmp slt <4 x i32> %1, %2
1617*9880d681SAndroid Build Coastguard Worker  %4 = select <4 x i1> %3, <4 x i32> %1, <4 x i32> %2
1618*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_s.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1619*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
1620*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1621*9880d681SAndroid Build Coastguard Worker
1622*9880d681SAndroid Build Coastguard Worker  ret void
1623*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_s_v4i32
1624*9880d681SAndroid Build Coastguard Worker}
1625*9880d681SAndroid Build Coastguard Worker
1626*9880d681SAndroid Build Coastguard Workerdefine void @min_s_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1627*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_s_v2i64:
1628*9880d681SAndroid Build Coastguard Worker
1629*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1630*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1631*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1632*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1633*9880d681SAndroid Build Coastguard Worker  %3 = icmp slt <2 x i64> %1, %2
1634*9880d681SAndroid Build Coastguard Worker  %4 = select <2 x i1> %3, <2 x i64> %1, <2 x i64> %2
1635*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_s.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1636*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
1637*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1638*9880d681SAndroid Build Coastguard Worker
1639*9880d681SAndroid Build Coastguard Worker  ret void
1640*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_s_v2i64
1641*9880d681SAndroid Build Coastguard Worker}
1642*9880d681SAndroid Build Coastguard Worker
1643*9880d681SAndroid Build Coastguard Workerdefine void @min_u_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
1644*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_u_v16i8:
1645*9880d681SAndroid Build Coastguard Worker
1646*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1647*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1648*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
1649*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
1650*9880d681SAndroid Build Coastguard Worker  %3 = icmp ult <16 x i8> %1, %2
1651*9880d681SAndroid Build Coastguard Worker  %4 = select <16 x i1> %3, <16 x i8> %1, <16 x i8> %2
1652*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_u.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1653*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
1654*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1655*9880d681SAndroid Build Coastguard Worker
1656*9880d681SAndroid Build Coastguard Worker  ret void
1657*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_u_v16i8
1658*9880d681SAndroid Build Coastguard Worker}
1659*9880d681SAndroid Build Coastguard Worker
1660*9880d681SAndroid Build Coastguard Workerdefine void @min_u_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1661*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_u_v8i16:
1662*9880d681SAndroid Build Coastguard Worker
1663*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1664*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1665*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1666*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1667*9880d681SAndroid Build Coastguard Worker  %3 = icmp ult <8 x i16> %1, %2
1668*9880d681SAndroid Build Coastguard Worker  %4 = select <8 x i1> %3, <8 x i16> %1, <8 x i16> %2
1669*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_u.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1670*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
1671*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1672*9880d681SAndroid Build Coastguard Worker
1673*9880d681SAndroid Build Coastguard Worker  ret void
1674*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_u_v8i16
1675*9880d681SAndroid Build Coastguard Worker}
1676*9880d681SAndroid Build Coastguard Worker
1677*9880d681SAndroid Build Coastguard Workerdefine void @min_u_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1678*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_u_v4i32:
1679*9880d681SAndroid Build Coastguard Worker
1680*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1681*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1682*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1683*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1684*9880d681SAndroid Build Coastguard Worker  %3 = icmp ult <4 x i32> %1, %2
1685*9880d681SAndroid Build Coastguard Worker  %4 = select <4 x i1> %3, <4 x i32> %1, <4 x i32> %2
1686*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_u.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1687*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
1688*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1689*9880d681SAndroid Build Coastguard Worker
1690*9880d681SAndroid Build Coastguard Worker  ret void
1691*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_u_v4i32
1692*9880d681SAndroid Build Coastguard Worker}
1693*9880d681SAndroid Build Coastguard Worker
1694*9880d681SAndroid Build Coastguard Workerdefine void @min_u_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1695*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_u_v2i64:
1696*9880d681SAndroid Build Coastguard Worker
1697*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1698*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1699*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1700*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1701*9880d681SAndroid Build Coastguard Worker  %3 = icmp ult <2 x i64> %1, %2
1702*9880d681SAndroid Build Coastguard Worker  %4 = select <2 x i1> %3, <2 x i64> %1, <2 x i64> %2
1703*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_u.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1704*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
1705*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1706*9880d681SAndroid Build Coastguard Worker
1707*9880d681SAndroid Build Coastguard Worker  ret void
1708*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_u_v2i64
1709*9880d681SAndroid Build Coastguard Worker}
1710*9880d681SAndroid Build Coastguard Worker
1711*9880d681SAndroid Build Coastguard Workerdefine void @min_s_eq_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
1712*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_s_eq_v16i8:
1713*9880d681SAndroid Build Coastguard Worker
1714*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1715*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1716*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
1717*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
1718*9880d681SAndroid Build Coastguard Worker  %3 = icmp sle <16 x i8> %1, %2
1719*9880d681SAndroid Build Coastguard Worker  %4 = select <16 x i1> %3, <16 x i8> %1, <16 x i8> %2
1720*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_s.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1721*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
1722*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1723*9880d681SAndroid Build Coastguard Worker
1724*9880d681SAndroid Build Coastguard Worker  ret void
1725*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_s_eq_v16i8
1726*9880d681SAndroid Build Coastguard Worker}
1727*9880d681SAndroid Build Coastguard Worker
1728*9880d681SAndroid Build Coastguard Workerdefine void @min_s_eq_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1729*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_s_eq_v8i16:
1730*9880d681SAndroid Build Coastguard Worker
1731*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1732*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1733*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1734*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1735*9880d681SAndroid Build Coastguard Worker  %3 = icmp sle <8 x i16> %1, %2
1736*9880d681SAndroid Build Coastguard Worker  %4 = select <8 x i1> %3, <8 x i16> %1, <8 x i16> %2
1737*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_s.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1738*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
1739*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1740*9880d681SAndroid Build Coastguard Worker
1741*9880d681SAndroid Build Coastguard Worker  ret void
1742*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_s_eq_v8i16
1743*9880d681SAndroid Build Coastguard Worker}
1744*9880d681SAndroid Build Coastguard Worker
1745*9880d681SAndroid Build Coastguard Workerdefine void @min_s_eq_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1746*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_s_eq_v4i32:
1747*9880d681SAndroid Build Coastguard Worker
1748*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1749*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1750*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1751*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1752*9880d681SAndroid Build Coastguard Worker  %3 = icmp sle <4 x i32> %1, %2
1753*9880d681SAndroid Build Coastguard Worker  %4 = select <4 x i1> %3, <4 x i32> %1, <4 x i32> %2
1754*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_s.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1755*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
1756*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1757*9880d681SAndroid Build Coastguard Worker
1758*9880d681SAndroid Build Coastguard Worker  ret void
1759*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_s_eq_v4i32
1760*9880d681SAndroid Build Coastguard Worker}
1761*9880d681SAndroid Build Coastguard Worker
1762*9880d681SAndroid Build Coastguard Workerdefine void @min_s_eq_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1763*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_s_eq_v2i64:
1764*9880d681SAndroid Build Coastguard Worker
1765*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1766*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1767*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1768*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1769*9880d681SAndroid Build Coastguard Worker  %3 = icmp sle <2 x i64> %1, %2
1770*9880d681SAndroid Build Coastguard Worker  %4 = select <2 x i1> %3, <2 x i64> %1, <2 x i64> %2
1771*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_s.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1772*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
1773*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1774*9880d681SAndroid Build Coastguard Worker
1775*9880d681SAndroid Build Coastguard Worker  ret void
1776*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_s_eq_v2i64
1777*9880d681SAndroid Build Coastguard Worker}
1778*9880d681SAndroid Build Coastguard Worker
1779*9880d681SAndroid Build Coastguard Workerdefine void @min_u_eq_v16i8(<16 x i8>* %c, <16 x i8>* %a, <16 x i8>* %b) nounwind {
1780*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_u_eq_v16i8:
1781*9880d681SAndroid Build Coastguard Worker
1782*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1783*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1784*9880d681SAndroid Build Coastguard Worker  %2 = load <16 x i8>, <16 x i8>* %b
1785*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R2:\$w[0-9]+]], 0($6)
1786*9880d681SAndroid Build Coastguard Worker  %3 = icmp ule <16 x i8> %1, %2
1787*9880d681SAndroid Build Coastguard Worker  %4 = select <16 x i1> %3, <16 x i8> %1, <16 x i8> %2
1788*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_u.b [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1789*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %4, <16 x i8>* %c
1790*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1791*9880d681SAndroid Build Coastguard Worker
1792*9880d681SAndroid Build Coastguard Worker  ret void
1793*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_u_eq_v16i8
1794*9880d681SAndroid Build Coastguard Worker}
1795*9880d681SAndroid Build Coastguard Worker
1796*9880d681SAndroid Build Coastguard Workerdefine void @min_u_eq_v8i16(<8 x i16>* %c, <8 x i16>* %a, <8 x i16>* %b) nounwind {
1797*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_u_eq_v8i16:
1798*9880d681SAndroid Build Coastguard Worker
1799*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1800*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1801*9880d681SAndroid Build Coastguard Worker  %2 = load <8 x i16>, <8 x i16>* %b
1802*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R2:\$w[0-9]+]], 0($6)
1803*9880d681SAndroid Build Coastguard Worker  %3 = icmp ule <8 x i16> %1, %2
1804*9880d681SAndroid Build Coastguard Worker  %4 = select <8 x i1> %3, <8 x i16> %1, <8 x i16> %2
1805*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_u.h [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1806*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %4, <8 x i16>* %c
1807*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1808*9880d681SAndroid Build Coastguard Worker
1809*9880d681SAndroid Build Coastguard Worker  ret void
1810*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_u_eq_v8i16
1811*9880d681SAndroid Build Coastguard Worker}
1812*9880d681SAndroid Build Coastguard Worker
1813*9880d681SAndroid Build Coastguard Workerdefine void @min_u_eq_v4i32(<4 x i32>* %c, <4 x i32>* %a, <4 x i32>* %b) nounwind {
1814*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_u_eq_v4i32:
1815*9880d681SAndroid Build Coastguard Worker
1816*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1817*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1818*9880d681SAndroid Build Coastguard Worker  %2 = load <4 x i32>, <4 x i32>* %b
1819*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R2:\$w[0-9]+]], 0($6)
1820*9880d681SAndroid Build Coastguard Worker  %3 = icmp ule <4 x i32> %1, %2
1821*9880d681SAndroid Build Coastguard Worker  %4 = select <4 x i1> %3, <4 x i32> %1, <4 x i32> %2
1822*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_u.w [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1823*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %4, <4 x i32>* %c
1824*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1825*9880d681SAndroid Build Coastguard Worker
1826*9880d681SAndroid Build Coastguard Worker  ret void
1827*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_u_eq_v4i32
1828*9880d681SAndroid Build Coastguard Worker}
1829*9880d681SAndroid Build Coastguard Worker
1830*9880d681SAndroid Build Coastguard Workerdefine void @min_u_eq_v2i64(<2 x i64>* %c, <2 x i64>* %a, <2 x i64>* %b) nounwind {
1831*9880d681SAndroid Build Coastguard Worker  ; CHECK: min_u_eq_v2i64:
1832*9880d681SAndroid Build Coastguard Worker
1833*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1834*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1835*9880d681SAndroid Build Coastguard Worker  %2 = load <2 x i64>, <2 x i64>* %b
1836*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R2:\$w[0-9]+]], 0($6)
1837*9880d681SAndroid Build Coastguard Worker  %3 = icmp ule <2 x i64> %1, %2
1838*9880d681SAndroid Build Coastguard Worker  %4 = select <2 x i1> %3, <2 x i64> %1, <2 x i64> %2
1839*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: min_u.d [[R3:\$w[0-9]+]], [[R1]], [[R2]]
1840*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %4, <2 x i64>* %c
1841*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1842*9880d681SAndroid Build Coastguard Worker
1843*9880d681SAndroid Build Coastguard Worker  ret void
1844*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size min_u_eq_v2i64
1845*9880d681SAndroid Build Coastguard Worker}
1846*9880d681SAndroid Build Coastguard Worker
1847*9880d681SAndroid Build Coastguard Workerdefine void @mini_s_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
1848*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_s_v16i8:
1849*9880d681SAndroid Build Coastguard Worker
1850*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1851*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1852*9880d681SAndroid Build Coastguard Worker  %2 = icmp slt <16 x i8> %1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1853*9880d681SAndroid Build Coastguard Worker  %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1854*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_s.b [[R3:\$w[0-9]+]], [[R1]], 1
1855*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
1856*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1857*9880d681SAndroid Build Coastguard Worker
1858*9880d681SAndroid Build Coastguard Worker  ret void
1859*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_s_v16i8
1860*9880d681SAndroid Build Coastguard Worker}
1861*9880d681SAndroid Build Coastguard Worker
1862*9880d681SAndroid Build Coastguard Workerdefine void @mini_s_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
1863*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_s_v8i16:
1864*9880d681SAndroid Build Coastguard Worker
1865*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1866*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1867*9880d681SAndroid Build Coastguard Worker  %2 = icmp slt <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1868*9880d681SAndroid Build Coastguard Worker  %3 = select <8 x i1> %2, <8 x i16> %1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1869*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_s.h [[R3:\$w[0-9]+]], [[R1]], 1
1870*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
1871*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1872*9880d681SAndroid Build Coastguard Worker
1873*9880d681SAndroid Build Coastguard Worker  ret void
1874*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_s_v8i16
1875*9880d681SAndroid Build Coastguard Worker}
1876*9880d681SAndroid Build Coastguard Worker
1877*9880d681SAndroid Build Coastguard Workerdefine void @mini_s_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
1878*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_s_v4i32:
1879*9880d681SAndroid Build Coastguard Worker
1880*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1881*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1882*9880d681SAndroid Build Coastguard Worker  %2 = icmp slt <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
1883*9880d681SAndroid Build Coastguard Worker  %3 = select <4 x i1> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
1884*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_s.w [[R3:\$w[0-9]+]], [[R1]], 1
1885*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
1886*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1887*9880d681SAndroid Build Coastguard Worker
1888*9880d681SAndroid Build Coastguard Worker  ret void
1889*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_s_v4i32
1890*9880d681SAndroid Build Coastguard Worker}
1891*9880d681SAndroid Build Coastguard Worker
1892*9880d681SAndroid Build Coastguard Workerdefine void @mini_s_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
1893*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_s_v2i64:
1894*9880d681SAndroid Build Coastguard Worker
1895*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1896*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1897*9880d681SAndroid Build Coastguard Worker  %2 = icmp slt <2 x i64> %1, <i64 1, i64 1>
1898*9880d681SAndroid Build Coastguard Worker  %3 = select <2 x i1> %2, <2 x i64> %1, <2 x i64> <i64 1, i64 1>
1899*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_s.d [[R3:\$w[0-9]+]], [[R1]], 1
1900*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
1901*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1902*9880d681SAndroid Build Coastguard Worker
1903*9880d681SAndroid Build Coastguard Worker  ret void
1904*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_s_v2i64
1905*9880d681SAndroid Build Coastguard Worker}
1906*9880d681SAndroid Build Coastguard Worker
1907*9880d681SAndroid Build Coastguard Workerdefine void @mini_u_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
1908*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_u_v16i8:
1909*9880d681SAndroid Build Coastguard Worker
1910*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1911*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1912*9880d681SAndroid Build Coastguard Worker  %2 = icmp ult <16 x i8> %1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1913*9880d681SAndroid Build Coastguard Worker  %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1914*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_u.b [[R3:\$w[0-9]+]], [[R1]], 1
1915*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
1916*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1917*9880d681SAndroid Build Coastguard Worker
1918*9880d681SAndroid Build Coastguard Worker  ret void
1919*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_u_v16i8
1920*9880d681SAndroid Build Coastguard Worker}
1921*9880d681SAndroid Build Coastguard Worker
1922*9880d681SAndroid Build Coastguard Workerdefine void @mini_u_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
1923*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_u_v8i16:
1924*9880d681SAndroid Build Coastguard Worker
1925*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1926*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1927*9880d681SAndroid Build Coastguard Worker  %2 = icmp ult <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1928*9880d681SAndroid Build Coastguard Worker  %3 = select <8 x i1> %2, <8 x i16> %1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1929*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_u.h [[R3:\$w[0-9]+]], [[R1]], 1
1930*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
1931*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1932*9880d681SAndroid Build Coastguard Worker
1933*9880d681SAndroid Build Coastguard Worker  ret void
1934*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_u_v8i16
1935*9880d681SAndroid Build Coastguard Worker}
1936*9880d681SAndroid Build Coastguard Worker
1937*9880d681SAndroid Build Coastguard Workerdefine void @mini_u_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
1938*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_u_v4i32:
1939*9880d681SAndroid Build Coastguard Worker
1940*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
1941*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
1942*9880d681SAndroid Build Coastguard Worker  %2 = icmp ult <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
1943*9880d681SAndroid Build Coastguard Worker  %3 = select <4 x i1> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
1944*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_u.w [[R3:\$w[0-9]+]], [[R1]], 1
1945*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
1946*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
1947*9880d681SAndroid Build Coastguard Worker
1948*9880d681SAndroid Build Coastguard Worker  ret void
1949*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_u_v4i32
1950*9880d681SAndroid Build Coastguard Worker}
1951*9880d681SAndroid Build Coastguard Worker
1952*9880d681SAndroid Build Coastguard Workerdefine void @mini_u_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
1953*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_u_v2i64:
1954*9880d681SAndroid Build Coastguard Worker
1955*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
1956*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
1957*9880d681SAndroid Build Coastguard Worker  %2 = icmp ult <2 x i64> %1, <i64 1, i64 1>
1958*9880d681SAndroid Build Coastguard Worker  %3 = select <2 x i1> %2, <2 x i64> %1, <2 x i64> <i64 1, i64 1>
1959*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_u.d [[R3:\$w[0-9]+]], [[R1]], 1
1960*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
1961*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
1962*9880d681SAndroid Build Coastguard Worker
1963*9880d681SAndroid Build Coastguard Worker  ret void
1964*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_u_v2i64
1965*9880d681SAndroid Build Coastguard Worker}
1966*9880d681SAndroid Build Coastguard Worker
1967*9880d681SAndroid Build Coastguard Workerdefine void @mini_s_eq_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
1968*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_s_eq_v16i8:
1969*9880d681SAndroid Build Coastguard Worker
1970*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
1971*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
1972*9880d681SAndroid Build Coastguard Worker  %2 = icmp sle <16 x i8> %1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1973*9880d681SAndroid Build Coastguard Worker  %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1974*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_s.b [[R3:\$w[0-9]+]], [[R1]], 1
1975*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
1976*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
1977*9880d681SAndroid Build Coastguard Worker
1978*9880d681SAndroid Build Coastguard Worker  ret void
1979*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_s_eq_v16i8
1980*9880d681SAndroid Build Coastguard Worker}
1981*9880d681SAndroid Build Coastguard Worker
1982*9880d681SAndroid Build Coastguard Workerdefine void @mini_s_eq_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
1983*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_s_eq_v8i16:
1984*9880d681SAndroid Build Coastguard Worker
1985*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
1986*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
1987*9880d681SAndroid Build Coastguard Worker  %2 = icmp sle <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1988*9880d681SAndroid Build Coastguard Worker  %3 = select <8 x i1> %2, <8 x i16> %1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1989*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_s.h [[R3:\$w[0-9]+]], [[R1]], 1
1990*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
1991*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
1992*9880d681SAndroid Build Coastguard Worker
1993*9880d681SAndroid Build Coastguard Worker  ret void
1994*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_s_eq_v8i16
1995*9880d681SAndroid Build Coastguard Worker}
1996*9880d681SAndroid Build Coastguard Worker
1997*9880d681SAndroid Build Coastguard Workerdefine void @mini_s_eq_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
1998*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_s_eq_v4i32:
1999*9880d681SAndroid Build Coastguard Worker
2000*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
2001*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
2002*9880d681SAndroid Build Coastguard Worker  %2 = icmp sle <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
2003*9880d681SAndroid Build Coastguard Worker  %3 = select <4 x i1> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
2004*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_s.w [[R3:\$w[0-9]+]], [[R1]], 1
2005*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
2006*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
2007*9880d681SAndroid Build Coastguard Worker
2008*9880d681SAndroid Build Coastguard Worker  ret void
2009*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_s_eq_v4i32
2010*9880d681SAndroid Build Coastguard Worker}
2011*9880d681SAndroid Build Coastguard Worker
2012*9880d681SAndroid Build Coastguard Workerdefine void @mini_s_eq_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
2013*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_s_eq_v2i64:
2014*9880d681SAndroid Build Coastguard Worker
2015*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
2016*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
2017*9880d681SAndroid Build Coastguard Worker  %2 = icmp sle <2 x i64> %1, <i64 1, i64 1>
2018*9880d681SAndroid Build Coastguard Worker  %3 = select <2 x i1> %2, <2 x i64> %1, <2 x i64> <i64 1, i64 1>
2019*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_s.d [[R3:\$w[0-9]+]], [[R1]], 1
2020*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
2021*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
2022*9880d681SAndroid Build Coastguard Worker
2023*9880d681SAndroid Build Coastguard Worker  ret void
2024*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_s_eq_v2i64
2025*9880d681SAndroid Build Coastguard Worker}
2026*9880d681SAndroid Build Coastguard Worker
2027*9880d681SAndroid Build Coastguard Workerdefine void @mini_u_eq_v16i8(<16 x i8>* %c, <16 x i8>* %a) nounwind {
2028*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_u_eq_v16i8:
2029*9880d681SAndroid Build Coastguard Worker
2030*9880d681SAndroid Build Coastguard Worker  %1 = load <16 x i8>, <16 x i8>* %a
2031*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.b [[R1:\$w[0-9]+]], 0($5)
2032*9880d681SAndroid Build Coastguard Worker  %2 = icmp ule <16 x i8> %1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
2033*9880d681SAndroid Build Coastguard Worker  %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
2034*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_u.b [[R3:\$w[0-9]+]], [[R1]], 1
2035*9880d681SAndroid Build Coastguard Worker  store <16 x i8> %3, <16 x i8>* %c
2036*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.b [[R3]], 0($4)
2037*9880d681SAndroid Build Coastguard Worker
2038*9880d681SAndroid Build Coastguard Worker  ret void
2039*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_u_eq_v16i8
2040*9880d681SAndroid Build Coastguard Worker}
2041*9880d681SAndroid Build Coastguard Worker
2042*9880d681SAndroid Build Coastguard Workerdefine void @mini_u_eq_v8i16(<8 x i16>* %c, <8 x i16>* %a) nounwind {
2043*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_u_eq_v8i16:
2044*9880d681SAndroid Build Coastguard Worker
2045*9880d681SAndroid Build Coastguard Worker  %1 = load <8 x i16>, <8 x i16>* %a
2046*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.h [[R1:\$w[0-9]+]], 0($5)
2047*9880d681SAndroid Build Coastguard Worker  %2 = icmp ule <8 x i16> %1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
2048*9880d681SAndroid Build Coastguard Worker  %3 = select <8 x i1> %2, <8 x i16> %1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
2049*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_u.h [[R3:\$w[0-9]+]], [[R1]], 1
2050*9880d681SAndroid Build Coastguard Worker  store <8 x i16> %3, <8 x i16>* %c
2051*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.h [[R3]], 0($4)
2052*9880d681SAndroid Build Coastguard Worker
2053*9880d681SAndroid Build Coastguard Worker  ret void
2054*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_u_eq_v8i16
2055*9880d681SAndroid Build Coastguard Worker}
2056*9880d681SAndroid Build Coastguard Worker
2057*9880d681SAndroid Build Coastguard Workerdefine void @mini_u_eq_v4i32(<4 x i32>* %c, <4 x i32>* %a) nounwind {
2058*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_u_eq_v4i32:
2059*9880d681SAndroid Build Coastguard Worker
2060*9880d681SAndroid Build Coastguard Worker  %1 = load <4 x i32>, <4 x i32>* %a
2061*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.w [[R1:\$w[0-9]+]], 0($5)
2062*9880d681SAndroid Build Coastguard Worker  %2 = icmp ule <4 x i32> %1, <i32 1, i32 1, i32 1, i32 1>
2063*9880d681SAndroid Build Coastguard Worker  %3 = select <4 x i1> %2, <4 x i32> %1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
2064*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_u.w [[R3:\$w[0-9]+]], [[R1]], 1
2065*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %3, <4 x i32>* %c
2066*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.w [[R3]], 0($4)
2067*9880d681SAndroid Build Coastguard Worker
2068*9880d681SAndroid Build Coastguard Worker  ret void
2069*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_u_eq_v4i32
2070*9880d681SAndroid Build Coastguard Worker}
2071*9880d681SAndroid Build Coastguard Worker
2072*9880d681SAndroid Build Coastguard Workerdefine void @mini_u_eq_v2i64(<2 x i64>* %c, <2 x i64>* %a) nounwind {
2073*9880d681SAndroid Build Coastguard Worker  ; CHECK: mini_u_eq_v2i64:
2074*9880d681SAndroid Build Coastguard Worker
2075*9880d681SAndroid Build Coastguard Worker  %1 = load <2 x i64>, <2 x i64>* %a
2076*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: ld.d [[R1:\$w[0-9]+]], 0($5)
2077*9880d681SAndroid Build Coastguard Worker  %2 = icmp ule <2 x i64> %1, <i64 1, i64 1>
2078*9880d681SAndroid Build Coastguard Worker  %3 = select <2 x i1> %2, <2 x i64> %1, <2 x i64> <i64 1, i64 1>
2079*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: mini_u.d [[R3:\$w[0-9]+]], [[R1]], 1
2080*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %3, <2 x i64>* %c
2081*9880d681SAndroid Build Coastguard Worker  ; CHECK-DAG: st.d [[R3]], 0($4)
2082*9880d681SAndroid Build Coastguard Worker
2083*9880d681SAndroid Build Coastguard Worker  ret void
2084*9880d681SAndroid Build Coastguard Worker  ; CHECK: .size mini_u_eq_v2i64
2085*9880d681SAndroid Build Coastguard Worker}
2086