xref: /aosp_15_r20/external/llvm/test/CodeGen/SystemZ/vec-cmp-05.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; Test v4f32 comparisons.
2*9880d681SAndroid Build Coastguard Worker;
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; Test oeq.
6*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f1(<4 x float> %val1, <4 x float> %val2) {
7*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f1:
8*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
9*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
10*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
11*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
12*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
13*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
14*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
15*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
16*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfcedb [[HIGHRES:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]]
17*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfcedb [[LOWRES:%v[0-9]+]], [[LOW0D]], [[LOW1D]]
18*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg %v24, [[HIGHRES]], [[LOWRES]]
19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
20*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp oeq <4 x float> %val1, %val2
21*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
22*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
23*9880d681SAndroid Build Coastguard Worker}
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker; Test one.
26*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f2(<4 x float> %val1, <4 x float> %val2) {
27*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2:
28*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
29*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
30*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
31*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
32*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
33*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
34*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
35*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
36*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES0:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]]
37*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES0:%v[0-9]+]], [[LOW0D]], [[LOW1D]]
38*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES1:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]]
39*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES1:%v[0-9]+]], [[LOW1D]], [[LOW0D]]
40*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES0:%v[0-9]+]], [[HIGHRES0]], [[LOWRES0]]
41*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES1:%v[0-9]+]], [[HIGHRES1]], [[LOWRES1]]
42*9880d681SAndroid Build Coastguard Worker; CHECK: vo %v24, [[RES1]], [[RES0]]
43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
44*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp one <4 x float> %val1, %val2
45*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
46*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
47*9880d681SAndroid Build Coastguard Worker}
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Worker; Test ogt.
50*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f3(<4 x float> %val1, <4 x float> %val2) {
51*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f3:
52*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
53*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
54*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
55*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
56*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
57*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
58*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
59*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
60*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]]
61*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES:%v[0-9]+]], [[LOW0D]], [[LOW1D]]
62*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg %v24, [[HIGHRES]], [[LOWRES]]
63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
64*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ogt <4 x float> %val1, %val2
65*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
66*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
67*9880d681SAndroid Build Coastguard Worker}
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Worker; Test oge.
70*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f4(<4 x float> %val1, <4 x float> %val2) {
71*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f4:
72*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
73*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
74*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
75*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
76*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
77*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
78*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
79*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
80*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[HIGHRES:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]]
81*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[LOWRES:%v[0-9]+]], [[LOW0D]], [[LOW1D]]
82*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg %v24, [[HIGHRES]], [[LOWRES]]
83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
84*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp oge <4 x float> %val1, %val2
85*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
86*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
87*9880d681SAndroid Build Coastguard Worker}
88*9880d681SAndroid Build Coastguard Worker
89*9880d681SAndroid Build Coastguard Worker; Test ole.
90*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f5(<4 x float> %val1, <4 x float> %val2) {
91*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f5:
92*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
93*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
94*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
95*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
96*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
97*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
98*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
99*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
100*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[HIGHRES:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]]
101*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[LOWRES:%v[0-9]+]], [[LOW1D]], [[LOW0D]]
102*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg %v24, [[HIGHRES]], [[LOWRES]]
103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
104*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ole <4 x float> %val1, %val2
105*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
106*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
107*9880d681SAndroid Build Coastguard Worker}
108*9880d681SAndroid Build Coastguard Worker
109*9880d681SAndroid Build Coastguard Worker; Test olt.
110*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f6(<4 x float> %val1, <4 x float> %val2) {
111*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f6:
112*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
113*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
114*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
115*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
116*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
117*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
118*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
119*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
120*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]]
121*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES:%v[0-9]+]], [[LOW1D]], [[LOW0D]]
122*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg %v24, [[HIGHRES]], [[LOWRES]]
123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
124*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp olt <4 x float> %val1, %val2
125*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
126*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
127*9880d681SAndroid Build Coastguard Worker}
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Worker; Test ueq.
130*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f7(<4 x float> %val1, <4 x float> %val2) {
131*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f7:
132*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
133*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
134*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
135*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
136*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
137*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
138*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
139*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
140*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES0:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]]
141*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES0:%v[0-9]+]], [[LOW0D]], [[LOW1D]]
142*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES1:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]]
143*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES1:%v[0-9]+]], [[LOW1D]], [[LOW0D]]
144*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES0:%v[0-9]+]], [[HIGHRES0]], [[LOWRES0]]
145*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES1:%v[0-9]+]], [[HIGHRES1]], [[LOWRES1]]
146*9880d681SAndroid Build Coastguard Worker; CHECK: vno %v24, [[RES1]], [[RES0]]
147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
148*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ueq <4 x float> %val1, %val2
149*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
150*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
151*9880d681SAndroid Build Coastguard Worker}
152*9880d681SAndroid Build Coastguard Worker
153*9880d681SAndroid Build Coastguard Worker; Test une.
154*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f8(<4 x float> %val1, <4 x float> %val2) {
155*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f8:
156*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
157*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
158*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
159*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
160*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
161*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
162*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
163*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
164*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfcedb [[HIGHRES:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]]
165*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfcedb [[LOWRES:%v[0-9]+]], [[LOW0D]], [[LOW1D]]
166*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[RES:%v[0-9]+]], [[HIGHRES]], [[LOWRES]]
167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vno %v24, [[RES]], [[RES]]
168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
169*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp une <4 x float> %val1, %val2
170*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
171*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
172*9880d681SAndroid Build Coastguard Worker}
173*9880d681SAndroid Build Coastguard Worker
174*9880d681SAndroid Build Coastguard Worker; Test ugt.
175*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f9(<4 x float> %val1, <4 x float> %val2) {
176*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f9:
177*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
178*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
179*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
180*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
181*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
182*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
183*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
184*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
185*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[HIGHRES:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]]
186*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[LOWRES:%v[0-9]+]], [[LOW1D]], [[LOW0D]]
187*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[RES:%v[0-9]+]], [[HIGHRES]], [[LOWRES]]
188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vno %v24, [[RES]], [[RES]]
189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
190*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ugt <4 x float> %val1, %val2
191*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
192*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
193*9880d681SAndroid Build Coastguard Worker}
194*9880d681SAndroid Build Coastguard Worker
195*9880d681SAndroid Build Coastguard Worker; Test uge.
196*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f10(<4 x float> %val1, <4 x float> %val2) {
197*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f10:
198*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
199*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
200*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
201*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
202*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
203*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
204*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
205*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
206*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]]
207*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES:%v[0-9]+]], [[LOW1D]], [[LOW0D]]
208*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[RES:%v[0-9]+]], [[HIGHRES]], [[LOWRES]]
209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vno %v24, [[RES]], [[RES]]
210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
211*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp uge <4 x float> %val1, %val2
212*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
213*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
214*9880d681SAndroid Build Coastguard Worker}
215*9880d681SAndroid Build Coastguard Worker
216*9880d681SAndroid Build Coastguard Worker; Test ule.
217*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f11(<4 x float> %val1, <4 x float> %val2) {
218*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f11:
219*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
220*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
221*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
222*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
223*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
224*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
225*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
226*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
227*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]]
228*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES:%v[0-9]+]], [[LOW0D]], [[LOW1D]]
229*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[RES:%v[0-9]+]], [[HIGHRES]], [[LOWRES]]
230*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vno %v24, [[RES]], [[RES]]
231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
232*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ule <4 x float> %val1, %val2
233*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
234*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
235*9880d681SAndroid Build Coastguard Worker}
236*9880d681SAndroid Build Coastguard Worker
237*9880d681SAndroid Build Coastguard Worker; Test ult.
238*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f12(<4 x float> %val1, <4 x float> %val2) {
239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f12:
240*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
241*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
242*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
243*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
244*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
245*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
246*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
247*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
248*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[HIGHRES:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]]
249*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[LOWRES:%v[0-9]+]], [[LOW0D]], [[LOW1D]]
250*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[RES:%v[0-9]+]], [[HIGHRES]], [[LOWRES]]
251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vno %v24, [[RES]], [[RES]]
252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
253*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ult <4 x float> %val1, %val2
254*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
255*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
256*9880d681SAndroid Build Coastguard Worker}
257*9880d681SAndroid Build Coastguard Worker
258*9880d681SAndroid Build Coastguard Worker; Test ord.
259*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f13(<4 x float> %val1, <4 x float> %val2) {
260*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f13:
261*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
262*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
263*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
264*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
265*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
266*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
267*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
268*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
269*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[HIGHRES0:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]]
270*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[LOWRES0:%v[0-9]+]], [[LOW0D]], [[LOW1D]]
271*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES1:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]]
272*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES1:%v[0-9]+]], [[LOW1D]], [[LOW0D]]
273*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES0:%v[0-9]+]], [[HIGHRES0]], [[LOWRES0]]
274*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES1:%v[0-9]+]], [[HIGHRES1]], [[LOWRES1]]
275*9880d681SAndroid Build Coastguard Worker; CHECK: vo %v24, [[RES1]], [[RES0]]
276*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
277*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ord <4 x float> %val1, %val2
278*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
279*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
280*9880d681SAndroid Build Coastguard Worker}
281*9880d681SAndroid Build Coastguard Worker
282*9880d681SAndroid Build Coastguard Worker; Test uno.
283*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @f14(<4 x float> %val1, <4 x float> %val2) {
284*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f14:
285*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH0E:%v[0-9]+]], %v24, %v24
286*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW0E:%v[0-9]+]], %v24, %v24
287*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrhf [[HIGH1E:%v[0-9]+]], %v26, %v26
288*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vmrlf [[LOW1E:%v[0-9]+]], %v26, %v26
289*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH0D:%v[0-9]+]], [[HIGH0E]]
290*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[HIGH1D:%v[0-9]+]], [[HIGH1E]]
291*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW0D:%v[0-9]+]], [[LOW0E]]
292*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vldeb [[LOW1D:%v[0-9]+]], [[LOW1E]]
293*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[HIGHRES0:%v[0-9]+]], [[HIGH0D]], [[HIGH1D]]
294*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchedb [[LOWRES0:%v[0-9]+]], [[LOW0D]], [[LOW1D]]
295*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[HIGHRES1:%v[0-9]+]], [[HIGH1D]], [[HIGH0D]]
296*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vfchdb [[LOWRES1:%v[0-9]+]], [[LOW1D]], [[LOW0D]]
297*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES0:%v[0-9]+]], [[HIGHRES0]], [[LOWRES0]]
298*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: vpkg [[RES1:%v[0-9]+]], [[HIGHRES1]], [[LOWRES1]]
299*9880d681SAndroid Build Coastguard Worker; CHECK: vno %v24, [[RES1]], [[RES0]]
300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
301*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp uno <4 x float> %val1, %val2
302*9880d681SAndroid Build Coastguard Worker  %ret = sext <4 x i1> %cmp to <4 x i32>
303*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %ret
304*9880d681SAndroid Build Coastguard Worker}
305*9880d681SAndroid Build Coastguard Worker
306*9880d681SAndroid Build Coastguard Worker; Test oeq selects.
307*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f15(<4 x float> %val1, <4 x float> %val2,
308*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
309*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f15:
310*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]],
311*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]]
312*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
313*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp oeq <4 x float> %val1, %val2
314*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
315*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
316*9880d681SAndroid Build Coastguard Worker}
317*9880d681SAndroid Build Coastguard Worker
318*9880d681SAndroid Build Coastguard Worker; Test one selects.
319*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f16(<4 x float> %val1, <4 x float> %val2,
320*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
321*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f16:
322*9880d681SAndroid Build Coastguard Worker; CHECK: vo [[REG:%v[0-9]+]],
323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]]
324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
325*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp one <4 x float> %val1, %val2
326*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
327*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
328*9880d681SAndroid Build Coastguard Worker}
329*9880d681SAndroid Build Coastguard Worker
330*9880d681SAndroid Build Coastguard Worker; Test ogt selects.
331*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f17(<4 x float> %val1, <4 x float> %val2,
332*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
333*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f17:
334*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]],
335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]]
336*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
337*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ogt <4 x float> %val1, %val2
338*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
339*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
340*9880d681SAndroid Build Coastguard Worker}
341*9880d681SAndroid Build Coastguard Worker
342*9880d681SAndroid Build Coastguard Worker; Test oge selects.
343*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f18(<4 x float> %val1, <4 x float> %val2,
344*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
345*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f18:
346*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]],
347*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]]
348*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
349*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp oge <4 x float> %val1, %val2
350*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
351*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
352*9880d681SAndroid Build Coastguard Worker}
353*9880d681SAndroid Build Coastguard Worker
354*9880d681SAndroid Build Coastguard Worker; Test ole selects.
355*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f19(<4 x float> %val1, <4 x float> %val2,
356*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
357*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f19:
358*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]],
359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]]
360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
361*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ole <4 x float> %val1, %val2
362*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
363*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
364*9880d681SAndroid Build Coastguard Worker}
365*9880d681SAndroid Build Coastguard Worker
366*9880d681SAndroid Build Coastguard Worker; Test olt selects.
367*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f20(<4 x float> %val1, <4 x float> %val2,
368*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
369*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f20:
370*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]],
371*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]]
372*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
373*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp olt <4 x float> %val1, %val2
374*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
375*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
376*9880d681SAndroid Build Coastguard Worker}
377*9880d681SAndroid Build Coastguard Worker
378*9880d681SAndroid Build Coastguard Worker; Test ueq selects.
379*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f21(<4 x float> %val1, <4 x float> %val2,
380*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
381*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f21:
382*9880d681SAndroid Build Coastguard Worker; CHECK: vo [[REG:%v[0-9]+]],
383*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]]
384*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
385*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ueq <4 x float> %val1, %val2
386*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
387*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
388*9880d681SAndroid Build Coastguard Worker}
389*9880d681SAndroid Build Coastguard Worker
390*9880d681SAndroid Build Coastguard Worker; Test une selects.
391*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f22(<4 x float> %val1, <4 x float> %val2,
392*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
393*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f22:
394*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]],
395*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]]
396*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
397*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp une <4 x float> %val1, %val2
398*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
399*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
400*9880d681SAndroid Build Coastguard Worker}
401*9880d681SAndroid Build Coastguard Worker
402*9880d681SAndroid Build Coastguard Worker; Test ugt selects.
403*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f23(<4 x float> %val1, <4 x float> %val2,
404*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
405*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f23:
406*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]],
407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]]
408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
409*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ugt <4 x float> %val1, %val2
410*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
411*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
412*9880d681SAndroid Build Coastguard Worker}
413*9880d681SAndroid Build Coastguard Worker
414*9880d681SAndroid Build Coastguard Worker; Test uge selects.
415*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f24(<4 x float> %val1, <4 x float> %val2,
416*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
417*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f24:
418*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]],
419*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]]
420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
421*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp uge <4 x float> %val1, %val2
422*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
423*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
424*9880d681SAndroid Build Coastguard Worker}
425*9880d681SAndroid Build Coastguard Worker
426*9880d681SAndroid Build Coastguard Worker; Test ule selects.
427*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f25(<4 x float> %val1, <4 x float> %val2,
428*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
429*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f25:
430*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]],
431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]]
432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
433*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ule <4 x float> %val1, %val2
434*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
435*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
436*9880d681SAndroid Build Coastguard Worker}
437*9880d681SAndroid Build Coastguard Worker
438*9880d681SAndroid Build Coastguard Worker; Test ult selects.
439*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f26(<4 x float> %val1, <4 x float> %val2,
440*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
441*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f26:
442*9880d681SAndroid Build Coastguard Worker; CHECK: vpkg [[REG:%v[0-9]+]],
443*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]]
444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
445*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ult <4 x float> %val1, %val2
446*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
447*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
448*9880d681SAndroid Build Coastguard Worker}
449*9880d681SAndroid Build Coastguard Worker
450*9880d681SAndroid Build Coastguard Worker; Test ord selects.
451*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f27(<4 x float> %val1, <4 x float> %val2,
452*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
453*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f27:
454*9880d681SAndroid Build Coastguard Worker; CHECK: vo [[REG:%v[0-9]+]],
455*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v28, %v30, [[REG]]
456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
457*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp ord <4 x float> %val1, %val2
458*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
459*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
460*9880d681SAndroid Build Coastguard Worker}
461*9880d681SAndroid Build Coastguard Worker
462*9880d681SAndroid Build Coastguard Worker; Test uno selects.
463*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @f28(<4 x float> %val1, <4 x float> %val2,
464*9880d681SAndroid Build Coastguard Worker                        <4 x float> %val3, <4 x float> %val4) {
465*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f28:
466*9880d681SAndroid Build Coastguard Worker; CHECK: vo [[REG:%v[0-9]+]],
467*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: vsel %v24, %v30, %v28, [[REG]]
468*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: br %r14
469*9880d681SAndroid Build Coastguard Worker  %cmp = fcmp uno <4 x float> %val1, %val2
470*9880d681SAndroid Build Coastguard Worker  %ret = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
471*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %ret
472*9880d681SAndroid Build Coastguard Worker}
473