xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/neon-compare-instructions.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=aarch64-none-linux-gnu -mattr=+neon < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmeq8xi8(<8 x i8> %A, <8 x i8> %B) {
4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq8xi8:
5*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
6*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <8 x i8> %A, %B;
7*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
8*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
9*9880d681SAndroid Build Coastguard Worker}
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmeq16xi8(<16 x i8> %A, <16 x i8> %B) {
12*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq16xi8:
13*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
14*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <16 x i8> %A, %B;
15*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
16*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmeq4xi16(<4 x i16> %A, <4 x i16> %B) {
20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq4xi16:
21*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
22*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <4 x i16> %A, %B;
23*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
24*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
25*9880d681SAndroid Build Coastguard Worker}
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmeq8xi16(<8 x i16> %A, <8 x i16> %B) {
28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq8xi16:
29*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
30*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <8 x i16> %A, %B;
31*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
32*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmeq2xi32(<2 x i32> %A, <2 x i32> %B) {
36*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq2xi32:
37*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
38*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <2 x i32> %A, %B;
39*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
40*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
41*9880d681SAndroid Build Coastguard Worker}
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmeq4xi32(<4 x i32> %A, <4 x i32> %B) {
44*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq4xi32:
45*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
46*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <4 x i32> %A, %B;
47*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
48*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
49*9880d681SAndroid Build Coastguard Worker}
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmeq2xi64(<2 x i64> %A, <2 x i64> %B) {
52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeq2xi64:
53*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
54*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <2 x i64> %A, %B;
55*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
56*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
57*9880d681SAndroid Build Coastguard Worker}
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmne8xi8(<8 x i8> %A, <8 x i8> %B) {
60*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne8xi8:
61*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
62*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
63*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <8 x i8> %A, %B;
64*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
65*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
66*9880d681SAndroid Build Coastguard Worker}
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmne16xi8(<16 x i8> %A, <16 x i8> %B) {
69*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne16xi8:
70*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
72*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <16 x i8> %A, %B;
73*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
74*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
75*9880d681SAndroid Build Coastguard Worker}
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmne4xi16(<4 x i16> %A, <4 x i16> %B) {
78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne4xi16:
79*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
81*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <4 x i16> %A, %B;
82*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
83*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
84*9880d681SAndroid Build Coastguard Worker}
85*9880d681SAndroid Build Coastguard Worker
86*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmne8xi16(<8 x i16> %A, <8 x i16> %B) {
87*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne8xi16:
88*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
90*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <8 x i16> %A, %B;
91*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
92*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
93*9880d681SAndroid Build Coastguard Worker}
94*9880d681SAndroid Build Coastguard Worker
95*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmne2xi32(<2 x i32> %A, <2 x i32> %B) {
96*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne2xi32:
97*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
99*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <2 x i32> %A, %B;
100*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
101*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
102*9880d681SAndroid Build Coastguard Worker}
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmne4xi32(<4 x i32> %A, <4 x i32> %B) {
105*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne4xi32:
106*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
108*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <4 x i32> %A, %B;
109*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
110*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
111*9880d681SAndroid Build Coastguard Worker}
112*9880d681SAndroid Build Coastguard Worker
113*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmne2xi64(<2 x i64> %A, <2 x i64> %B) {
114*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmne2xi64:
115*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
117*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <2 x i64> %A, %B;
118*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
119*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
120*9880d681SAndroid Build Coastguard Worker}
121*9880d681SAndroid Build Coastguard Worker
122*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmgt8xi8(<8 x i8> %A, <8 x i8> %B) {
123*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt8xi8:
124*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
125*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <8 x i8> %A, %B;
126*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
127*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
128*9880d681SAndroid Build Coastguard Worker}
129*9880d681SAndroid Build Coastguard Worker
130*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmgt16xi8(<16 x i8> %A, <16 x i8> %B) {
131*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt16xi8:
132*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
133*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <16 x i8> %A, %B;
134*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
135*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
136*9880d681SAndroid Build Coastguard Worker}
137*9880d681SAndroid Build Coastguard Worker
138*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmgt4xi16(<4 x i16> %A, <4 x i16> %B) {
139*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt4xi16:
140*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
141*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <4 x i16> %A, %B;
142*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
143*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
144*9880d681SAndroid Build Coastguard Worker}
145*9880d681SAndroid Build Coastguard Worker
146*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmgt8xi16(<8 x i16> %A, <8 x i16> %B) {
147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt8xi16:
148*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
149*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <8 x i16> %A, %B;
150*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
151*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
152*9880d681SAndroid Build Coastguard Worker}
153*9880d681SAndroid Build Coastguard Worker
154*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmgt2xi32(<2 x i32> %A, <2 x i32> %B) {
155*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt2xi32:
156*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
157*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <2 x i32> %A, %B;
158*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
159*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
160*9880d681SAndroid Build Coastguard Worker}
161*9880d681SAndroid Build Coastguard Worker
162*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmgt4xi32(<4 x i32> %A, <4 x i32> %B) {
163*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt4xi32:
164*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
165*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <4 x i32> %A, %B;
166*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
167*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
168*9880d681SAndroid Build Coastguard Worker}
169*9880d681SAndroid Build Coastguard Worker
170*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmgt2xi64(<2 x i64> %A, <2 x i64> %B) {
171*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgt2xi64:
172*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
173*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <2 x i64> %A, %B;
174*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
175*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
176*9880d681SAndroid Build Coastguard Worker}
177*9880d681SAndroid Build Coastguard Worker
178*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmlt8xi8(<8 x i8> %A, <8 x i8> %B) {
179*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt8xi8:
180*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
181*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands.
182*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.8b, v1.8b, v0.8b
183*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <8 x i8> %A, %B;
184*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
185*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
186*9880d681SAndroid Build Coastguard Worker}
187*9880d681SAndroid Build Coastguard Worker
188*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmlt16xi8(<16 x i8> %A, <16 x i8> %B) {
189*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt16xi8:
190*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
191*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands.
192*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.16b, v1.16b, v0.16b
193*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <16 x i8> %A, %B;
194*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
195*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
196*9880d681SAndroid Build Coastguard Worker}
197*9880d681SAndroid Build Coastguard Worker
198*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmlt4xi16(<4 x i16> %A, <4 x i16> %B) {
199*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt4xi16:
200*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
201*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands.
202*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.4h, v1.4h, v0.4h
203*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <4 x i16> %A, %B;
204*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
205*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
206*9880d681SAndroid Build Coastguard Worker}
207*9880d681SAndroid Build Coastguard Worker
208*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmlt8xi16(<8 x i16> %A, <8 x i16> %B) {
209*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt8xi16:
210*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
211*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands.
212*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.8h, v1.8h, v0.8h
213*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <8 x i16> %A, %B;
214*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
215*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
216*9880d681SAndroid Build Coastguard Worker}
217*9880d681SAndroid Build Coastguard Worker
218*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmlt2xi32(<2 x i32> %A, <2 x i32> %B) {
219*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt2xi32:
220*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
221*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands.
222*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.2s, v1.2s, v0.2s
223*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <2 x i32> %A, %B;
224*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
225*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
226*9880d681SAndroid Build Coastguard Worker}
227*9880d681SAndroid Build Coastguard Worker
228*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmlt4xi32(<4 x i32> %A, <4 x i32> %B) {
229*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt4xi32:
230*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
231*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands.
232*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.4s, v1.4s, v0.4s
233*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <4 x i32> %A, %B;
234*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
235*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
236*9880d681SAndroid Build Coastguard Worker}
237*9880d681SAndroid Build Coastguard Worker
238*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmlt2xi64(<2 x i64> %A, <2 x i64> %B) {
239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlt2xi64:
240*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
241*9880d681SAndroid Build Coastguard Worker; LT implemented as GT, so check reversed operands.
242*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.2d, v1.2d, v0.2d
243*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <2 x i64> %A, %B;
244*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
245*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
246*9880d681SAndroid Build Coastguard Worker}
247*9880d681SAndroid Build Coastguard Worker
248*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmge8xi8(<8 x i8> %A, <8 x i8> %B) {
249*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge8xi8:
250*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
251*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <8 x i8> %A, %B;
252*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
253*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
254*9880d681SAndroid Build Coastguard Worker}
255*9880d681SAndroid Build Coastguard Worker
256*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmge16xi8(<16 x i8> %A, <16 x i8> %B) {
257*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge16xi8:
258*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
259*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <16 x i8> %A, %B;
260*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
261*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
262*9880d681SAndroid Build Coastguard Worker}
263*9880d681SAndroid Build Coastguard Worker
264*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmge4xi16(<4 x i16> %A, <4 x i16> %B) {
265*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge4xi16:
266*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
267*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <4 x i16> %A, %B;
268*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
269*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
270*9880d681SAndroid Build Coastguard Worker}
271*9880d681SAndroid Build Coastguard Worker
272*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmge8xi16(<8 x i16> %A, <8 x i16> %B) {
273*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge8xi16:
274*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
275*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <8 x i16> %A, %B;
276*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
277*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
278*9880d681SAndroid Build Coastguard Worker}
279*9880d681SAndroid Build Coastguard Worker
280*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmge2xi32(<2 x i32> %A, <2 x i32> %B) {
281*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge2xi32:
282*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
283*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <2 x i32> %A, %B;
284*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
285*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
286*9880d681SAndroid Build Coastguard Worker}
287*9880d681SAndroid Build Coastguard Worker
288*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmge4xi32(<4 x i32> %A, <4 x i32> %B) {
289*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge4xi32:
290*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
291*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <4 x i32> %A, %B;
292*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
293*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
294*9880d681SAndroid Build Coastguard Worker}
295*9880d681SAndroid Build Coastguard Worker
296*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmge2xi64(<2 x i64> %A, <2 x i64> %B) {
297*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmge2xi64:
298*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
299*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <2 x i64> %A, %B;
300*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
301*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
302*9880d681SAndroid Build Coastguard Worker}
303*9880d681SAndroid Build Coastguard Worker
304*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmle8xi8(<8 x i8> %A, <8 x i8> %B) {
305*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle8xi8:
306*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
307*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands.
308*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8b, v1.8b, v0.8b
309*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <8 x i8> %A, %B;
310*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
311*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
312*9880d681SAndroid Build Coastguard Worker}
313*9880d681SAndroid Build Coastguard Worker
314*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmle16xi8(<16 x i8> %A, <16 x i8> %B) {
315*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle16xi8:
316*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
317*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands.
318*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.16b, v1.16b, v0.16b
319*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <16 x i8> %A, %B;
320*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
321*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
322*9880d681SAndroid Build Coastguard Worker}
323*9880d681SAndroid Build Coastguard Worker
324*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmle4xi16(<4 x i16> %A, <4 x i16> %B) {
325*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle4xi16:
326*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
327*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands.
328*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4h, v1.4h, v0.4h
329*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <4 x i16> %A, %B;
330*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
331*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
332*9880d681SAndroid Build Coastguard Worker}
333*9880d681SAndroid Build Coastguard Worker
334*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmle8xi16(<8 x i16> %A, <8 x i16> %B) {
335*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle8xi16:
336*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
337*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands.
338*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8h, v1.8h, v0.8h
339*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <8 x i16> %A, %B;
340*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
341*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
342*9880d681SAndroid Build Coastguard Worker}
343*9880d681SAndroid Build Coastguard Worker
344*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmle2xi32(<2 x i32> %A, <2 x i32> %B) {
345*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle2xi32:
346*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
347*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands.
348*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2s, v1.2s, v0.2s
349*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <2 x i32> %A, %B;
350*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
351*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
352*9880d681SAndroid Build Coastguard Worker}
353*9880d681SAndroid Build Coastguard Worker
354*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmle4xi32(<4 x i32> %A, <4 x i32> %B) {
355*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle4xi32:
356*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
357*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands.
358*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4s, v1.4s, v0.4s
359*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <4 x i32> %A, %B;
360*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
361*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
362*9880d681SAndroid Build Coastguard Worker}
363*9880d681SAndroid Build Coastguard Worker
364*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmle2xi64(<2 x i64> %A, <2 x i64> %B) {
365*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmle2xi64:
366*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
367*9880d681SAndroid Build Coastguard Worker; LE implemented as GE, so check reversed operands.
368*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2d, v1.2d, v0.2d
369*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <2 x i64> %A, %B;
370*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
371*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
372*9880d681SAndroid Build Coastguard Worker}
373*9880d681SAndroid Build Coastguard Worker
374*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmhi8xi8(<8 x i8> %A, <8 x i8> %B) {
375*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi8xi8:
376*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
377*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <8 x i8> %A, %B;
378*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
379*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
380*9880d681SAndroid Build Coastguard Worker}
381*9880d681SAndroid Build Coastguard Worker
382*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmhi16xi8(<16 x i8> %A, <16 x i8> %B) {
383*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi16xi8:
384*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
385*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <16 x i8> %A, %B;
386*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
387*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
388*9880d681SAndroid Build Coastguard Worker}
389*9880d681SAndroid Build Coastguard Worker
390*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmhi4xi16(<4 x i16> %A, <4 x i16> %B) {
391*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi4xi16:
392*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
393*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <4 x i16> %A, %B;
394*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
395*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
396*9880d681SAndroid Build Coastguard Worker}
397*9880d681SAndroid Build Coastguard Worker
398*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmhi8xi16(<8 x i16> %A, <8 x i16> %B) {
399*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi8xi16:
400*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
401*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <8 x i16> %A, %B;
402*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
403*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
404*9880d681SAndroid Build Coastguard Worker}
405*9880d681SAndroid Build Coastguard Worker
406*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmhi2xi32(<2 x i32> %A, <2 x i32> %B) {
407*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi2xi32:
408*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
409*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <2 x i32> %A, %B;
410*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
411*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
412*9880d681SAndroid Build Coastguard Worker}
413*9880d681SAndroid Build Coastguard Worker
414*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmhi4xi32(<4 x i32> %A, <4 x i32> %B) {
415*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi4xi32:
416*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
417*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <4 x i32> %A, %B;
418*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
419*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
420*9880d681SAndroid Build Coastguard Worker}
421*9880d681SAndroid Build Coastguard Worker
422*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmhi2xi64(<2 x i64> %A, <2 x i64> %B) {
423*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhi2xi64:
424*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
425*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <2 x i64> %A, %B;
426*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
427*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
428*9880d681SAndroid Build Coastguard Worker}
429*9880d681SAndroid Build Coastguard Worker
430*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmlo8xi8(<8 x i8> %A, <8 x i8> %B) {
431*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo8xi8:
432*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
433*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
434*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.8b, v1.8b, v0.8b
435*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <8 x i8> %A, %B;
436*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
437*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
438*9880d681SAndroid Build Coastguard Worker}
439*9880d681SAndroid Build Coastguard Worker
440*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmlo16xi8(<16 x i8> %A, <16 x i8> %B) {
441*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo16xi8:
442*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
443*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
444*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.16b, v1.16b, v0.16b
445*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <16 x i8> %A, %B;
446*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
447*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
448*9880d681SAndroid Build Coastguard Worker}
449*9880d681SAndroid Build Coastguard Worker
450*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmlo4xi16(<4 x i16> %A, <4 x i16> %B) {
451*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo4xi16:
452*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
453*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
454*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.4h, v1.4h, v0.4h
455*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <4 x i16> %A, %B;
456*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
457*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
458*9880d681SAndroid Build Coastguard Worker}
459*9880d681SAndroid Build Coastguard Worker
460*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmlo8xi16(<8 x i16> %A, <8 x i16> %B) {
461*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo8xi16:
462*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
463*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
464*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.8h, v1.8h, v0.8h
465*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <8 x i16> %A, %B;
466*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
467*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
468*9880d681SAndroid Build Coastguard Worker}
469*9880d681SAndroid Build Coastguard Worker
470*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmlo2xi32(<2 x i32> %A, <2 x i32> %B) {
471*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo2xi32:
472*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
473*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
474*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.2s, v1.2s, v0.2s
475*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <2 x i32> %A, %B;
476*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
477*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
478*9880d681SAndroid Build Coastguard Worker}
479*9880d681SAndroid Build Coastguard Worker
480*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmlo4xi32(<4 x i32> %A, <4 x i32> %B) {
481*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo4xi32:
482*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
483*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
484*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.4s, v1.4s, v0.4s
485*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <4 x i32> %A, %B;
486*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
487*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
488*9880d681SAndroid Build Coastguard Worker}
489*9880d681SAndroid Build Coastguard Worker
490*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmlo2xi64(<2 x i64> %A, <2 x i64> %B) {
491*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlo2xi64:
492*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
493*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
494*9880d681SAndroid Build Coastguard Worker; CHECK: cmhi {{v[0-9]+}}.2d, v1.2d, v0.2d
495*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <2 x i64> %A, %B;
496*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
497*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
498*9880d681SAndroid Build Coastguard Worker}
499*9880d681SAndroid Build Coastguard Worker
500*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmhs8xi8(<8 x i8> %A, <8 x i8> %B) {
501*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs8xi8:
502*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
503*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <8 x i8> %A, %B;
504*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
505*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
506*9880d681SAndroid Build Coastguard Worker}
507*9880d681SAndroid Build Coastguard Worker
508*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmhs16xi8(<16 x i8> %A, <16 x i8> %B) {
509*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs16xi8:
510*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
511*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <16 x i8> %A, %B;
512*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
513*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
514*9880d681SAndroid Build Coastguard Worker}
515*9880d681SAndroid Build Coastguard Worker
516*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmhs4xi16(<4 x i16> %A, <4 x i16> %B) {
517*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs4xi16:
518*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
519*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <4 x i16> %A, %B;
520*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
521*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
522*9880d681SAndroid Build Coastguard Worker}
523*9880d681SAndroid Build Coastguard Worker
524*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmhs8xi16(<8 x i16> %A, <8 x i16> %B) {
525*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs8xi16:
526*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
527*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <8 x i16> %A, %B;
528*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
529*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
530*9880d681SAndroid Build Coastguard Worker}
531*9880d681SAndroid Build Coastguard Worker
532*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmhs2xi32(<2 x i32> %A, <2 x i32> %B) {
533*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs2xi32:
534*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
535*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <2 x i32> %A, %B;
536*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
537*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
538*9880d681SAndroid Build Coastguard Worker}
539*9880d681SAndroid Build Coastguard Worker
540*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmhs4xi32(<4 x i32> %A, <4 x i32> %B) {
541*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs4xi32:
542*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
543*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <4 x i32> %A, %B;
544*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
545*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
546*9880d681SAndroid Build Coastguard Worker}
547*9880d681SAndroid Build Coastguard Worker
548*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmhs2xi64(<2 x i64> %A, <2 x i64> %B) {
549*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhs2xi64:
550*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
551*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <2 x i64> %A, %B;
552*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
553*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
554*9880d681SAndroid Build Coastguard Worker}
555*9880d681SAndroid Build Coastguard Worker
556*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmls8xi8(<8 x i8> %A, <8 x i8> %B) {
557*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls8xi8:
558*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
559*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
560*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.8b, v1.8b, v0.8b
561*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <8 x i8> %A, %B;
562*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
563*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
564*9880d681SAndroid Build Coastguard Worker}
565*9880d681SAndroid Build Coastguard Worker
566*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmls16xi8(<16 x i8> %A, <16 x i8> %B) {
567*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls16xi8:
568*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
569*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
570*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.16b, v1.16b, v0.16b
571*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <16 x i8> %A, %B;
572*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
573*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
574*9880d681SAndroid Build Coastguard Worker}
575*9880d681SAndroid Build Coastguard Worker
576*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmls4xi16(<4 x i16> %A, <4 x i16> %B) {
577*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls4xi16:
578*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
579*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
580*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.4h, v1.4h, v0.4h
581*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <4 x i16> %A, %B;
582*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
583*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
584*9880d681SAndroid Build Coastguard Worker}
585*9880d681SAndroid Build Coastguard Worker
586*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmls8xi16(<8 x i16> %A, <8 x i16> %B) {
587*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls8xi16:
588*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
589*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
590*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.8h, v1.8h, v0.8h
591*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <8 x i16> %A, %B;
592*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
593*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
594*9880d681SAndroid Build Coastguard Worker}
595*9880d681SAndroid Build Coastguard Worker
596*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmls2xi32(<2 x i32> %A, <2 x i32> %B) {
597*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls2xi32:
598*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
599*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
600*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.2s, v1.2s, v0.2s
601*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <2 x i32> %A, %B;
602*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
603*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
604*9880d681SAndroid Build Coastguard Worker}
605*9880d681SAndroid Build Coastguard Worker
606*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmls4xi32(<4 x i32> %A, <4 x i32> %B) {
607*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls4xi32:
608*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
609*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
610*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.4s, v1.4s, v0.4s
611*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <4 x i32> %A, %B;
612*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
613*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
614*9880d681SAndroid Build Coastguard Worker}
615*9880d681SAndroid Build Coastguard Worker
616*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmls2xi64(<2 x i64> %A, <2 x i64> %B) {
617*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmls2xi64:
618*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
619*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
620*9880d681SAndroid Build Coastguard Worker; CHECK: cmhs {{v[0-9]+}}.2d, v1.2d, v0.2d
621*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <2 x i64> %A, %B;
622*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
623*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
624*9880d681SAndroid Build Coastguard Worker}
625*9880d681SAndroid Build Coastguard Worker
626*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmtst8xi8(<8 x i8> %A, <8 x i8> %B) {
627*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst8xi8:
628*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
629*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <8 x i8> %A, %B
630*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <8 x i8> %tmp3, zeroinitializer
631*9880d681SAndroid Build Coastguard Worker   %tmp5 = sext <8 x i1> %tmp4 to <8 x i8>
632*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp5
633*9880d681SAndroid Build Coastguard Worker}
634*9880d681SAndroid Build Coastguard Worker
635*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmtst16xi8(<16 x i8> %A, <16 x i8> %B) {
636*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst16xi8:
637*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
638*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <16 x i8> %A, %B
639*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <16 x i8> %tmp3, zeroinitializer
640*9880d681SAndroid Build Coastguard Worker   %tmp5 = sext <16 x i1> %tmp4 to <16 x i8>
641*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp5
642*9880d681SAndroid Build Coastguard Worker}
643*9880d681SAndroid Build Coastguard Worker
644*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmtst4xi16(<4 x i16> %A, <4 x i16> %B) {
645*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst4xi16:
646*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
647*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <4 x i16> %A, %B
648*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <4 x i16> %tmp3, zeroinitializer
649*9880d681SAndroid Build Coastguard Worker   %tmp5 = sext <4 x i1> %tmp4 to <4 x i16>
650*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp5
651*9880d681SAndroid Build Coastguard Worker}
652*9880d681SAndroid Build Coastguard Worker
653*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmtst8xi16(<8 x i16> %A, <8 x i16> %B) {
654*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst8xi16:
655*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
656*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <8 x i16> %A, %B
657*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <8 x i16> %tmp3, zeroinitializer
658*9880d681SAndroid Build Coastguard Worker   %tmp5 = sext <8 x i1> %tmp4 to <8 x i16>
659*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp5
660*9880d681SAndroid Build Coastguard Worker}
661*9880d681SAndroid Build Coastguard Worker
662*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmtst2xi32(<2 x i32> %A, <2 x i32> %B) {
663*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst2xi32:
664*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
665*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <2 x i32> %A, %B
666*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <2 x i32> %tmp3, zeroinitializer
667*9880d681SAndroid Build Coastguard Worker   %tmp5 = sext <2 x i1> %tmp4 to <2 x i32>
668*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp5
669*9880d681SAndroid Build Coastguard Worker}
670*9880d681SAndroid Build Coastguard Worker
671*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmtst4xi32(<4 x i32> %A, <4 x i32> %B) {
672*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst4xi32:
673*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
674*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <4 x i32> %A, %B
675*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <4 x i32> %tmp3, zeroinitializer
676*9880d681SAndroid Build Coastguard Worker   %tmp5 = sext <4 x i1> %tmp4 to <4 x i32>
677*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp5
678*9880d681SAndroid Build Coastguard Worker}
679*9880d681SAndroid Build Coastguard Worker
680*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmtst2xi64(<2 x i64> %A, <2 x i64> %B) {
681*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmtst2xi64:
682*9880d681SAndroid Build Coastguard Worker; CHECK: cmtst {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
683*9880d681SAndroid Build Coastguard Worker	%tmp3 = and <2 x i64> %A, %B
684*9880d681SAndroid Build Coastguard Worker	%tmp4 = icmp ne <2 x i64> %tmp3, zeroinitializer
685*9880d681SAndroid Build Coastguard Worker   %tmp5 = sext <2 x i1> %tmp4 to <2 x i64>
686*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp5
687*9880d681SAndroid Build Coastguard Worker}
688*9880d681SAndroid Build Coastguard Worker
689*9880d681SAndroid Build Coastguard Worker
690*9880d681SAndroid Build Coastguard Worker
691*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmeqz8xi8(<8 x i8> %A) {
692*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz8xi8:
693*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
694*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <8 x i8> %A, zeroinitializer;
695*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
696*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
697*9880d681SAndroid Build Coastguard Worker}
698*9880d681SAndroid Build Coastguard Worker
699*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmeqz16xi8(<16 x i8> %A) {
700*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz16xi8:
701*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
702*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <16 x i8> %A, zeroinitializer;
703*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
704*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
705*9880d681SAndroid Build Coastguard Worker}
706*9880d681SAndroid Build Coastguard Worker
707*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmeqz4xi16(<4 x i16> %A) {
708*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz4xi16:
709*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
710*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <4 x i16> %A, zeroinitializer;
711*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
712*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
713*9880d681SAndroid Build Coastguard Worker}
714*9880d681SAndroid Build Coastguard Worker
715*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmeqz8xi16(<8 x i16> %A) {
716*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz8xi16:
717*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
718*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <8 x i16> %A, zeroinitializer;
719*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
720*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
721*9880d681SAndroid Build Coastguard Worker}
722*9880d681SAndroid Build Coastguard Worker
723*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmeqz2xi32(<2 x i32> %A) {
724*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz2xi32:
725*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
726*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <2 x i32> %A, zeroinitializer;
727*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
728*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
729*9880d681SAndroid Build Coastguard Worker}
730*9880d681SAndroid Build Coastguard Worker
731*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmeqz4xi32(<4 x i32> %A) {
732*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz4xi32:
733*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
734*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <4 x i32> %A, zeroinitializer;
735*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
736*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
737*9880d681SAndroid Build Coastguard Worker}
738*9880d681SAndroid Build Coastguard Worker
739*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmeqz2xi64(<2 x i64> %A) {
740*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmeqz2xi64:
741*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
742*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp eq <2 x i64> %A, zeroinitializer;
743*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
744*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
745*9880d681SAndroid Build Coastguard Worker}
746*9880d681SAndroid Build Coastguard Worker
747*9880d681SAndroid Build Coastguard Worker
748*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmgez8xi8(<8 x i8> %A) {
749*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez8xi8:
750*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
751*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <8 x i8> %A, zeroinitializer;
752*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
753*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
754*9880d681SAndroid Build Coastguard Worker}
755*9880d681SAndroid Build Coastguard Worker
756*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmgez16xi8(<16 x i8> %A) {
757*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez16xi8:
758*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
759*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <16 x i8> %A, zeroinitializer;
760*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
761*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
762*9880d681SAndroid Build Coastguard Worker}
763*9880d681SAndroid Build Coastguard Worker
764*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmgez4xi16(<4 x i16> %A) {
765*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez4xi16:
766*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
767*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <4 x i16> %A, zeroinitializer;
768*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
769*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
770*9880d681SAndroid Build Coastguard Worker}
771*9880d681SAndroid Build Coastguard Worker
772*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmgez8xi16(<8 x i16> %A) {
773*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez8xi16:
774*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
775*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <8 x i16> %A, zeroinitializer;
776*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
777*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
778*9880d681SAndroid Build Coastguard Worker}
779*9880d681SAndroid Build Coastguard Worker
780*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmgez2xi32(<2 x i32> %A) {
781*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez2xi32:
782*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
783*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <2 x i32> %A, zeroinitializer;
784*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
785*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
786*9880d681SAndroid Build Coastguard Worker}
787*9880d681SAndroid Build Coastguard Worker
788*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmgez4xi32(<4 x i32> %A) {
789*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez4xi32:
790*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
791*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <4 x i32> %A, zeroinitializer;
792*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
793*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
794*9880d681SAndroid Build Coastguard Worker}
795*9880d681SAndroid Build Coastguard Worker
796*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmgez2xi64(<2 x i64> %A) {
797*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez2xi64:
798*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
799*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sge <2 x i64> %A, zeroinitializer;
800*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
801*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
802*9880d681SAndroid Build Coastguard Worker}
803*9880d681SAndroid Build Coastguard Worker
804*9880d681SAndroid Build Coastguard Worker
805*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmgez8xi8_alt(<8 x i8> %A) {
806*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez8xi8_alt:
807*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
808*9880d681SAndroid Build Coastguard Worker  %sign = ashr <8 x i8> %A, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
809*9880d681SAndroid Build Coastguard Worker  %not = xor <8 x i8> %sign, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
810*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %not
811*9880d681SAndroid Build Coastguard Worker}
812*9880d681SAndroid Build Coastguard Worker
813*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmgez16xi8_alt(<16 x i8> %A) {
814*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez16xi8_alt:
815*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
816*9880d681SAndroid Build Coastguard Worker  %sign = ashr <16 x i8> %A, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
817*9880d681SAndroid Build Coastguard Worker  %not = xor <16 x i8> %sign, <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>
818*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %not
819*9880d681SAndroid Build Coastguard Worker}
820*9880d681SAndroid Build Coastguard Worker
821*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmgez4xi16_alt(<4 x i16> %A) {
822*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez4xi16_alt:
823*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
824*9880d681SAndroid Build Coastguard Worker  %sign = ashr <4 x i16> %A, <i16 15, i16 15, i16 15, i16 15>
825*9880d681SAndroid Build Coastguard Worker  %not = xor <4 x i16> %sign, <i16 -1, i16 -1, i16 -1, i16 -1>
826*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %not
827*9880d681SAndroid Build Coastguard Worker}
828*9880d681SAndroid Build Coastguard Worker
829*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmgez8xi16_alt(<8 x i16> %A) {
830*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez8xi16_alt:
831*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
832*9880d681SAndroid Build Coastguard Worker  %sign = ashr <8 x i16> %A, <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15>
833*9880d681SAndroid Build Coastguard Worker  %not = xor <8 x i16> %sign, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
834*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %not
835*9880d681SAndroid Build Coastguard Worker}
836*9880d681SAndroid Build Coastguard Worker
837*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmgez2xi32_alt(<2 x i32> %A) {
838*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez2xi32_alt:
839*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
840*9880d681SAndroid Build Coastguard Worker  %sign = ashr <2 x i32> %A, <i32 31, i32 31>
841*9880d681SAndroid Build Coastguard Worker  %not = xor <2 x i32> %sign, <i32 -1, i32 -1>
842*9880d681SAndroid Build Coastguard Worker  ret <2 x i32> %not
843*9880d681SAndroid Build Coastguard Worker}
844*9880d681SAndroid Build Coastguard Worker
845*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmgez4xi32_alt(<4 x i32> %A) {
846*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez4xi32_alt:
847*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
848*9880d681SAndroid Build Coastguard Worker  %sign = ashr <4 x i32> %A, <i32 31, i32 31, i32 31, i32 31>
849*9880d681SAndroid Build Coastguard Worker  %not = xor <4 x i32> %sign, <i32 -1, i32 -1, i32 -1, i32 -1>
850*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %not
851*9880d681SAndroid Build Coastguard Worker}
852*9880d681SAndroid Build Coastguard Worker
853*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmgez2xi64_alt(<2 x i64> %A) {
854*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgez2xi64_alt:
855*9880d681SAndroid Build Coastguard Worker; CHECK: cmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
856*9880d681SAndroid Build Coastguard Worker  %sign = ashr <2 x i64> %A, <i64 63, i64 63>
857*9880d681SAndroid Build Coastguard Worker  %not = xor <2 x i64> %sign, <i64 -1, i64 -1>
858*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %not
859*9880d681SAndroid Build Coastguard Worker}
860*9880d681SAndroid Build Coastguard Worker
861*9880d681SAndroid Build Coastguard Worker
862*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmgtz8xi8(<8 x i8> %A) {
863*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz8xi8:
864*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
865*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <8 x i8> %A, zeroinitializer;
866*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
867*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
868*9880d681SAndroid Build Coastguard Worker}
869*9880d681SAndroid Build Coastguard Worker
870*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmgtz16xi8(<16 x i8> %A) {
871*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz16xi8:
872*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
873*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <16 x i8> %A, zeroinitializer;
874*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
875*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
876*9880d681SAndroid Build Coastguard Worker}
877*9880d681SAndroid Build Coastguard Worker
878*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmgtz4xi16(<4 x i16> %A) {
879*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz4xi16:
880*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
881*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <4 x i16> %A, zeroinitializer;
882*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
883*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
884*9880d681SAndroid Build Coastguard Worker}
885*9880d681SAndroid Build Coastguard Worker
886*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmgtz8xi16(<8 x i16> %A) {
887*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz8xi16:
888*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
889*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <8 x i16> %A, zeroinitializer;
890*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
891*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
892*9880d681SAndroid Build Coastguard Worker}
893*9880d681SAndroid Build Coastguard Worker
894*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmgtz2xi32(<2 x i32> %A) {
895*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz2xi32:
896*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
897*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <2 x i32> %A, zeroinitializer;
898*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
899*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
900*9880d681SAndroid Build Coastguard Worker}
901*9880d681SAndroid Build Coastguard Worker
902*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmgtz4xi32(<4 x i32> %A) {
903*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz4xi32:
904*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
905*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <4 x i32> %A, zeroinitializer;
906*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
907*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
908*9880d681SAndroid Build Coastguard Worker}
909*9880d681SAndroid Build Coastguard Worker
910*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmgtz2xi64(<2 x i64> %A) {
911*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmgtz2xi64:
912*9880d681SAndroid Build Coastguard Worker; CHECK: cmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
913*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sgt <2 x i64> %A, zeroinitializer;
914*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
915*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
916*9880d681SAndroid Build Coastguard Worker}
917*9880d681SAndroid Build Coastguard Worker
918*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmlez8xi8(<8 x i8> %A) {
919*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez8xi8:
920*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
921*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <8 x i8> %A, zeroinitializer;
922*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
923*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
924*9880d681SAndroid Build Coastguard Worker}
925*9880d681SAndroid Build Coastguard Worker
926*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmlez16xi8(<16 x i8> %A) {
927*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez16xi8:
928*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
929*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <16 x i8> %A, zeroinitializer;
930*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
931*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
932*9880d681SAndroid Build Coastguard Worker}
933*9880d681SAndroid Build Coastguard Worker
934*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmlez4xi16(<4 x i16> %A) {
935*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez4xi16:
936*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
937*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <4 x i16> %A, zeroinitializer;
938*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
939*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
940*9880d681SAndroid Build Coastguard Worker}
941*9880d681SAndroid Build Coastguard Worker
942*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmlez8xi16(<8 x i16> %A) {
943*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez8xi16:
944*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
945*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <8 x i16> %A, zeroinitializer;
946*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
947*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
948*9880d681SAndroid Build Coastguard Worker}
949*9880d681SAndroid Build Coastguard Worker
950*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmlez2xi32(<2 x i32> %A) {
951*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez2xi32:
952*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
953*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <2 x i32> %A, zeroinitializer;
954*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
955*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
956*9880d681SAndroid Build Coastguard Worker}
957*9880d681SAndroid Build Coastguard Worker
958*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmlez4xi32(<4 x i32> %A) {
959*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez4xi32:
960*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
961*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <4 x i32> %A, zeroinitializer;
962*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
963*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
964*9880d681SAndroid Build Coastguard Worker}
965*9880d681SAndroid Build Coastguard Worker
966*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmlez2xi64(<2 x i64> %A) {
967*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlez2xi64:
968*9880d681SAndroid Build Coastguard Worker; CHECK: cmle {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
969*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp sle <2 x i64> %A, zeroinitializer;
970*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
971*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
972*9880d681SAndroid Build Coastguard Worker}
973*9880d681SAndroid Build Coastguard Worker
974*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmltz8xi8(<8 x i8> %A) {
975*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz8xi8:
976*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
977*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <8 x i8> %A, zeroinitializer;
978*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
979*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
980*9880d681SAndroid Build Coastguard Worker}
981*9880d681SAndroid Build Coastguard Worker
982*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmltz16xi8(<16 x i8> %A) {
983*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz16xi8:
984*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
985*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <16 x i8> %A, zeroinitializer;
986*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
987*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
988*9880d681SAndroid Build Coastguard Worker}
989*9880d681SAndroid Build Coastguard Worker
990*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmltz4xi16(<4 x i16> %A) {
991*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz4xi16:
992*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
993*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <4 x i16> %A, zeroinitializer;
994*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
995*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
996*9880d681SAndroid Build Coastguard Worker}
997*9880d681SAndroid Build Coastguard Worker
998*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmltz8xi16(<8 x i16> %A) {
999*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz8xi16:
1000*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
1001*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <8 x i16> %A, zeroinitializer;
1002*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
1003*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
1004*9880d681SAndroid Build Coastguard Worker}
1005*9880d681SAndroid Build Coastguard Worker
1006*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmltz2xi32(<2 x i32> %A) {
1007*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz2xi32:
1008*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
1009*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <2 x i32> %A, zeroinitializer;
1010*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1011*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1012*9880d681SAndroid Build Coastguard Worker}
1013*9880d681SAndroid Build Coastguard Worker
1014*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmltz4xi32(<4 x i32> %A) {
1015*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz4xi32:
1016*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
1017*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <4 x i32> %A, zeroinitializer;
1018*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1019*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1020*9880d681SAndroid Build Coastguard Worker}
1021*9880d681SAndroid Build Coastguard Worker
1022*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmltz2xi64(<2 x i64> %A) {
1023*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmltz2xi64:
1024*9880d681SAndroid Build Coastguard Worker; CHECK: cmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
1025*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp slt <2 x i64> %A, zeroinitializer;
1026*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1027*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1028*9880d681SAndroid Build Coastguard Worker}
1029*9880d681SAndroid Build Coastguard Worker
1030*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmneqz8xi8(<8 x i8> %A) {
1031*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz8xi8:
1032*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
1033*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1034*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <8 x i8> %A, zeroinitializer;
1035*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
1036*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
1037*9880d681SAndroid Build Coastguard Worker}
1038*9880d681SAndroid Build Coastguard Worker
1039*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmneqz16xi8(<16 x i8> %A) {
1040*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz16xi8:
1041*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
1042*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1043*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <16 x i8> %A, zeroinitializer;
1044*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
1045*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
1046*9880d681SAndroid Build Coastguard Worker}
1047*9880d681SAndroid Build Coastguard Worker
1048*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmneqz4xi16(<4 x i16> %A) {
1049*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz4xi16:
1050*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
1051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1052*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <4 x i16> %A, zeroinitializer;
1053*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
1054*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
1055*9880d681SAndroid Build Coastguard Worker}
1056*9880d681SAndroid Build Coastguard Worker
1057*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmneqz8xi16(<8 x i16> %A) {
1058*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz8xi16:
1059*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
1060*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1061*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <8 x i16> %A, zeroinitializer;
1062*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
1063*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
1064*9880d681SAndroid Build Coastguard Worker}
1065*9880d681SAndroid Build Coastguard Worker
1066*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmneqz2xi32(<2 x i32> %A) {
1067*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz2xi32:
1068*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
1069*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1070*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <2 x i32> %A, zeroinitializer;
1071*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1072*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1073*9880d681SAndroid Build Coastguard Worker}
1074*9880d681SAndroid Build Coastguard Worker
1075*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmneqz4xi32(<4 x i32> %A) {
1076*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz4xi32:
1077*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
1078*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1079*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <4 x i32> %A, zeroinitializer;
1080*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1081*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1082*9880d681SAndroid Build Coastguard Worker}
1083*9880d681SAndroid Build Coastguard Worker
1084*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmneqz2xi64(<2 x i64> %A) {
1085*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmneqz2xi64:
1086*9880d681SAndroid Build Coastguard Worker; CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
1087*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1088*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ne <2 x i64> %A, zeroinitializer;
1089*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1090*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1091*9880d681SAndroid Build Coastguard Worker}
1092*9880d681SAndroid Build Coastguard Worker
1093*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmhsz8xi8(<8 x i8> %A) {
1094*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz8xi8:
1095*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.8b|d[0-9]+}}, #{{0x0|0}}
1096*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1097*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <8 x i8> %A, zeroinitializer;
1098*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
1099*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
1100*9880d681SAndroid Build Coastguard Worker}
1101*9880d681SAndroid Build Coastguard Worker
1102*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmhsz16xi8(<16 x i8> %A) {
1103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz16xi8:
1104*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}}
1105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1106*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <16 x i8> %A, zeroinitializer;
1107*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
1108*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
1109*9880d681SAndroid Build Coastguard Worker}
1110*9880d681SAndroid Build Coastguard Worker
1111*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmhsz4xi16(<4 x i16> %A) {
1112*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz4xi16:
1113*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.8b|d[0-9]+}}, #{{0x0|0}}
1114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1115*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <4 x i16> %A, zeroinitializer;
1116*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
1117*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
1118*9880d681SAndroid Build Coastguard Worker}
1119*9880d681SAndroid Build Coastguard Worker
1120*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmhsz8xi16(<8 x i16> %A) {
1121*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz8xi16:
1122*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}}
1123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1124*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <8 x i16> %A, zeroinitializer;
1125*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
1126*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
1127*9880d681SAndroid Build Coastguard Worker}
1128*9880d681SAndroid Build Coastguard Worker
1129*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmhsz2xi32(<2 x i32> %A) {
1130*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz2xi32:
1131*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.8b|d[0-9]+}}, #{{0x0|0}}
1132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1133*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <2 x i32> %A, zeroinitializer;
1134*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1135*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1136*9880d681SAndroid Build Coastguard Worker}
1137*9880d681SAndroid Build Coastguard Worker
1138*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmhsz4xi32(<4 x i32> %A) {
1139*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz4xi32:
1140*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}}
1141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1142*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <4 x i32> %A, zeroinitializer;
1143*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1144*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1145*9880d681SAndroid Build Coastguard Worker}
1146*9880d681SAndroid Build Coastguard Worker
1147*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmhsz2xi64(<2 x i64> %A) {
1148*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhsz2xi64:
1149*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}}
1150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1151*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp uge <2 x i64> %A, zeroinitializer;
1152*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1153*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1154*9880d681SAndroid Build Coastguard Worker}
1155*9880d681SAndroid Build Coastguard Worker
1156*9880d681SAndroid Build Coastguard Worker
1157*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmhiz8xi8(<8 x i8> %A) {
1158*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz8xi8:
1159*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.8b|d[0-9]+}}, #{{0x0|0}}
1160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1161*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <8 x i8> %A, zeroinitializer;
1162*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
1163*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
1164*9880d681SAndroid Build Coastguard Worker}
1165*9880d681SAndroid Build Coastguard Worker
1166*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmhiz16xi8(<16 x i8> %A) {
1167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz16xi8:
1168*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}}
1169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1170*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <16 x i8> %A, zeroinitializer;
1171*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
1172*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
1173*9880d681SAndroid Build Coastguard Worker}
1174*9880d681SAndroid Build Coastguard Worker
1175*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmhiz4xi16(<4 x i16> %A) {
1176*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz4xi16:
1177*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.8b|d[0-9]+}}, #{{0x0|0}}
1178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1179*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <4 x i16> %A, zeroinitializer;
1180*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
1181*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
1182*9880d681SAndroid Build Coastguard Worker}
1183*9880d681SAndroid Build Coastguard Worker
1184*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmhiz8xi16(<8 x i16> %A) {
1185*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz8xi16:
1186*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}}
1187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1188*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <8 x i16> %A, zeroinitializer;
1189*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
1190*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
1191*9880d681SAndroid Build Coastguard Worker}
1192*9880d681SAndroid Build Coastguard Worker
1193*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmhiz2xi32(<2 x i32> %A) {
1194*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz2xi32:
1195*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.8b|d[0-9]+}}, #{{0x0|0}}
1196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1197*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <2 x i32> %A, zeroinitializer;
1198*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1199*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1200*9880d681SAndroid Build Coastguard Worker}
1201*9880d681SAndroid Build Coastguard Worker
1202*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmhiz4xi32(<4 x i32> %A) {
1203*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz4xi32:
1204*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}}
1205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1206*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <4 x i32> %A, zeroinitializer;
1207*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1208*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1209*9880d681SAndroid Build Coastguard Worker}
1210*9880d681SAndroid Build Coastguard Worker
1211*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmhiz2xi64(<2 x i64> %A) {
1212*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmhiz2xi64:
1213*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v[0-9]+.(16b|2d)}}, #{{0x0|0}}
1214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1215*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ugt <2 x i64> %A, zeroinitializer;
1216*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1217*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1218*9880d681SAndroid Build Coastguard Worker}
1219*9880d681SAndroid Build Coastguard Worker
1220*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmlsz8xi8(<8 x i8> %A) {
1221*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz8xi8:
1222*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1223*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
1224*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.8b|d1}}, #{{0x0|0}}
1225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.8b, v1.8b, v0.8b
1226*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <8 x i8> %A, zeroinitializer;
1227*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
1228*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
1229*9880d681SAndroid Build Coastguard Worker}
1230*9880d681SAndroid Build Coastguard Worker
1231*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmlsz16xi8(<16 x i8> %A) {
1232*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz16xi8:
1233*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1234*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
1235*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}}
1236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.16b, v1.16b, v0.16b
1237*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <16 x i8> %A, zeroinitializer;
1238*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
1239*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
1240*9880d681SAndroid Build Coastguard Worker}
1241*9880d681SAndroid Build Coastguard Worker
1242*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmlsz4xi16(<4 x i16> %A) {
1243*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz4xi16:
1244*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1245*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
1246*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.8b|d1}}, #{{0x0|0}}
1247*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.4h, v1.4h, v0.4h
1248*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <4 x i16> %A, zeroinitializer;
1249*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
1250*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
1251*9880d681SAndroid Build Coastguard Worker}
1252*9880d681SAndroid Build Coastguard Worker
1253*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmlsz8xi16(<8 x i16> %A) {
1254*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz8xi16:
1255*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1256*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
1257*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}}
1258*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.8h, v1.8h, v0.8h
1259*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <8 x i16> %A, zeroinitializer;
1260*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
1261*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
1262*9880d681SAndroid Build Coastguard Worker}
1263*9880d681SAndroid Build Coastguard Worker
1264*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmlsz2xi32(<2 x i32> %A) {
1265*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz2xi32:
1266*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1267*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
1268*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.8b|d1}}, #{{0x0|0}}
1269*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.2s, v1.2s, v0.2s
1270*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <2 x i32> %A, zeroinitializer;
1271*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1272*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1273*9880d681SAndroid Build Coastguard Worker}
1274*9880d681SAndroid Build Coastguard Worker
1275*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmlsz4xi32(<4 x i32> %A) {
1276*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz4xi32:
1277*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1278*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
1279*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}}
1280*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.4s, v1.4s, v0.4s
1281*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <4 x i32> %A, zeroinitializer;
1282*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1283*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1284*9880d681SAndroid Build Coastguard Worker}
1285*9880d681SAndroid Build Coastguard Worker
1286*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmlsz2xi64(<2 x i64> %A) {
1287*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmlsz2xi64:
1288*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1289*9880d681SAndroid Build Coastguard Worker; LS implemented as HS, so check reversed operands.
1290*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}}
1291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhs {{v[0-9]+}}.2d, v1.2d, v0.2d
1292*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ule <2 x i64> %A, zeroinitializer;
1293*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1294*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1295*9880d681SAndroid Build Coastguard Worker}
1296*9880d681SAndroid Build Coastguard Worker
1297*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @cmloz8xi8(<8 x i8> %A) {
1298*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz8xi8:
1299*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1300*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
1301*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.8b|d1}}, #{{0x0|0}}
1302*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.8b, v1.8b, {{v[0-9]+}}.8b
1303*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <8 x i8> %A, zeroinitializer;
1304*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i8>
1305*9880d681SAndroid Build Coastguard Worker	ret <8 x i8> %tmp4
1306*9880d681SAndroid Build Coastguard Worker}
1307*9880d681SAndroid Build Coastguard Worker
1308*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @cmloz16xi8(<16 x i8> %A) {
1309*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz16xi8:
1310*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1311*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
1312*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}}
1313*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.16b, v1.16b, v0.16b
1314*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <16 x i8> %A, zeroinitializer;
1315*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <16 x i1> %tmp3 to <16 x i8>
1316*9880d681SAndroid Build Coastguard Worker	ret <16 x i8> %tmp4
1317*9880d681SAndroid Build Coastguard Worker}
1318*9880d681SAndroid Build Coastguard Worker
1319*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @cmloz4xi16(<4 x i16> %A) {
1320*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz4xi16:
1321*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1322*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
1323*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.8b|d1}}, #{{0x0|0}}
1324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.4h, v1.4h, v0.4h
1325*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <4 x i16> %A, zeroinitializer;
1326*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i16>
1327*9880d681SAndroid Build Coastguard Worker	ret <4 x i16> %tmp4
1328*9880d681SAndroid Build Coastguard Worker}
1329*9880d681SAndroid Build Coastguard Worker
1330*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @cmloz8xi16(<8 x i16> %A) {
1331*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz8xi16:
1332*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1333*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
1334*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}}
1335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.8h, v1.8h, v0.8h
1336*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <8 x i16> %A, zeroinitializer;
1337*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <8 x i1> %tmp3 to <8 x i16>
1338*9880d681SAndroid Build Coastguard Worker	ret <8 x i16> %tmp4
1339*9880d681SAndroid Build Coastguard Worker}
1340*9880d681SAndroid Build Coastguard Worker
1341*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @cmloz2xi32(<2 x i32> %A) {
1342*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz2xi32:
1343*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1344*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
1345*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.8b|d1}}, #{{0x0|0}}
1346*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.2s, v1.2s, v0.2s
1347*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <2 x i32> %A, zeroinitializer;
1348*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1349*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1350*9880d681SAndroid Build Coastguard Worker}
1351*9880d681SAndroid Build Coastguard Worker
1352*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @cmloz4xi32(<4 x i32> %A) {
1353*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz4xi32:
1354*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1355*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
1356*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}}
1357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.4s, v1.4s, v0.4s
1358*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <4 x i32> %A, zeroinitializer;
1359*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1360*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1361*9880d681SAndroid Build Coastguard Worker}
1362*9880d681SAndroid Build Coastguard Worker
1363*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @cmloz2xi64(<2 x i64> %A) {
1364*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cmloz2xi64:
1365*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1366*9880d681SAndroid Build Coastguard Worker; LO implemented as HI, so check reversed operands.
1367*9880d681SAndroid Build Coastguard Worker; CHECK: movi {{v1.16b|v1.2d}}, #{{0x0|0}}
1368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: cmhi {{v[0-9]+}}.2d, v1.2d, v0.2d
1369*9880d681SAndroid Build Coastguard Worker	%tmp3 = icmp ult <2 x i64> %A, zeroinitializer;
1370*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1371*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1372*9880d681SAndroid Build Coastguard Worker}
1373*9880d681SAndroid Build Coastguard Worker
1374*9880d681SAndroid Build Coastguard Worker
1375*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmoeq2xfloat(<2 x float> %A, <2 x float> %B) {
1376*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoeq2xfloat:
1377*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1378*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp oeq <2 x float> %A, %B
1379*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1380*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1381*9880d681SAndroid Build Coastguard Worker}
1382*9880d681SAndroid Build Coastguard Worker
1383*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmoeq4xfloat(<4 x float> %A, <4 x float> %B) {
1384*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoeq4xfloat:
1385*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1386*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp oeq <4 x float> %A, %B
1387*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1388*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1389*9880d681SAndroid Build Coastguard Worker}
1390*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmoeq2xdouble(<2 x double> %A, <2 x double> %B) {
1391*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoeq2xdouble:
1392*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1393*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp oeq <2 x double> %A, %B
1394*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1395*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1396*9880d681SAndroid Build Coastguard Worker}
1397*9880d681SAndroid Build Coastguard Worker
1398*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmoge2xfloat(<2 x float> %A, <2 x float> %B) {
1399*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoge2xfloat:
1400*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1401*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp oge <2 x float> %A, %B
1402*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1403*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1404*9880d681SAndroid Build Coastguard Worker}
1405*9880d681SAndroid Build Coastguard Worker
1406*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmoge4xfloat(<4 x float> %A, <4 x float> %B) {
1407*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoge4xfloat:
1408*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1409*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp oge <4 x float> %A, %B
1410*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1411*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1412*9880d681SAndroid Build Coastguard Worker}
1413*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmoge2xdouble(<2 x double> %A, <2 x double> %B) {
1414*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoge2xdouble:
1415*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1416*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp oge <2 x double> %A, %B
1417*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1418*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1419*9880d681SAndroid Build Coastguard Worker}
1420*9880d681SAndroid Build Coastguard Worker
1421*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmogt2xfloat(<2 x float> %A, <2 x float> %B) {
1422*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogt2xfloat:
1423*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1424*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ogt <2 x float> %A, %B
1425*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1426*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1427*9880d681SAndroid Build Coastguard Worker}
1428*9880d681SAndroid Build Coastguard Worker
1429*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmogt4xfloat(<4 x float> %A, <4 x float> %B) {
1430*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogt4xfloat:
1431*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1432*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ogt <4 x float> %A, %B
1433*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1434*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1435*9880d681SAndroid Build Coastguard Worker}
1436*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmogt2xdouble(<2 x double> %A, <2 x double> %B) {
1437*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogt2xdouble:
1438*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1439*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ogt <2 x double> %A, %B
1440*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1441*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1442*9880d681SAndroid Build Coastguard Worker}
1443*9880d681SAndroid Build Coastguard Worker
1444*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmole2xfloat(<2 x float> %A, <2 x float> %B) {
1445*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmole2xfloat:
1446*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1447*9880d681SAndroid Build Coastguard Worker; OLE implemented as OGE, so check reversed operands.
1448*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, v1.2s, v0.2s
1449*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ole <2 x float> %A, %B
1450*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1451*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1452*9880d681SAndroid Build Coastguard Worker}
1453*9880d681SAndroid Build Coastguard Worker
1454*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmole4xfloat(<4 x float> %A, <4 x float> %B) {
1455*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmole4xfloat:
1456*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1457*9880d681SAndroid Build Coastguard Worker; OLE implemented as OGE, so check reversed operands.
1458*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, v1.4s, v0.4s
1459*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ole <4 x float> %A, %B
1460*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1461*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1462*9880d681SAndroid Build Coastguard Worker}
1463*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmole2xdouble(<2 x double> %A, <2 x double> %B) {
1464*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmole2xdouble:
1465*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1466*9880d681SAndroid Build Coastguard Worker; OLE implemented as OGE, so check reversed operands.
1467*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, v1.2d, v0.2d
1468*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ole <2 x double> %A, %B
1469*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1470*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1471*9880d681SAndroid Build Coastguard Worker}
1472*9880d681SAndroid Build Coastguard Worker
1473*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmolt2xfloat(<2 x float> %A, <2 x float> %B) {
1474*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmolt2xfloat:
1475*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1476*9880d681SAndroid Build Coastguard Worker; OLE implemented as OGE, so check reversed operands.
1477*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s
1478*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp olt <2 x float> %A, %B
1479*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1480*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1481*9880d681SAndroid Build Coastguard Worker}
1482*9880d681SAndroid Build Coastguard Worker
1483*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmolt4xfloat(<4 x float> %A, <4 x float> %B) {
1484*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmolt4xfloat:
1485*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1486*9880d681SAndroid Build Coastguard Worker; OLE implemented as OGE, so check reversed operands.
1487*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s
1488*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp olt <4 x float> %A, %B
1489*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1490*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1491*9880d681SAndroid Build Coastguard Worker}
1492*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmolt2xdouble(<2 x double> %A, <2 x double> %B) {
1493*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmolt2xdouble:
1494*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1495*9880d681SAndroid Build Coastguard Worker; OLE implemented as OGE, so check reversed operands.
1496*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d
1497*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp olt <2 x double> %A, %B
1498*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1499*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1500*9880d681SAndroid Build Coastguard Worker}
1501*9880d681SAndroid Build Coastguard Worker
1502*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmone2xfloat(<2 x float> %A, <2 x float> %B) {
1503*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmone2xfloat:
1504*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1505*9880d681SAndroid Build Coastguard Worker; ONE = OGT | OLT, OLT implemented as OGT so check reversed operands
1506*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, v0.2s, v1.2s
1507*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s
1508*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1509*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp one <2 x float> %A, %B
1510*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1511*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1512*9880d681SAndroid Build Coastguard Worker}
1513*9880d681SAndroid Build Coastguard Worker
1514*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmone4xfloat(<4 x float> %A, <4 x float> %B) {
1515*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmone4xfloat:
1516*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1517*9880d681SAndroid Build Coastguard Worker; ONE = OGT | OLT, OLT implemented as OGT so check reversed operands
1518*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, v0.4s, v1.4s
1519*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s
1520*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1521*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp one <4 x float> %A, %B
1522*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1523*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1524*9880d681SAndroid Build Coastguard Worker}
1525*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmone2xdouble(<2 x double> %A, <2 x double> %B) {
1526*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmone2xdouble:
1527*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1528*9880d681SAndroid Build Coastguard Worker; ONE = OGT | OLT, OLT implemented as OGT so check reversed operands
1529*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, v0.2d, v1.2d
1530*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d
1531*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1532*9880d681SAndroid Build Coastguard Worker; todo check reversed operands
1533*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp one <2 x double> %A, %B
1534*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1535*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1536*9880d681SAndroid Build Coastguard Worker}
1537*9880d681SAndroid Build Coastguard Worker
1538*9880d681SAndroid Build Coastguard Worker
1539*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmord2xfloat(<2 x float> %A, <2 x float> %B) {
1540*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmord2xfloat:
1541*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1542*9880d681SAndroid Build Coastguard Worker; ORD = OGE | OLT, OLT implemented as OGT, so check reversed operands.
1543*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, v0.2s, v1.2s
1544*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s
1545*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1546*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ord <2 x float> %A, %B
1547*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1548*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1549*9880d681SAndroid Build Coastguard Worker}
1550*9880d681SAndroid Build Coastguard Worker
1551*9880d681SAndroid Build Coastguard Worker
1552*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmord4xfloat(<4 x float> %A, <4 x float> %B) {
1553*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmord4xfloat:
1554*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1555*9880d681SAndroid Build Coastguard Worker; ORD = OGE | OLT, OLT implemented as OGT, so check reversed operands.
1556*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, v0.4s, v1.4s
1557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s
1558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1559*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ord <4 x float> %A, %B
1560*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1561*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1562*9880d681SAndroid Build Coastguard Worker}
1563*9880d681SAndroid Build Coastguard Worker
1564*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmord2xdouble(<2 x double> %A, <2 x double> %B) {
1565*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmord2xdouble:
1566*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1567*9880d681SAndroid Build Coastguard Worker; ORD = OGE | OLT, OLT implemented as OGT, so check reversed operands.
1568*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, v0.2d, v1.2d
1569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d
1570*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1571*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ord <2 x double> %A, %B
1572*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1573*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1574*9880d681SAndroid Build Coastguard Worker}
1575*9880d681SAndroid Build Coastguard Worker
1576*9880d681SAndroid Build Coastguard Worker
1577*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmuno2xfloat(<2 x float> %A, <2 x float> %B) {
1578*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmuno2xfloat:
1579*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1580*9880d681SAndroid Build Coastguard Worker; UNO = !(OGE | OLT), OLT implemented as OGT, so check reversed operands.
1581*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, v0.2s, v1.2s
1582*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s
1583*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1584*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1585*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp uno <2 x float> %A, %B
1586*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1587*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1588*9880d681SAndroid Build Coastguard Worker}
1589*9880d681SAndroid Build Coastguard Worker
1590*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmuno4xfloat(<4 x float> %A, <4 x float> %B) {
1591*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmuno4xfloat:
1592*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1593*9880d681SAndroid Build Coastguard Worker; UNO = !(OGE | OLT), OLT implemented as OGT, so check reversed operands.
1594*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, v0.4s, v1.4s
1595*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s
1596*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1597*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1598*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp uno <4 x float> %A, %B
1599*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1600*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1601*9880d681SAndroid Build Coastguard Worker}
1602*9880d681SAndroid Build Coastguard Worker
1603*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmuno2xdouble(<2 x double> %A, <2 x double> %B) {
1604*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmuno2xdouble:
1605*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1606*9880d681SAndroid Build Coastguard Worker; UNO = !(OGE | OLT), OLT implemented as OGT, so check reversed operands.
1607*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, v0.2d, v1.2d
1608*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d
1609*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1610*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1611*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp uno <2 x double> %A, %B
1612*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1613*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1614*9880d681SAndroid Build Coastguard Worker}
1615*9880d681SAndroid Build Coastguard Worker
1616*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmueq2xfloat(<2 x float> %A, <2 x float> %B) {
1617*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmueq2xfloat:
1618*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1619*9880d681SAndroid Build Coastguard Worker; UEQ = !ONE = !(OGT | OLT), OLT implemented as OGT so check reversed operands
1620*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, v0.2s, v1.2s
1621*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s
1622*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1623*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1624*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ueq <2 x float> %A, %B
1625*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1626*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1627*9880d681SAndroid Build Coastguard Worker}
1628*9880d681SAndroid Build Coastguard Worker
1629*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmueq4xfloat(<4 x float> %A, <4 x float> %B) {
1630*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmueq4xfloat:
1631*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1632*9880d681SAndroid Build Coastguard Worker; UEQ = !ONE = !(OGT | OLT), OLT implemented as OGT so check reversed operands
1633*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, v0.4s, v1.4s
1634*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s
1635*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1636*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1637*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ueq <4 x float> %A, %B
1638*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1639*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1640*9880d681SAndroid Build Coastguard Worker}
1641*9880d681SAndroid Build Coastguard Worker
1642*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmueq2xdouble(<2 x double> %A, <2 x double> %B) {
1643*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmueq2xdouble:
1644*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1645*9880d681SAndroid Build Coastguard Worker; UEQ = !ONE = !(OGT | OLT), OLT implemented as OGT so check reversed operands
1646*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, v0.2d, v1.2d
1647*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d
1648*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1649*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1650*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ueq <2 x double> %A, %B
1651*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1652*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1653*9880d681SAndroid Build Coastguard Worker}
1654*9880d681SAndroid Build Coastguard Worker
1655*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmuge2xfloat(<2 x float> %A, <2 x float> %B) {
1656*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmuge2xfloat:
1657*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1658*9880d681SAndroid Build Coastguard Worker; UGE = ULE with swapped operands, ULE implemented as !OGT.
1659*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s
1660*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1661*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp uge <2 x float> %A, %B
1662*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1663*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1664*9880d681SAndroid Build Coastguard Worker}
1665*9880d681SAndroid Build Coastguard Worker
1666*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmuge4xfloat(<4 x float> %A, <4 x float> %B) {
1667*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmuge4xfloat:
1668*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1669*9880d681SAndroid Build Coastguard Worker; UGE = ULE with swapped operands, ULE implemented as !OGT.
1670*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s
1671*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1672*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp uge <4 x float> %A, %B
1673*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1674*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1675*9880d681SAndroid Build Coastguard Worker}
1676*9880d681SAndroid Build Coastguard Worker
1677*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmuge2xdouble(<2 x double> %A, <2 x double> %B) {
1678*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmuge2xdouble:
1679*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1680*9880d681SAndroid Build Coastguard Worker; UGE = ULE with swapped operands, ULE implemented as !OGT.
1681*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d
1682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1683*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp uge <2 x double> %A, %B
1684*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1685*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1686*9880d681SAndroid Build Coastguard Worker}
1687*9880d681SAndroid Build Coastguard Worker
1688*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmugt2xfloat(<2 x float> %A, <2 x float> %B) {
1689*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugt2xfloat:
1690*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1691*9880d681SAndroid Build Coastguard Worker; UGT = ULT with swapped operands, ULT implemented as !OGE.
1692*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, v1.2s, v0.2s
1693*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1694*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ugt <2 x float> %A, %B
1695*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1696*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1697*9880d681SAndroid Build Coastguard Worker}
1698*9880d681SAndroid Build Coastguard Worker
1699*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmugt4xfloat(<4 x float> %A, <4 x float> %B) {
1700*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugt4xfloat:
1701*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1702*9880d681SAndroid Build Coastguard Worker; UGT = ULT with swapped operands, ULT implemented as !OGE.
1703*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, v1.4s, v0.4s
1704*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1705*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ugt <4 x float> %A, %B
1706*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1707*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1708*9880d681SAndroid Build Coastguard Worker}
1709*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmugt2xdouble(<2 x double> %A, <2 x double> %B) {
1710*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugt2xdouble:
1711*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, v1.2d, v0.2d
1712*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1713*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ugt <2 x double> %A, %B
1714*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1715*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1716*9880d681SAndroid Build Coastguard Worker}
1717*9880d681SAndroid Build Coastguard Worker
1718*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmule2xfloat(<2 x float> %A, <2 x float> %B) {
1719*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmule2xfloat:
1720*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1721*9880d681SAndroid Build Coastguard Worker; ULE implemented as !OGT.
1722*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, v0.2s, v1.2s
1723*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1724*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ule <2 x float> %A, %B
1725*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1726*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1727*9880d681SAndroid Build Coastguard Worker}
1728*9880d681SAndroid Build Coastguard Worker
1729*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmule4xfloat(<4 x float> %A, <4 x float> %B) {
1730*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmule4xfloat:
1731*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1732*9880d681SAndroid Build Coastguard Worker; ULE implemented as !OGT.
1733*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, v0.4s, v1.4s
1734*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1735*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ule <4 x float> %A, %B
1736*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1737*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1738*9880d681SAndroid Build Coastguard Worker}
1739*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmule2xdouble(<2 x double> %A, <2 x double> %B) {
1740*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmule2xdouble:
1741*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1742*9880d681SAndroid Build Coastguard Worker; ULE implemented as !OGT.
1743*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, v0.2d, v1.2d
1744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1745*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ule <2 x double> %A, %B
1746*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1747*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1748*9880d681SAndroid Build Coastguard Worker}
1749*9880d681SAndroid Build Coastguard Worker
1750*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmult2xfloat(<2 x float> %A, <2 x float> %B) {
1751*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmult2xfloat:
1752*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1753*9880d681SAndroid Build Coastguard Worker; ULT implemented as !OGE.
1754*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, v0.2s, v1.2s
1755*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1756*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ult <2 x float> %A, %B
1757*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1758*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1759*9880d681SAndroid Build Coastguard Worker}
1760*9880d681SAndroid Build Coastguard Worker
1761*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmult4xfloat(<4 x float> %A, <4 x float> %B) {
1762*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmult4xfloat:
1763*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1764*9880d681SAndroid Build Coastguard Worker; ULT implemented as !OGE.
1765*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, v0.4s, v1.4s
1766*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1767*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ult <4 x float> %A, %B
1768*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1769*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1770*9880d681SAndroid Build Coastguard Worker}
1771*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmult2xdouble(<2 x double> %A, <2 x double> %B) {
1772*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmult2xdouble:
1773*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1774*9880d681SAndroid Build Coastguard Worker; ULT implemented as !OGE.
1775*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, v0.2d, v1.2d
1776*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1777*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ult <2 x double> %A, %B
1778*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1779*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1780*9880d681SAndroid Build Coastguard Worker}
1781*9880d681SAndroid Build Coastguard Worker
1782*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmune2xfloat(<2 x float> %A, <2 x float> %B) {
1783*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmune2xfloat:
1784*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1785*9880d681SAndroid Build Coastguard Worker; UNE = !OEQ.
1786*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2s, v0.2s, v1.2s
1787*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1788*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp une <2 x float> %A, %B
1789*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1790*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1791*9880d681SAndroid Build Coastguard Worker}
1792*9880d681SAndroid Build Coastguard Worker
1793*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmune4xfloat(<4 x float> %A, <4 x float> %B) {
1794*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmune4xfloat:
1795*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1796*9880d681SAndroid Build Coastguard Worker; UNE = !OEQ.
1797*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.4s, v0.4s, v1.4s
1798*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1799*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp une <4 x float> %A, %B
1800*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1801*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1802*9880d681SAndroid Build Coastguard Worker}
1803*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmune2xdouble(<2 x double> %A, <2 x double> %B) {
1804*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmune2xdouble:
1805*9880d681SAndroid Build Coastguard Worker; Using registers other than v0, v1 are possible, but would be odd.
1806*9880d681SAndroid Build Coastguard Worker; UNE = !OEQ.
1807*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2d, v0.2d, v1.2d
1808*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1809*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp une <2 x double> %A, %B
1810*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1811*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1812*9880d681SAndroid Build Coastguard Worker}
1813*9880d681SAndroid Build Coastguard Worker
1814*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmoeqz2xfloat(<2 x float> %A) {
1815*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoeqz2xfloat:
1816*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
1817*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp oeq <2 x float> %A, zeroinitializer
1818*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1819*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1820*9880d681SAndroid Build Coastguard Worker}
1821*9880d681SAndroid Build Coastguard Worker
1822*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmoeqz4xfloat(<4 x float> %A) {
1823*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoeqz4xfloat:
1824*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
1825*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp oeq <4 x float> %A, zeroinitializer
1826*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1827*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1828*9880d681SAndroid Build Coastguard Worker}
1829*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmoeqz2xdouble(<2 x double> %A) {
1830*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoeqz2xdouble:
1831*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
1832*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp oeq <2 x double> %A, zeroinitializer
1833*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1834*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1835*9880d681SAndroid Build Coastguard Worker}
1836*9880d681SAndroid Build Coastguard Worker
1837*9880d681SAndroid Build Coastguard Worker
1838*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmogez2xfloat(<2 x float> %A) {
1839*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogez2xfloat:
1840*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
1841*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp oge <2 x float> %A, zeroinitializer
1842*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1843*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1844*9880d681SAndroid Build Coastguard Worker}
1845*9880d681SAndroid Build Coastguard Worker
1846*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmogez4xfloat(<4 x float> %A) {
1847*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogez4xfloat:
1848*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
1849*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp oge <4 x float> %A, zeroinitializer
1850*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1851*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1852*9880d681SAndroid Build Coastguard Worker}
1853*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmogez2xdouble(<2 x double> %A) {
1854*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogez2xdouble:
1855*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
1856*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp oge <2 x double> %A, zeroinitializer
1857*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1858*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1859*9880d681SAndroid Build Coastguard Worker}
1860*9880d681SAndroid Build Coastguard Worker
1861*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmogtz2xfloat(<2 x float> %A) {
1862*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogtz2xfloat:
1863*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
1864*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ogt <2 x float> %A, zeroinitializer
1865*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1866*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1867*9880d681SAndroid Build Coastguard Worker}
1868*9880d681SAndroid Build Coastguard Worker
1869*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmogtz4xfloat(<4 x float> %A) {
1870*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogtz4xfloat:
1871*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
1872*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ogt <4 x float> %A, zeroinitializer
1873*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1874*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1875*9880d681SAndroid Build Coastguard Worker}
1876*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmogtz2xdouble(<2 x double> %A) {
1877*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmogtz2xdouble:
1878*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
1879*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ogt <2 x double> %A, zeroinitializer
1880*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1881*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1882*9880d681SAndroid Build Coastguard Worker}
1883*9880d681SAndroid Build Coastguard Worker
1884*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmoltz2xfloat(<2 x float> %A) {
1885*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoltz2xfloat:
1886*9880d681SAndroid Build Coastguard Worker; CHECK: fcmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
1887*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp olt <2 x float> %A, zeroinitializer
1888*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1889*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1890*9880d681SAndroid Build Coastguard Worker}
1891*9880d681SAndroid Build Coastguard Worker
1892*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmoltz4xfloat(<4 x float> %A) {
1893*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoltz4xfloat:
1894*9880d681SAndroid Build Coastguard Worker; CHECK: fcmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
1895*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp olt <4 x float> %A, zeroinitializer
1896*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1897*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1898*9880d681SAndroid Build Coastguard Worker}
1899*9880d681SAndroid Build Coastguard Worker
1900*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmoltz2xdouble(<2 x double> %A) {
1901*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmoltz2xdouble:
1902*9880d681SAndroid Build Coastguard Worker; CHECK: fcmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
1903*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp olt <2 x double> %A, zeroinitializer
1904*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1905*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1906*9880d681SAndroid Build Coastguard Worker}
1907*9880d681SAndroid Build Coastguard Worker
1908*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmolez2xfloat(<2 x float> %A) {
1909*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmolez2xfloat:
1910*9880d681SAndroid Build Coastguard Worker; CHECK: fcmle {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
1911*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ole <2 x float> %A, zeroinitializer
1912*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1913*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1914*9880d681SAndroid Build Coastguard Worker}
1915*9880d681SAndroid Build Coastguard Worker
1916*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmolez4xfloat(<4 x float> %A) {
1917*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmolez4xfloat:
1918*9880d681SAndroid Build Coastguard Worker; CHECK: fcmle {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
1919*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ole <4 x float> %A, zeroinitializer
1920*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1921*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1922*9880d681SAndroid Build Coastguard Worker}
1923*9880d681SAndroid Build Coastguard Worker
1924*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmolez2xdouble(<2 x double> %A) {
1925*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmolez2xdouble:
1926*9880d681SAndroid Build Coastguard Worker; CHECK: fcmle {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
1927*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ole <2 x double> %A, zeroinitializer
1928*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1929*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1930*9880d681SAndroid Build Coastguard Worker}
1931*9880d681SAndroid Build Coastguard Worker
1932*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmonez2xfloat(<2 x float> %A) {
1933*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmonez2xfloat:
1934*9880d681SAndroid Build Coastguard Worker; ONE with zero = OLT | OGT
1935*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
1936*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
1937*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1938*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp one <2 x float> %A, zeroinitializer
1939*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1940*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1941*9880d681SAndroid Build Coastguard Worker}
1942*9880d681SAndroid Build Coastguard Worker
1943*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmonez4xfloat(<4 x float> %A) {
1944*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmonez4xfloat:
1945*9880d681SAndroid Build Coastguard Worker; ONE with zero = OLT | OGT
1946*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
1947*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
1948*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1949*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp one <4 x float> %A, zeroinitializer
1950*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1951*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1952*9880d681SAndroid Build Coastguard Worker}
1953*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmonez2xdouble(<2 x double> %A) {
1954*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmonez2xdouble:
1955*9880d681SAndroid Build Coastguard Worker; ONE with zero = OLT | OGT
1956*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
1957*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
1958*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1959*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp one <2 x double> %A, zeroinitializer
1960*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1961*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1962*9880d681SAndroid Build Coastguard Worker}
1963*9880d681SAndroid Build Coastguard Worker
1964*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmordz2xfloat(<2 x float> %A) {
1965*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmordz2xfloat:
1966*9880d681SAndroid Build Coastguard Worker; ORD with zero = OLT | OGE
1967*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
1968*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
1969*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1970*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ord <2 x float> %A, zeroinitializer
1971*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
1972*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
1973*9880d681SAndroid Build Coastguard Worker}
1974*9880d681SAndroid Build Coastguard Worker
1975*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmordz4xfloat(<4 x float> %A) {
1976*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmordz4xfloat:
1977*9880d681SAndroid Build Coastguard Worker; ORD with zero = OLT | OGE
1978*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
1979*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
1980*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1981*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ord <4 x float> %A, zeroinitializer
1982*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
1983*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
1984*9880d681SAndroid Build Coastguard Worker}
1985*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmordz2xdouble(<2 x double> %A) {
1986*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmordz2xdouble:
1987*9880d681SAndroid Build Coastguard Worker; ORD with zero = OLT | OGE
1988*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
1989*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
1990*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1991*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ord <2 x double> %A, zeroinitializer
1992*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
1993*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
1994*9880d681SAndroid Build Coastguard Worker}
1995*9880d681SAndroid Build Coastguard Worker
1996*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmueqz2xfloat(<2 x float> %A) {
1997*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmueqz2xfloat:
1998*9880d681SAndroid Build Coastguard Worker; UEQ with zero = !ONE = !(OLT |OGT)
1999*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
2000*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
2001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2002*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2003*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ueq <2 x float> %A, zeroinitializer
2004*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
2005*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
2006*9880d681SAndroid Build Coastguard Worker}
2007*9880d681SAndroid Build Coastguard Worker
2008*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmueqz4xfloat(<4 x float> %A) {
2009*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmueqz4xfloat:
2010*9880d681SAndroid Build Coastguard Worker; UEQ with zero = !ONE = !(OLT |OGT)
2011*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
2012*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
2013*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2014*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2015*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ueq <4 x float> %A, zeroinitializer
2016*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
2017*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
2018*9880d681SAndroid Build Coastguard Worker}
2019*9880d681SAndroid Build Coastguard Worker
2020*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmueqz2xdouble(<2 x double> %A) {
2021*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmueqz2xdouble:
2022*9880d681SAndroid Build Coastguard Worker; UEQ with zero = !ONE = !(OLT |OGT)
2023*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
2024*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
2025*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2026*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2027*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ueq <2 x double> %A, zeroinitializer
2028*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
2029*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
2030*9880d681SAndroid Build Coastguard Worker}
2031*9880d681SAndroid Build Coastguard Worker
2032*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmugez2xfloat(<2 x float> %A) {
2033*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugez2xfloat:
2034*9880d681SAndroid Build Coastguard Worker; UGE with zero = !OLT
2035*9880d681SAndroid Build Coastguard Worker; CHECK: fcmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
2036*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2037*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp uge <2 x float> %A, zeroinitializer
2038*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
2039*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
2040*9880d681SAndroid Build Coastguard Worker}
2041*9880d681SAndroid Build Coastguard Worker
2042*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmugez4xfloat(<4 x float> %A) {
2043*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugez4xfloat:
2044*9880d681SAndroid Build Coastguard Worker; UGE with zero = !OLT
2045*9880d681SAndroid Build Coastguard Worker; CHECK: fcmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
2046*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2047*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp uge <4 x float> %A, zeroinitializer
2048*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
2049*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
2050*9880d681SAndroid Build Coastguard Worker}
2051*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmugez2xdouble(<2 x double> %A) {
2052*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugez2xdouble:
2053*9880d681SAndroid Build Coastguard Worker; UGE with zero = !OLT
2054*9880d681SAndroid Build Coastguard Worker; CHECK: fcmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
2055*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2056*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp uge <2 x double> %A, zeroinitializer
2057*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
2058*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
2059*9880d681SAndroid Build Coastguard Worker}
2060*9880d681SAndroid Build Coastguard Worker
2061*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmugtz2xfloat(<2 x float> %A) {
2062*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugtz2xfloat:
2063*9880d681SAndroid Build Coastguard Worker; UGT with zero = !OLE
2064*9880d681SAndroid Build Coastguard Worker; CHECK: fcmle {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
2065*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2066*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ugt <2 x float> %A, zeroinitializer
2067*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
2068*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
2069*9880d681SAndroid Build Coastguard Worker}
2070*9880d681SAndroid Build Coastguard Worker
2071*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmugtz4xfloat(<4 x float> %A) {
2072*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugtz4xfloat:
2073*9880d681SAndroid Build Coastguard Worker; UGT with zero = !OLE
2074*9880d681SAndroid Build Coastguard Worker; CHECK: fcmle {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
2075*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2076*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ugt <4 x float> %A, zeroinitializer
2077*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
2078*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
2079*9880d681SAndroid Build Coastguard Worker}
2080*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmugtz2xdouble(<2 x double> %A) {
2081*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmugtz2xdouble:
2082*9880d681SAndroid Build Coastguard Worker; UGT with zero = !OLE
2083*9880d681SAndroid Build Coastguard Worker; CHECK: fcmle {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
2084*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2085*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ugt <2 x double> %A, zeroinitializer
2086*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
2087*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
2088*9880d681SAndroid Build Coastguard Worker}
2089*9880d681SAndroid Build Coastguard Worker
2090*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmultz2xfloat(<2 x float> %A) {
2091*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmultz2xfloat:
2092*9880d681SAndroid Build Coastguard Worker; ULT with zero = !OGE
2093*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
2094*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2095*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ult <2 x float> %A, zeroinitializer
2096*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
2097*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
2098*9880d681SAndroid Build Coastguard Worker}
2099*9880d681SAndroid Build Coastguard Worker
2100*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmultz4xfloat(<4 x float> %A) {
2101*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmultz4xfloat:
2102*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
2103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2104*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ult <4 x float> %A, zeroinitializer
2105*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
2106*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
2107*9880d681SAndroid Build Coastguard Worker}
2108*9880d681SAndroid Build Coastguard Worker
2109*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmultz2xdouble(<2 x double> %A) {
2110*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmultz2xdouble:
2111*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
2112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2113*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ult <2 x double> %A, zeroinitializer
2114*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
2115*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
2116*9880d681SAndroid Build Coastguard Worker}
2117*9880d681SAndroid Build Coastguard Worker
2118*9880d681SAndroid Build Coastguard Worker
2119*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmulez2xfloat(<2 x float> %A) {
2120*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmulez2xfloat:
2121*9880d681SAndroid Build Coastguard Worker; ULE with zero = !OGT
2122*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
2123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2124*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ule <2 x float> %A, zeroinitializer
2125*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
2126*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
2127*9880d681SAndroid Build Coastguard Worker}
2128*9880d681SAndroid Build Coastguard Worker
2129*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmulez4xfloat(<4 x float> %A) {
2130*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmulez4xfloat:
2131*9880d681SAndroid Build Coastguard Worker; ULE with zero = !OGT
2132*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
2133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2134*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ule <4 x float> %A, zeroinitializer
2135*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
2136*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
2137*9880d681SAndroid Build Coastguard Worker}
2138*9880d681SAndroid Build Coastguard Worker
2139*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmulez2xdouble(<2 x double> %A) {
2140*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmulez2xdouble:
2141*9880d681SAndroid Build Coastguard Worker; ULE with zero = !OGT
2142*9880d681SAndroid Build Coastguard Worker; CHECK: fcmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
2143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2144*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp ule <2 x double> %A, zeroinitializer
2145*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
2146*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
2147*9880d681SAndroid Build Coastguard Worker}
2148*9880d681SAndroid Build Coastguard Worker
2149*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmunez2xfloat(<2 x float> %A) {
2150*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmunez2xfloat:
2151*9880d681SAndroid Build Coastguard Worker; UNE with zero = !OEQ with zero
2152*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
2153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2154*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp une <2 x float> %A, zeroinitializer
2155*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
2156*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
2157*9880d681SAndroid Build Coastguard Worker}
2158*9880d681SAndroid Build Coastguard Worker
2159*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmunez4xfloat(<4 x float> %A) {
2160*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmunez4xfloat:
2161*9880d681SAndroid Build Coastguard Worker; UNE with zero = !OEQ with zero
2162*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
2163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2164*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp une <4 x float> %A, zeroinitializer
2165*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
2166*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
2167*9880d681SAndroid Build Coastguard Worker}
2168*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmunez2xdouble(<2 x double> %A) {
2169*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmunez2xdouble:
2170*9880d681SAndroid Build Coastguard Worker; UNE with zero = !OEQ with zero
2171*9880d681SAndroid Build Coastguard Worker; CHECK: fcmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
2172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2173*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp une <2 x double> %A, zeroinitializer
2174*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
2175*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
2176*9880d681SAndroid Build Coastguard Worker}
2177*9880d681SAndroid Build Coastguard Worker
2178*9880d681SAndroid Build Coastguard Worker
2179*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcmunoz2xfloat(<2 x float> %A) {
2180*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmunoz2xfloat:
2181*9880d681SAndroid Build Coastguard Worker; UNO with zero = !ORD = !(OLT | OGE)
2182*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
2183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0.0|0}}
2184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2186*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp uno <2 x float> %A, zeroinitializer
2187*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i32>
2188*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp4
2189*9880d681SAndroid Build Coastguard Worker}
2190*9880d681SAndroid Build Coastguard Worker
2191*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcmunoz4xfloat(<4 x float> %A) {
2192*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmunoz4xfloat:
2193*9880d681SAndroid Build Coastguard Worker; UNO with zero = !ORD = !(OLT | OGE)
2194*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
2195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0.0|0}}
2196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2198*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp uno <4 x float> %A, zeroinitializer
2199*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <4 x i1> %tmp3 to <4 x i32>
2200*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp4
2201*9880d681SAndroid Build Coastguard Worker}
2202*9880d681SAndroid Build Coastguard Worker
2203*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcmunoz2xdouble(<2 x double> %A) {
2204*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmunoz2xdouble:
2205*9880d681SAndroid Build Coastguard Worker; UNO with zero = !ORD = !(OLT | OGE)
2206*9880d681SAndroid Build Coastguard Worker; CHECK: fcmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
2207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcmlt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0.0|0}}
2208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: orr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{mvn|not}} {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2210*9880d681SAndroid Build Coastguard Worker   %tmp3 = fcmp uno <2 x double> %A, zeroinitializer
2211*9880d681SAndroid Build Coastguard Worker   %tmp4 = sext <2 x i1> %tmp3 to <2 x i64>
2212*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp4
2213*9880d681SAndroid Build Coastguard Worker
2214*9880d681SAndroid Build Coastguard Worker}
2215