xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/fp16-v4-instructions.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -asm-verbose=false -mtriple=aarch64-none-eabi | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @add_h(<4 x half> %a, <4 x half> %b) {
4*9880d681SAndroid Build Coastguard Workerentry:
5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: add_h:
6*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtl [[OP1:v[0-9]+\.4s]], v0.4h
7*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtl [[OP2:v[0-9]+\.4s]], v1.4h
8*9880d681SAndroid Build Coastguard Worker; CHECK: fadd [[RES:v[0-9]+.4s]], [[OP1]], [[OP2]]
9*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtn v0.4h, [[RES]]
10*9880d681SAndroid Build Coastguard Worker  %0 = fadd <4 x half> %a, %b
11*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %0
12*9880d681SAndroid Build Coastguard Worker}
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @build_h4(<4 x half> %a) {
16*9880d681SAndroid Build Coastguard Workerentry:
17*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: build_h4:
18*9880d681SAndroid Build Coastguard Worker; CHECK: mov [[GPR:w[0-9]+]], #15565
19*9880d681SAndroid Build Coastguard Worker; CHECK: dup v0.4h, [[GPR]]
20*9880d681SAndroid Build Coastguard Worker  ret <4 x half> <half 0xH3CCD, half 0xH3CCD, half 0xH3CCD, half 0xH3CCD>
21*9880d681SAndroid Build Coastguard Worker}
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @sub_h(<4 x half> %a, <4 x half> %b) {
25*9880d681SAndroid Build Coastguard Workerentry:
26*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sub_h:
27*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtl [[OP1:v[0-9]+\.4s]], v0.4h
28*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtl [[OP2:v[0-9]+\.4s]], v1.4h
29*9880d681SAndroid Build Coastguard Worker; CHECK: fsub [[RES:v[0-9]+.4s]], [[OP1]], [[OP2]]
30*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtn v0.4h, [[RES]]
31*9880d681SAndroid Build Coastguard Worker  %0 = fsub <4 x half> %a, %b
32*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %0
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @mul_h(<4 x half> %a, <4 x half> %b) {
37*9880d681SAndroid Build Coastguard Workerentry:
38*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: mul_h:
39*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtl [[OP1:v[0-9]+\.4s]], v0.4h
40*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtl [[OP2:v[0-9]+\.4s]], v1.4h
41*9880d681SAndroid Build Coastguard Worker; CHECK: fmul [[RES:v[0-9]+.4s]], [[OP1]], [[OP2]]
42*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtn v0.4h, [[RES]]
43*9880d681SAndroid Build Coastguard Worker  %0 = fmul <4 x half> %a, %b
44*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %0
45*9880d681SAndroid Build Coastguard Worker}
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @div_h(<4 x half> %a, <4 x half> %b) {
49*9880d681SAndroid Build Coastguard Workerentry:
50*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: div_h:
51*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtl [[OP1:v[0-9]+\.4s]], v0.4h
52*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtl [[OP2:v[0-9]+\.4s]], v1.4h
53*9880d681SAndroid Build Coastguard Worker; CHECK: fdiv [[RES:v[0-9]+.4s]], [[OP1]], [[OP2]]
54*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtn v0.4h, [[RES]]
55*9880d681SAndroid Build Coastguard Worker  %0 = fdiv <4 x half> %a, %b
56*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %0
57*9880d681SAndroid Build Coastguard Worker}
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @load_h(<4 x half>* %a) {
61*9880d681SAndroid Build Coastguard Workerentry:
62*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: load_h:
63*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d0, [x0]
64*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x half>, <4 x half>* %a, align 4
65*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %0
66*9880d681SAndroid Build Coastguard Worker}
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Workerdefine void @store_h(<4 x half>* %a, <4 x half> %b) {
70*9880d681SAndroid Build Coastguard Workerentry:
71*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: store_h:
72*9880d681SAndroid Build Coastguard Worker; CHECK: str d0, [x0]
73*9880d681SAndroid Build Coastguard Worker  store <4 x half> %b, <4 x half>* %a, align 4
74*9880d681SAndroid Build Coastguard Worker  ret void
75*9880d681SAndroid Build Coastguard Worker}
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @s_to_h(<4 x float> %a) {
78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: s_to_h:
79*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtn v0.4h, v0.4s
80*9880d681SAndroid Build Coastguard Worker  %1 = fptrunc <4 x float> %a to <4 x half>
81*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %1
82*9880d681SAndroid Build Coastguard Worker}
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @d_to_h(<4 x double> %a) {
85*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: d_to_h:
86*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
87*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
88*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
89*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
90*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins
91*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins
92*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins
93*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins
94*9880d681SAndroid Build Coastguard Worker  %1 = fptrunc <4 x double> %a to <4 x half>
95*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %1
96*9880d681SAndroid Build Coastguard Worker}
97*9880d681SAndroid Build Coastguard Worker
98*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @h_to_s(<4 x half> %a) {
99*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: h_to_s:
100*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtl v0.4s, v0.4h
101*9880d681SAndroid Build Coastguard Worker  %1 = fpext <4 x half> %a to <4 x float>
102*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %1
103*9880d681SAndroid Build Coastguard Worker}
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @h_to_d(<4 x half> %a) {
106*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: h_to_d:
107*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
108*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
109*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
110*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
111*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins
112*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins
113*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins
114*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ins
115*9880d681SAndroid Build Coastguard Worker  %1 = fpext <4 x half> %a to <4 x double>
116*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %1
117*9880d681SAndroid Build Coastguard Worker}
118*9880d681SAndroid Build Coastguard Worker
119*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @bitcast_i_to_h(float, <4 x i16> %a) {
120*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bitcast_i_to_h:
121*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b
122*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x i16> %a to <4 x half>
123*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %2
124*9880d681SAndroid Build Coastguard Worker}
125*9880d681SAndroid Build Coastguard Worker
126*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @bitcast_h_to_i(float, <4 x half> %a) {
127*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bitcast_h_to_i:
128*9880d681SAndroid Build Coastguard Worker; CHECK: mov v0.16b, v1.16b
129*9880d681SAndroid Build Coastguard Worker  %2 = bitcast <4 x half> %a to <4 x i16>
130*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %2
131*9880d681SAndroid Build Coastguard Worker}
132*9880d681SAndroid Build Coastguard Worker
133*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @sitofp_i8(<4 x i8> %a) #0 {
134*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sitofp_i8:
135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: shl [[OP1:v[0-9]+\.4h]], v0.4h, #8
136*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sshr [[OP2:v[0-9]+\.4h]], [[OP1]], #8
137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sshll [[OP3:v[0-9]+\.4s]], [[OP2]], #0
138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: scvtf [[OP4:v[0-9]+\.4s]], [[OP3]]
139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtn v0.4h, [[OP4]]
140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
141*9880d681SAndroid Build Coastguard Worker  %1 = sitofp <4 x i8> %a to <4 x half>
142*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %1
143*9880d681SAndroid Build Coastguard Worker}
144*9880d681SAndroid Build Coastguard Worker
145*9880d681SAndroid Build Coastguard Worker
146*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @sitofp_i16(<4 x i16> %a) #0 {
147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sitofp_i16:
148*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sshll [[OP1:v[0-9]+\.4s]], v0.4h, #0
149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: scvtf [[OP2:v[0-9]+\.4s]], [[OP1]]
150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtn v0.4h, [[OP2]]
151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
152*9880d681SAndroid Build Coastguard Worker  %1 = sitofp <4 x i16> %a to <4 x half>
153*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %1
154*9880d681SAndroid Build Coastguard Worker}
155*9880d681SAndroid Build Coastguard Worker
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @sitofp_i32(<4 x i32> %a) #0 {
158*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sitofp_i32:
159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: scvtf [[OP1:v[0-9]+\.4s]], v0.4s
160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtn v0.4h, [[OP1]]
161*9880d681SAndroid Build Coastguard Worker  %1 = sitofp <4 x i32> %a to <4 x half>
162*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %1
163*9880d681SAndroid Build Coastguard Worker}
164*9880d681SAndroid Build Coastguard Worker
165*9880d681SAndroid Build Coastguard Worker
166*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @sitofp_i64(<4 x i64> %a) #0 {
167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sitofp_i64:
168*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[OP1:v[0-9]+\.2d]], v0.2d
169*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: scvtf [[OP2:v[0-9]+\.2d]], v1.2d
170*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn [[OP3:v[0-9]+]].2s, [[OP1]]
171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtn2 [[OP3]].4s, [[OP2]]
172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtn v0.4h, [[OP3]].4s
173*9880d681SAndroid Build Coastguard Worker  %1 = sitofp <4 x i64> %a to <4 x half>
174*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %1
175*9880d681SAndroid Build Coastguard Worker}
176*9880d681SAndroid Build Coastguard Worker
177*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @uitofp_i8(<4 x i8> %a) #0 {
178*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: uitofp_i8:
179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: bic v0.4h, #255, lsl #8
180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ushll [[OP1:v[0-9]+\.4s]], v0.4h, #0
181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucvtf [[OP2:v[0-9]+\.4s]], [[OP1]]
182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtn v0.4h, [[OP2]]
183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
184*9880d681SAndroid Build Coastguard Worker  %1 = uitofp <4 x i8> %a to <4 x half>
185*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %1
186*9880d681SAndroid Build Coastguard Worker}
187*9880d681SAndroid Build Coastguard Worker
188*9880d681SAndroid Build Coastguard Worker
189*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @uitofp_i16(<4 x i16> %a) #0 {
190*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: uitofp_i16:
191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ushll [[OP1:v[0-9]+\.4s]], v0.4h, #0
192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucvtf [[OP2:v[0-9]+\.4s]], [[OP1]]
193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtn v0.4h, [[OP2]]
194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
195*9880d681SAndroid Build Coastguard Worker  %1 = uitofp <4 x i16> %a to <4 x half>
196*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %1
197*9880d681SAndroid Build Coastguard Worker}
198*9880d681SAndroid Build Coastguard Worker
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @uitofp_i32(<4 x i32> %a) #0 {
201*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: uitofp_i32:
202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucvtf [[OP1:v[0-9]+\.4s]], v0.4s
203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtn v0.4h, [[OP1]]
204*9880d681SAndroid Build Coastguard Worker  %1 = uitofp <4 x i32> %a to <4 x half>
205*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %1
206*9880d681SAndroid Build Coastguard Worker}
207*9880d681SAndroid Build Coastguard Worker
208*9880d681SAndroid Build Coastguard Worker
209*9880d681SAndroid Build Coastguard Workerdefine <4 x half> @uitofp_i64(<4 x i64> %a) #0 {
210*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: uitofp_i64:
211*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[OP1:v[0-9]+\.2d]], v0.2d
212*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ucvtf [[OP2:v[0-9]+\.2d]], v1.2d
213*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvtn [[OP3:v[0-9]+]].2s, [[OP1]]
214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtn2 [[OP3]].4s, [[OP2]]
215*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtn v0.4h, [[OP3]].4s
216*9880d681SAndroid Build Coastguard Worker  %1 = uitofp <4 x i64> %a to <4 x half>
217*9880d681SAndroid Build Coastguard Worker  ret <4 x half> %1
218*9880d681SAndroid Build Coastguard Worker}
219*9880d681SAndroid Build Coastguard Worker
220*9880d681SAndroid Build Coastguard Workerdefine void @test_insert_at_zero(half %a, <4 x half>* %b) #0 {
221*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_insert_at_zero:
222*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: str d0, [x0]
223*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
224*9880d681SAndroid Build Coastguard Worker  %1 = insertelement <4 x half> undef, half %a, i64 0
225*9880d681SAndroid Build Coastguard Worker  store <4 x half> %1, <4 x half>* %b, align 4
226*9880d681SAndroid Build Coastguard Worker  ret void
227*9880d681SAndroid Build Coastguard Worker}
228*9880d681SAndroid Build Coastguard Worker
229*9880d681SAndroid Build Coastguard Workerdefine <4 x i8> @fptosi_i8(<4 x half> %a) #0 {
230*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fptosi_i8:
231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtl  [[REG1:v[0-9]+\.4s]], v0.4h
232*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtzs [[REG2:v[0-9]+\.4s]], [[REG1]]
233*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xtn    v0.4h, [[REG2]]
234*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
235*9880d681SAndroid Build Coastguard Worker  %1 = fptosi<4 x half> %a to <4 x i8>
236*9880d681SAndroid Build Coastguard Worker  ret <4 x i8> %1
237*9880d681SAndroid Build Coastguard Worker}
238*9880d681SAndroid Build Coastguard Worker
239*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @fptosi_i16(<4 x half> %a) #0 {
240*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fptosi_i16:
241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtl  [[REG1:v[0-9]+\.4s]], v0.4h
242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtzs [[REG2:v[0-9]+\.4s]], [[REG1]]
243*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xtn    v0.4h, [[REG2]]
244*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
245*9880d681SAndroid Build Coastguard Worker  %1 = fptosi<4 x half> %a to <4 x i16>
246*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %1
247*9880d681SAndroid Build Coastguard Worker}
248*9880d681SAndroid Build Coastguard Worker
249*9880d681SAndroid Build Coastguard Workerdefine <4 x i8> @fptoui_i8(<4 x half> %a) #0 {
250*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fptoui_i8:
251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtl  [[REG1:v[0-9]+\.4s]], v0.4h
252*9880d681SAndroid Build Coastguard Worker; NOTE: fcvtzs selected here because the xtn shaves the sign bit
253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtzs [[REG2:v[0-9]+\.4s]], [[REG1]]
254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xtn    v0.4h, [[REG2]]
255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
256*9880d681SAndroid Build Coastguard Worker  %1 = fptoui<4 x half> %a to <4 x i8>
257*9880d681SAndroid Build Coastguard Worker  ret <4 x i8> %1
258*9880d681SAndroid Build Coastguard Worker}
259*9880d681SAndroid Build Coastguard Worker
260*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @fptoui_i16(<4 x half> %a) #0 {
261*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fptoui_i16:
262*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtl  [[REG1:v[0-9]+\.4s]], v0.4h
263*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: fcvtzu [[REG2:v[0-9]+\.4s]], [[REG1]]
264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xtn    v0.4h, [[REG2]]
265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret
266*9880d681SAndroid Build Coastguard Worker  %1 = fptoui<4 x half> %a to <4 x i16>
267*9880d681SAndroid Build Coastguard Worker  ret <4 x i16> %1
268*9880d681SAndroid Build Coastguard Worker}
269*9880d681SAndroid Build Coastguard Worker
270*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
271*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_une:
272*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
273*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
274*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
275*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
276*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
277*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
278*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
279*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
280*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, ne
281*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, ne
282*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, ne
283*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, ne
284*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_une(<4 x half> %a, <4 x half> %b) #0 {
285*9880d681SAndroid Build Coastguard Worker  %1 = fcmp une <4 x half> %a, %b
286*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
287*9880d681SAndroid Build Coastguard Worker}
288*9880d681SAndroid Build Coastguard Worker
289*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
290*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_ueq:
291*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
292*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
293*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
294*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
295*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
296*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
297*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
298*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
299*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm [[REG1:w[0-9]+]], eq
300*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm [[REG2:w[0-9]+]], eq
301*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm [[REG3:w[0-9]+]], eq
302*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm [[REG4:w[0-9]+]], eq
303*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csinv {{.*}}, [[REG1]], wzr, vc
304*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csinv {{.*}}, [[REG2]], wzr, vc
305*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csinv {{.*}}, [[REG3]], wzr, vc
306*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csinv {{.*}}, [[REG4]], wzr, vc
307*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_ueq(<4 x half> %a, <4 x half> %b) #0 {
308*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ueq <4 x half> %a, %b
309*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
310*9880d681SAndroid Build Coastguard Worker}
311*9880d681SAndroid Build Coastguard Worker
312*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
313*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_ugt:
314*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
315*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
316*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
317*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
318*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
319*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
320*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
321*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
322*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, hi
323*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, hi
324*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, hi
325*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, hi
326*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_ugt(<4 x half> %a, <4 x half> %b) #0 {
327*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ugt <4 x half> %a, %b
328*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
329*9880d681SAndroid Build Coastguard Worker}
330*9880d681SAndroid Build Coastguard Worker
331*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
332*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_uge:
333*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
334*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
335*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
336*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
337*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
338*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
339*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
340*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
341*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, pl
342*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, pl
343*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, pl
344*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, pl
345*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_uge(<4 x half> %a, <4 x half> %b) #0 {
346*9880d681SAndroid Build Coastguard Worker  %1 = fcmp uge <4 x half> %a, %b
347*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
348*9880d681SAndroid Build Coastguard Worker}
349*9880d681SAndroid Build Coastguard Worker
350*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
351*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_ult:
352*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
353*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
354*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
355*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
356*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
357*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
358*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
359*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
360*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, lt
361*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, lt
362*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, lt
363*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, lt
364*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_ult(<4 x half> %a, <4 x half> %b) #0 {
365*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ult <4 x half> %a, %b
366*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
367*9880d681SAndroid Build Coastguard Worker}
368*9880d681SAndroid Build Coastguard Worker
369*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
370*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_ule:
371*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
372*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
373*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
374*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
375*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
376*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
377*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
378*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
379*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, le
380*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, le
381*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, le
382*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, le
383*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_ule(<4 x half> %a, <4 x half> %b) #0 {
384*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ule <4 x half> %a, %b
385*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
386*9880d681SAndroid Build Coastguard Worker}
387*9880d681SAndroid Build Coastguard Worker
388*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
389*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_uno:
390*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
391*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
392*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
393*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
394*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
395*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
396*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
397*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
398*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, vs
399*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, vs
400*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, vs
401*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, vs
402*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_uno(<4 x half> %a, <4 x half> %b) #0 {
403*9880d681SAndroid Build Coastguard Worker  %1 = fcmp uno <4 x half> %a, %b
404*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
405*9880d681SAndroid Build Coastguard Worker}
406*9880d681SAndroid Build Coastguard Worker
407*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
408*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_one:
409*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
410*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
411*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
412*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
413*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
414*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
415*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
416*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
417*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm [[REG1:w[0-9]+]], mi
418*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm [[REG2:w[0-9]+]], mi
419*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm [[REG3:w[0-9]+]], mi
420*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm [[REG4:w[0-9]+]], mi
421*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csinv {{.*}}, [[REG1]], wzr, le
422*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csinv {{.*}}, [[REG2]], wzr, le
423*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csinv {{.*}}, [[REG3]], wzr, le
424*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csinv {{.*}}, [[REG4]], wzr, le
425*9880d681SAndroid Build Coastguard Worker
426*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_one(<4 x half> %a, <4 x half> %b) #0 {
427*9880d681SAndroid Build Coastguard Worker  %1 = fcmp one <4 x half> %a, %b
428*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
429*9880d681SAndroid Build Coastguard Worker}
430*9880d681SAndroid Build Coastguard Worker
431*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
432*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_oeq:
433*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
434*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
435*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
436*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
437*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
438*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
439*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
440*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
441*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, eq
442*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, eq
443*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, eq
444*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, eq
445*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_oeq(<4 x half> %a, <4 x half> %b) #0 {
446*9880d681SAndroid Build Coastguard Worker  %1 = fcmp oeq <4 x half> %a, %b
447*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
448*9880d681SAndroid Build Coastguard Worker}
449*9880d681SAndroid Build Coastguard Worker
450*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
451*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_ogt:
452*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
453*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
454*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
455*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
456*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
457*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
458*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
459*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
460*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, gt
461*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, gt
462*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, gt
463*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, gt
464*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_ogt(<4 x half> %a, <4 x half> %b) #0 {
465*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ogt <4 x half> %a, %b
466*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
467*9880d681SAndroid Build Coastguard Worker}
468*9880d681SAndroid Build Coastguard Worker
469*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
470*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_oge:
471*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
472*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
473*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
474*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
475*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
476*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
477*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
478*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
479*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, ge
480*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, ge
481*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, ge
482*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, ge
483*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_oge(<4 x half> %a, <4 x half> %b) #0 {
484*9880d681SAndroid Build Coastguard Worker  %1 = fcmp oge <4 x half> %a, %b
485*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
486*9880d681SAndroid Build Coastguard Worker}
487*9880d681SAndroid Build Coastguard Worker
488*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
489*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_olt:
490*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
491*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
492*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
493*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
494*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
495*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
496*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
497*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
498*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, mi
499*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, mi
500*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, mi
501*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, mi
502*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_olt(<4 x half> %a, <4 x half> %b) #0 {
503*9880d681SAndroid Build Coastguard Worker  %1 = fcmp olt <4 x half> %a, %b
504*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
505*9880d681SAndroid Build Coastguard Worker}
506*9880d681SAndroid Build Coastguard Worker
507*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
508*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_ole:
509*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
510*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
511*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
512*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
513*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
514*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
515*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
516*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
517*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, ls
518*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, ls
519*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, ls
520*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, ls
521*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_ole(<4 x half> %a, <4 x half> %b) #0 {
522*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ole <4 x half> %a, %b
523*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
524*9880d681SAndroid Build Coastguard Worker}
525*9880d681SAndroid Build Coastguard Worker
526*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
527*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_fcmp_ord:
528*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
529*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
530*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
531*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
532*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
533*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
534*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
535*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: fcvt
536*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, vc
537*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, vc
538*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, vc
539*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: csetm {{.*}}, vc
540*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test_fcmp_ord(<4 x half> %a, <4 x half> %b) #0 {
541*9880d681SAndroid Build Coastguard Worker  %1 = fcmp ord <4 x half> %a, %b
542*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %1
543*9880d681SAndroid Build Coastguard Worker}
544*9880d681SAndroid Build Coastguard Worker
545*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind }
546