1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mattr=+sve -force-streaming-compatible < %s | FileCheck %s
3 ; RUN: llc -mattr=+sme -force-streaming < %s | FileCheck %s
4 ; RUN: llc -force-streaming-compatible < %s | FileCheck %s --check-prefix=NONEON-NOSVE
6 target triple = "aarch64-unknown-linux-gnu"
12 define <2 x i16> @fcmp_oeq_v2f16(<2 x half> %op1, <2 x half> %op2) {
13 ; CHECK-LABEL: fcmp_oeq_v2f16:
15 ; CHECK-NEXT: ptrue p0.h, vl4
16 ; CHECK-NEXT: // kill: def $d1 killed $d1 def $z1
17 ; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
18 ; CHECK-NEXT: fcmeq p0.h, p0/z, z0.h, z1.h
19 ; CHECK-NEXT: punpklo p0.h, p0.b
20 ; CHECK-NEXT: mov z0.s, p0/z, #-1 // =0xffffffffffffffff
21 ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
24 ; NONEON-NOSVE-LABEL: fcmp_oeq_v2f16:
25 ; NONEON-NOSVE: // %bb.0:
26 ; NONEON-NOSVE-NEXT: sub sp, sp, #32
27 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 32
28 ; NONEON-NOSVE-NEXT: stp d0, d1, [sp, #8]
29 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
30 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
31 ; NONEON-NOSVE-NEXT: fcvt s0, h0
32 ; NONEON-NOSVE-NEXT: fcvt s1, h1
33 ; NONEON-NOSVE-NEXT: fcmp s1, s0
34 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
35 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
36 ; NONEON-NOSVE-NEXT: fcvt s0, h0
37 ; NONEON-NOSVE-NEXT: fcvt s1, h1
38 ; NONEON-NOSVE-NEXT: csetm w9, eq
39 ; NONEON-NOSVE-NEXT: fcmp s1, s0
40 ; NONEON-NOSVE-NEXT: csetm w8, eq
41 ; NONEON-NOSVE-NEXT: stp w8, w9, [sp, #24]
42 ; NONEON-NOSVE-NEXT: ldr d0, [sp, #24]
43 ; NONEON-NOSVE-NEXT: add sp, sp, #32
44 ; NONEON-NOSVE-NEXT: ret
45 %cmp = fcmp oeq <2 x half> %op1, %op2
46 %sext = sext <2 x i1> %cmp to <2 x i16>
50 define <4 x i16> @fcmp_oeq_v4f16(<4 x half> %op1, <4 x half> %op2) {
51 ; CHECK-LABEL: fcmp_oeq_v4f16:
53 ; CHECK-NEXT: ptrue p0.h, vl4
54 ; CHECK-NEXT: // kill: def $d1 killed $d1 def $z1
55 ; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
56 ; CHECK-NEXT: fcmeq p0.h, p0/z, z0.h, z1.h
57 ; CHECK-NEXT: mov z0.h, p0/z, #-1 // =0xffffffffffffffff
58 ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
61 ; NONEON-NOSVE-LABEL: fcmp_oeq_v4f16:
62 ; NONEON-NOSVE: // %bb.0:
63 ; NONEON-NOSVE-NEXT: sub sp, sp, #32
64 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 32
65 ; NONEON-NOSVE-NEXT: stp d0, d1, [sp, #8]
66 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
67 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
68 ; NONEON-NOSVE-NEXT: fcvt s0, h0
69 ; NONEON-NOSVE-NEXT: fcvt s1, h1
70 ; NONEON-NOSVE-NEXT: fcmp s1, s0
71 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
72 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
73 ; NONEON-NOSVE-NEXT: fcvt s0, h0
74 ; NONEON-NOSVE-NEXT: fcvt s1, h1
75 ; NONEON-NOSVE-NEXT: csetm w8, eq
76 ; NONEON-NOSVE-NEXT: strh w8, [sp, #30]
77 ; NONEON-NOSVE-NEXT: fcmp s1, s0
78 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
79 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
80 ; NONEON-NOSVE-NEXT: fcvt s0, h0
81 ; NONEON-NOSVE-NEXT: fcvt s1, h1
82 ; NONEON-NOSVE-NEXT: csetm w8, eq
83 ; NONEON-NOSVE-NEXT: strh w8, [sp, #28]
84 ; NONEON-NOSVE-NEXT: fcmp s1, s0
85 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
86 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
87 ; NONEON-NOSVE-NEXT: fcvt s0, h0
88 ; NONEON-NOSVE-NEXT: fcvt s1, h1
89 ; NONEON-NOSVE-NEXT: csetm w8, eq
90 ; NONEON-NOSVE-NEXT: strh w8, [sp, #26]
91 ; NONEON-NOSVE-NEXT: fcmp s1, s0
92 ; NONEON-NOSVE-NEXT: csetm w8, eq
93 ; NONEON-NOSVE-NEXT: strh w8, [sp, #24]
94 ; NONEON-NOSVE-NEXT: ldr d0, [sp, #24]
95 ; NONEON-NOSVE-NEXT: add sp, sp, #32
96 ; NONEON-NOSVE-NEXT: ret
97 %cmp = fcmp oeq <4 x half> %op1, %op2
98 %sext = sext <4 x i1> %cmp to <4 x i16>
102 define <8 x i16> @fcmp_oeq_v8f16(<8 x half> %op1, <8 x half> %op2) {
103 ; CHECK-LABEL: fcmp_oeq_v8f16:
105 ; CHECK-NEXT: ptrue p0.h, vl8
106 ; CHECK-NEXT: // kill: def $q1 killed $q1 def $z1
107 ; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
108 ; CHECK-NEXT: fcmeq p0.h, p0/z, z0.h, z1.h
109 ; CHECK-NEXT: mov z0.h, p0/z, #-1 // =0xffffffffffffffff
110 ; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
113 ; NONEON-NOSVE-LABEL: fcmp_oeq_v8f16:
114 ; NONEON-NOSVE: // %bb.0:
115 ; NONEON-NOSVE-NEXT: stp q0, q1, [sp, #-48]!
116 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 48
117 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
118 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
119 ; NONEON-NOSVE-NEXT: fcvt s0, h0
120 ; NONEON-NOSVE-NEXT: fcvt s1, h1
121 ; NONEON-NOSVE-NEXT: fcmp s1, s0
122 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
123 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
124 ; NONEON-NOSVE-NEXT: fcvt s0, h0
125 ; NONEON-NOSVE-NEXT: fcvt s1, h1
126 ; NONEON-NOSVE-NEXT: csetm w8, eq
127 ; NONEON-NOSVE-NEXT: strh w8, [sp, #46]
128 ; NONEON-NOSVE-NEXT: fcmp s1, s0
129 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
130 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
131 ; NONEON-NOSVE-NEXT: fcvt s0, h0
132 ; NONEON-NOSVE-NEXT: fcvt s1, h1
133 ; NONEON-NOSVE-NEXT: csetm w8, eq
134 ; NONEON-NOSVE-NEXT: strh w8, [sp, #44]
135 ; NONEON-NOSVE-NEXT: fcmp s1, s0
136 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
137 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
138 ; NONEON-NOSVE-NEXT: fcvt s0, h0
139 ; NONEON-NOSVE-NEXT: fcvt s1, h1
140 ; NONEON-NOSVE-NEXT: csetm w8, eq
141 ; NONEON-NOSVE-NEXT: strh w8, [sp, #42]
142 ; NONEON-NOSVE-NEXT: fcmp s1, s0
143 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
144 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
145 ; NONEON-NOSVE-NEXT: fcvt s0, h0
146 ; NONEON-NOSVE-NEXT: fcvt s1, h1
147 ; NONEON-NOSVE-NEXT: csetm w8, eq
148 ; NONEON-NOSVE-NEXT: strh w8, [sp, #40]
149 ; NONEON-NOSVE-NEXT: fcmp s1, s0
150 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
151 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
152 ; NONEON-NOSVE-NEXT: fcvt s0, h0
153 ; NONEON-NOSVE-NEXT: fcvt s1, h1
154 ; NONEON-NOSVE-NEXT: csetm w8, eq
155 ; NONEON-NOSVE-NEXT: strh w8, [sp, #38]
156 ; NONEON-NOSVE-NEXT: fcmp s1, s0
157 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
158 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
159 ; NONEON-NOSVE-NEXT: fcvt s0, h0
160 ; NONEON-NOSVE-NEXT: fcvt s1, h1
161 ; NONEON-NOSVE-NEXT: csetm w8, eq
162 ; NONEON-NOSVE-NEXT: strh w8, [sp, #36]
163 ; NONEON-NOSVE-NEXT: fcmp s1, s0
164 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
165 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
166 ; NONEON-NOSVE-NEXT: fcvt s0, h0
167 ; NONEON-NOSVE-NEXT: fcvt s1, h1
168 ; NONEON-NOSVE-NEXT: csetm w8, eq
169 ; NONEON-NOSVE-NEXT: strh w8, [sp, #34]
170 ; NONEON-NOSVE-NEXT: fcmp s1, s0
171 ; NONEON-NOSVE-NEXT: csetm w8, eq
172 ; NONEON-NOSVE-NEXT: strh w8, [sp, #32]
173 ; NONEON-NOSVE-NEXT: ldr q0, [sp, #32]
174 ; NONEON-NOSVE-NEXT: add sp, sp, #48
175 ; NONEON-NOSVE-NEXT: ret
176 %cmp = fcmp oeq <8 x half> %op1, %op2
177 %sext = sext <8 x i1> %cmp to <8 x i16>
181 define void @fcmp_oeq_v16f16(ptr %a, ptr %b, ptr %c) {
182 ; CHECK-LABEL: fcmp_oeq_v16f16:
184 ; CHECK-NEXT: ldp q0, q3, [x1]
185 ; CHECK-NEXT: ptrue p0.h, vl8
186 ; CHECK-NEXT: ldp q1, q2, [x0]
187 ; CHECK-NEXT: fcmeq p1.h, p0/z, z1.h, z0.h
188 ; CHECK-NEXT: fcmeq p0.h, p0/z, z2.h, z3.h
189 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
190 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
191 ; CHECK-NEXT: stp q0, q1, [x2]
194 ; NONEON-NOSVE-LABEL: fcmp_oeq_v16f16:
195 ; NONEON-NOSVE: // %bb.0:
196 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
197 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
198 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
199 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
200 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
201 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
202 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
203 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
204 ; NONEON-NOSVE-NEXT: fcvt s0, h0
205 ; NONEON-NOSVE-NEXT: fcvt s1, h1
206 ; NONEON-NOSVE-NEXT: fcmp s1, s0
207 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
208 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
209 ; NONEON-NOSVE-NEXT: fcvt s0, h0
210 ; NONEON-NOSVE-NEXT: fcvt s1, h1
211 ; NONEON-NOSVE-NEXT: csetm w8, eq
212 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
213 ; NONEON-NOSVE-NEXT: fcmp s1, s0
214 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
215 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
216 ; NONEON-NOSVE-NEXT: fcvt s0, h0
217 ; NONEON-NOSVE-NEXT: fcvt s1, h1
218 ; NONEON-NOSVE-NEXT: csetm w8, eq
219 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
220 ; NONEON-NOSVE-NEXT: fcmp s1, s0
221 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
222 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
223 ; NONEON-NOSVE-NEXT: fcvt s0, h0
224 ; NONEON-NOSVE-NEXT: fcvt s1, h1
225 ; NONEON-NOSVE-NEXT: csetm w8, eq
226 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
227 ; NONEON-NOSVE-NEXT: fcmp s1, s0
228 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
229 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
230 ; NONEON-NOSVE-NEXT: fcvt s0, h0
231 ; NONEON-NOSVE-NEXT: fcvt s1, h1
232 ; NONEON-NOSVE-NEXT: csetm w8, eq
233 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
234 ; NONEON-NOSVE-NEXT: fcmp s1, s0
235 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
236 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
237 ; NONEON-NOSVE-NEXT: fcvt s0, h0
238 ; NONEON-NOSVE-NEXT: fcvt s1, h1
239 ; NONEON-NOSVE-NEXT: csetm w8, eq
240 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
241 ; NONEON-NOSVE-NEXT: fcmp s1, s0
242 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
243 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
244 ; NONEON-NOSVE-NEXT: fcvt s0, h0
245 ; NONEON-NOSVE-NEXT: fcvt s1, h1
246 ; NONEON-NOSVE-NEXT: csetm w8, eq
247 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
248 ; NONEON-NOSVE-NEXT: fcmp s1, s0
249 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
250 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
251 ; NONEON-NOSVE-NEXT: fcvt s0, h0
252 ; NONEON-NOSVE-NEXT: fcvt s1, h1
253 ; NONEON-NOSVE-NEXT: csetm w8, eq
254 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
255 ; NONEON-NOSVE-NEXT: fcmp s1, s0
256 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
257 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
258 ; NONEON-NOSVE-NEXT: fcvt s0, h0
259 ; NONEON-NOSVE-NEXT: fcvt s1, h1
260 ; NONEON-NOSVE-NEXT: csetm w8, eq
261 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
262 ; NONEON-NOSVE-NEXT: fcmp s1, s0
263 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
264 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
265 ; NONEON-NOSVE-NEXT: fcvt s0, h0
266 ; NONEON-NOSVE-NEXT: fcvt s1, h1
267 ; NONEON-NOSVE-NEXT: csetm w8, eq
268 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
269 ; NONEON-NOSVE-NEXT: fcmp s1, s0
270 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
271 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
272 ; NONEON-NOSVE-NEXT: fcvt s0, h0
273 ; NONEON-NOSVE-NEXT: fcvt s1, h1
274 ; NONEON-NOSVE-NEXT: csetm w8, eq
275 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
276 ; NONEON-NOSVE-NEXT: fcmp s1, s0
277 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
278 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
279 ; NONEON-NOSVE-NEXT: fcvt s0, h0
280 ; NONEON-NOSVE-NEXT: fcvt s1, h1
281 ; NONEON-NOSVE-NEXT: csetm w8, eq
282 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
283 ; NONEON-NOSVE-NEXT: fcmp s1, s0
284 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
285 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
286 ; NONEON-NOSVE-NEXT: fcvt s0, h0
287 ; NONEON-NOSVE-NEXT: fcvt s1, h1
288 ; NONEON-NOSVE-NEXT: csetm w8, eq
289 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
290 ; NONEON-NOSVE-NEXT: fcmp s1, s0
291 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
292 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
293 ; NONEON-NOSVE-NEXT: fcvt s0, h0
294 ; NONEON-NOSVE-NEXT: fcvt s1, h1
295 ; NONEON-NOSVE-NEXT: csetm w8, eq
296 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
297 ; NONEON-NOSVE-NEXT: fcmp s1, s0
298 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
299 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
300 ; NONEON-NOSVE-NEXT: fcvt s0, h0
301 ; NONEON-NOSVE-NEXT: fcvt s1, h1
302 ; NONEON-NOSVE-NEXT: csetm w8, eq
303 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
304 ; NONEON-NOSVE-NEXT: fcmp s1, s0
305 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
306 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
307 ; NONEON-NOSVE-NEXT: fcvt s0, h0
308 ; NONEON-NOSVE-NEXT: fcvt s1, h1
309 ; NONEON-NOSVE-NEXT: csetm w8, eq
310 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
311 ; NONEON-NOSVE-NEXT: fcmp s1, s0
312 ; NONEON-NOSVE-NEXT: csetm w8, eq
313 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
314 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
315 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
316 ; NONEON-NOSVE-NEXT: add sp, sp, #96
317 ; NONEON-NOSVE-NEXT: ret
318 %op1 = load <16 x half>, ptr %a
319 %op2 = load <16 x half>, ptr %b
320 %cmp = fcmp oeq <16 x half> %op1, %op2
321 %sext = sext <16 x i1> %cmp to <16 x i16>
322 store <16 x i16> %sext, ptr %c
326 define <2 x i32> @fcmp_oeq_v2f32(<2 x float> %op1, <2 x float> %op2) {
327 ; CHECK-LABEL: fcmp_oeq_v2f32:
329 ; CHECK-NEXT: ptrue p0.s, vl2
330 ; CHECK-NEXT: // kill: def $d1 killed $d1 def $z1
331 ; CHECK-NEXT: // kill: def $d0 killed $d0 def $z0
332 ; CHECK-NEXT: fcmeq p0.s, p0/z, z0.s, z1.s
333 ; CHECK-NEXT: mov z0.s, p0/z, #-1 // =0xffffffffffffffff
334 ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
337 ; NONEON-NOSVE-LABEL: fcmp_oeq_v2f32:
338 ; NONEON-NOSVE: // %bb.0:
339 ; NONEON-NOSVE-NEXT: sub sp, sp, #32
340 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 32
341 ; NONEON-NOSVE-NEXT: stp d0, d1, [sp, #8]
342 ; NONEON-NOSVE-NEXT: ldp s0, s2, [sp, #16]
343 ; NONEON-NOSVE-NEXT: ldp s1, s3, [sp, #8]
344 ; NONEON-NOSVE-NEXT: fcmp s3, s2
345 ; NONEON-NOSVE-NEXT: csetm w9, eq
346 ; NONEON-NOSVE-NEXT: fcmp s1, s0
347 ; NONEON-NOSVE-NEXT: csetm w8, eq
348 ; NONEON-NOSVE-NEXT: stp w8, w9, [sp, #24]
349 ; NONEON-NOSVE-NEXT: ldr d0, [sp, #24]
350 ; NONEON-NOSVE-NEXT: add sp, sp, #32
351 ; NONEON-NOSVE-NEXT: ret
352 %cmp = fcmp oeq <2 x float> %op1, %op2
353 %sext = sext <2 x i1> %cmp to <2 x i32>
357 define <4 x i32> @fcmp_oeq_v4f32(<4 x float> %op1, <4 x float> %op2) {
358 ; CHECK-LABEL: fcmp_oeq_v4f32:
360 ; CHECK-NEXT: ptrue p0.s, vl4
361 ; CHECK-NEXT: // kill: def $q1 killed $q1 def $z1
362 ; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
363 ; CHECK-NEXT: fcmeq p0.s, p0/z, z0.s, z1.s
364 ; CHECK-NEXT: mov z0.s, p0/z, #-1 // =0xffffffffffffffff
365 ; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
368 ; NONEON-NOSVE-LABEL: fcmp_oeq_v4f32:
369 ; NONEON-NOSVE: // %bb.0:
370 ; NONEON-NOSVE-NEXT: stp q0, q1, [sp, #-48]!
371 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 48
372 ; NONEON-NOSVE-NEXT: ldp s0, s2, [sp, #24]
373 ; NONEON-NOSVE-NEXT: ldp s1, s3, [sp, #8]
374 ; NONEON-NOSVE-NEXT: fcmp s3, s2
375 ; NONEON-NOSVE-NEXT: csetm w9, eq
376 ; NONEON-NOSVE-NEXT: fcmp s1, s0
377 ; NONEON-NOSVE-NEXT: ldp s0, s2, [sp, #16]
378 ; NONEON-NOSVE-NEXT: ldp s1, s3, [sp]
379 ; NONEON-NOSVE-NEXT: csetm w8, eq
380 ; NONEON-NOSVE-NEXT: stp w8, w9, [sp, #40]
381 ; NONEON-NOSVE-NEXT: fcmp s3, s2
382 ; NONEON-NOSVE-NEXT: csetm w9, eq
383 ; NONEON-NOSVE-NEXT: fcmp s1, s0
384 ; NONEON-NOSVE-NEXT: csetm w8, eq
385 ; NONEON-NOSVE-NEXT: stp w8, w9, [sp, #32]
386 ; NONEON-NOSVE-NEXT: ldr q0, [sp, #32]
387 ; NONEON-NOSVE-NEXT: add sp, sp, #48
388 ; NONEON-NOSVE-NEXT: ret
389 %cmp = fcmp oeq <4 x float> %op1, %op2
390 %sext = sext <4 x i1> %cmp to <4 x i32>
394 define void @fcmp_oeq_v8f32(ptr %a, ptr %b, ptr %c) {
395 ; CHECK-LABEL: fcmp_oeq_v8f32:
397 ; CHECK-NEXT: ldp q0, q3, [x1]
398 ; CHECK-NEXT: ptrue p0.s, vl4
399 ; CHECK-NEXT: ldp q1, q2, [x0]
400 ; CHECK-NEXT: fcmeq p1.s, p0/z, z1.s, z0.s
401 ; CHECK-NEXT: fcmeq p0.s, p0/z, z2.s, z3.s
402 ; CHECK-NEXT: mov z0.s, p1/z, #-1 // =0xffffffffffffffff
403 ; CHECK-NEXT: mov z1.s, p0/z, #-1 // =0xffffffffffffffff
404 ; CHECK-NEXT: stp q0, q1, [x2]
407 ; NONEON-NOSVE-LABEL: fcmp_oeq_v8f32:
408 ; NONEON-NOSVE: // %bb.0:
409 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
410 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
411 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
412 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
413 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
414 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
415 ; NONEON-NOSVE-NEXT: ldp s0, s2, [sp, #56]
416 ; NONEON-NOSVE-NEXT: ldp s1, s3, [sp, #40]
417 ; NONEON-NOSVE-NEXT: fcmp s3, s2
418 ; NONEON-NOSVE-NEXT: csetm w9, eq
419 ; NONEON-NOSVE-NEXT: fcmp s1, s0
420 ; NONEON-NOSVE-NEXT: ldp s0, s2, [sp, #48]
421 ; NONEON-NOSVE-NEXT: ldp s1, s3, [sp, #32]
422 ; NONEON-NOSVE-NEXT: csetm w8, eq
423 ; NONEON-NOSVE-NEXT: stp w8, w9, [sp, #88]
424 ; NONEON-NOSVE-NEXT: fcmp s3, s2
425 ; NONEON-NOSVE-NEXT: csetm w9, eq
426 ; NONEON-NOSVE-NEXT: fcmp s1, s0
427 ; NONEON-NOSVE-NEXT: ldp s0, s2, [sp, #24]
428 ; NONEON-NOSVE-NEXT: ldp s1, s3, [sp, #8]
429 ; NONEON-NOSVE-NEXT: csetm w8, eq
430 ; NONEON-NOSVE-NEXT: stp w8, w9, [sp, #80]
431 ; NONEON-NOSVE-NEXT: fcmp s3, s2
432 ; NONEON-NOSVE-NEXT: csetm w9, eq
433 ; NONEON-NOSVE-NEXT: fcmp s1, s0
434 ; NONEON-NOSVE-NEXT: ldp s0, s2, [sp, #16]
435 ; NONEON-NOSVE-NEXT: ldp s1, s3, [sp]
436 ; NONEON-NOSVE-NEXT: csetm w8, eq
437 ; NONEON-NOSVE-NEXT: stp w8, w9, [sp, #72]
438 ; NONEON-NOSVE-NEXT: fcmp s3, s2
439 ; NONEON-NOSVE-NEXT: csetm w9, eq
440 ; NONEON-NOSVE-NEXT: fcmp s1, s0
441 ; NONEON-NOSVE-NEXT: csetm w8, eq
442 ; NONEON-NOSVE-NEXT: stp w8, w9, [sp, #64]
443 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
444 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
445 ; NONEON-NOSVE-NEXT: add sp, sp, #96
446 ; NONEON-NOSVE-NEXT: ret
447 %op1 = load <8 x float>, ptr %a
448 %op2 = load <8 x float>, ptr %b
449 %cmp = fcmp oeq <8 x float> %op1, %op2
450 %sext = sext <8 x i1> %cmp to <8 x i32>
451 store <8 x i32> %sext, ptr %c
455 define <1 x i64> @fcmp_oeq_v1f64(<1 x double> %op1, <1 x double> %op2) {
456 ; CHECK-LABEL: fcmp_oeq_v1f64:
458 ; CHECK-NEXT: fcmp d0, d1
459 ; CHECK-NEXT: csetm x8, eq
460 ; CHECK-NEXT: mov z0.d, x8
461 ; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
464 ; NONEON-NOSVE-LABEL: fcmp_oeq_v1f64:
465 ; NONEON-NOSVE: // %bb.0:
466 ; NONEON-NOSVE-NEXT: sub sp, sp, #16
467 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 16
468 ; NONEON-NOSVE-NEXT: fcmp d0, d1
469 ; NONEON-NOSVE-NEXT: csetm x8, eq
470 ; NONEON-NOSVE-NEXT: str x8, [sp, #8]
471 ; NONEON-NOSVE-NEXT: ldr d0, [sp, #8]
472 ; NONEON-NOSVE-NEXT: add sp, sp, #16
473 ; NONEON-NOSVE-NEXT: ret
474 %cmp = fcmp oeq <1 x double> %op1, %op2
475 %sext = sext <1 x i1> %cmp to <1 x i64>
479 define <2 x i64> @fcmp_oeq_v2f64(<2 x double> %op1, <2 x double> %op2) {
480 ; CHECK-LABEL: fcmp_oeq_v2f64:
482 ; CHECK-NEXT: ptrue p0.d, vl2
483 ; CHECK-NEXT: // kill: def $q1 killed $q1 def $z1
484 ; CHECK-NEXT: // kill: def $q0 killed $q0 def $z0
485 ; CHECK-NEXT: fcmeq p0.d, p0/z, z0.d, z1.d
486 ; CHECK-NEXT: mov z0.d, p0/z, #-1 // =0xffffffffffffffff
487 ; CHECK-NEXT: // kill: def $q0 killed $q0 killed $z0
490 ; NONEON-NOSVE-LABEL: fcmp_oeq_v2f64:
491 ; NONEON-NOSVE: // %bb.0:
492 ; NONEON-NOSVE-NEXT: stp q0, q1, [sp, #-48]!
493 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 48
494 ; NONEON-NOSVE-NEXT: ldp d0, d2, [sp, #16]
495 ; NONEON-NOSVE-NEXT: ldp d1, d3, [sp]
496 ; NONEON-NOSVE-NEXT: fcmp d3, d2
497 ; NONEON-NOSVE-NEXT: csetm x9, eq
498 ; NONEON-NOSVE-NEXT: fcmp d1, d0
499 ; NONEON-NOSVE-NEXT: csetm x8, eq
500 ; NONEON-NOSVE-NEXT: stp x8, x9, [sp, #32]
501 ; NONEON-NOSVE-NEXT: ldr q0, [sp, #32]
502 ; NONEON-NOSVE-NEXT: add sp, sp, #48
503 ; NONEON-NOSVE-NEXT: ret
504 %cmp = fcmp oeq <2 x double> %op1, %op2
505 %sext = sext <2 x i1> %cmp to <2 x i64>
509 define void @fcmp_oeq_v4f64(ptr %a, ptr %b, ptr %c) {
510 ; CHECK-LABEL: fcmp_oeq_v4f64:
512 ; CHECK-NEXT: ldp q0, q3, [x1]
513 ; CHECK-NEXT: ptrue p0.d, vl2
514 ; CHECK-NEXT: ldp q1, q2, [x0]
515 ; CHECK-NEXT: fcmeq p1.d, p0/z, z1.d, z0.d
516 ; CHECK-NEXT: fcmeq p0.d, p0/z, z2.d, z3.d
517 ; CHECK-NEXT: mov z0.d, p1/z, #-1 // =0xffffffffffffffff
518 ; CHECK-NEXT: mov z1.d, p0/z, #-1 // =0xffffffffffffffff
519 ; CHECK-NEXT: stp q0, q1, [x2]
522 ; NONEON-NOSVE-LABEL: fcmp_oeq_v4f64:
523 ; NONEON-NOSVE: // %bb.0:
524 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
525 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
526 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
527 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
528 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
529 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
530 ; NONEON-NOSVE-NEXT: ldp d0, d2, [sp, #48]
531 ; NONEON-NOSVE-NEXT: ldp d1, d3, [sp, #32]
532 ; NONEON-NOSVE-NEXT: fcmp d3, d2
533 ; NONEON-NOSVE-NEXT: csetm x9, eq
534 ; NONEON-NOSVE-NEXT: fcmp d1, d0
535 ; NONEON-NOSVE-NEXT: ldp d0, d2, [sp, #16]
536 ; NONEON-NOSVE-NEXT: ldp d1, d3, [sp]
537 ; NONEON-NOSVE-NEXT: csetm x8, eq
538 ; NONEON-NOSVE-NEXT: stp x8, x9, [sp, #80]
539 ; NONEON-NOSVE-NEXT: fcmp d3, d2
540 ; NONEON-NOSVE-NEXT: csetm x9, eq
541 ; NONEON-NOSVE-NEXT: fcmp d1, d0
542 ; NONEON-NOSVE-NEXT: csetm x8, eq
543 ; NONEON-NOSVE-NEXT: stp x8, x9, [sp, #64]
544 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
545 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
546 ; NONEON-NOSVE-NEXT: add sp, sp, #96
547 ; NONEON-NOSVE-NEXT: ret
548 %op1 = load <4 x double>, ptr %a
549 %op2 = load <4 x double>, ptr %b
550 %cmp = fcmp oeq <4 x double> %op1, %op2
551 %sext = sext <4 x i1> %cmp to <4 x i64>
552 store <4 x i64> %sext, ptr %c
560 define void @fcmp_ueq_v16f16(ptr %a, ptr %b, ptr %c) {
561 ; CHECK-LABEL: fcmp_ueq_v16f16:
563 ; CHECK-NEXT: ldp q0, q3, [x1]
564 ; CHECK-NEXT: ptrue p0.h, vl8
565 ; CHECK-NEXT: ldp q1, q2, [x0]
566 ; CHECK-NEXT: fcmuo p1.h, p0/z, z1.h, z0.h
567 ; CHECK-NEXT: fcmeq p2.h, p0/z, z1.h, z0.h
568 ; CHECK-NEXT: fcmuo p3.h, p0/z, z2.h, z3.h
569 ; CHECK-NEXT: fcmeq p0.h, p0/z, z2.h, z3.h
570 ; CHECK-NEXT: mov p1.b, p2/m, p2.b
571 ; CHECK-NEXT: sel p0.b, p0, p0.b, p3.b
572 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
573 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
574 ; CHECK-NEXT: stp q0, q1, [x2]
577 ; NONEON-NOSVE-LABEL: fcmp_ueq_v16f16:
578 ; NONEON-NOSVE: // %bb.0:
579 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
580 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
581 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
582 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
583 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
584 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
585 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
586 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
587 ; NONEON-NOSVE-NEXT: fcvt s0, h0
588 ; NONEON-NOSVE-NEXT: fcvt s1, h1
589 ; NONEON-NOSVE-NEXT: fcmp s1, s0
590 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
591 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
592 ; NONEON-NOSVE-NEXT: fcvt s0, h0
593 ; NONEON-NOSVE-NEXT: fcvt s1, h1
594 ; NONEON-NOSVE-NEXT: csetm w8, eq
595 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
596 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
597 ; NONEON-NOSVE-NEXT: fcmp s1, s0
598 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
599 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
600 ; NONEON-NOSVE-NEXT: fcvt s0, h0
601 ; NONEON-NOSVE-NEXT: fcvt s1, h1
602 ; NONEON-NOSVE-NEXT: csetm w8, eq
603 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
604 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
605 ; NONEON-NOSVE-NEXT: fcmp s1, s0
606 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
607 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
608 ; NONEON-NOSVE-NEXT: fcvt s0, h0
609 ; NONEON-NOSVE-NEXT: fcvt s1, h1
610 ; NONEON-NOSVE-NEXT: csetm w8, eq
611 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
612 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
613 ; NONEON-NOSVE-NEXT: fcmp s1, s0
614 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
615 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
616 ; NONEON-NOSVE-NEXT: fcvt s0, h0
617 ; NONEON-NOSVE-NEXT: fcvt s1, h1
618 ; NONEON-NOSVE-NEXT: csetm w8, eq
619 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
620 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
621 ; NONEON-NOSVE-NEXT: fcmp s1, s0
622 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
623 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
624 ; NONEON-NOSVE-NEXT: fcvt s0, h0
625 ; NONEON-NOSVE-NEXT: fcvt s1, h1
626 ; NONEON-NOSVE-NEXT: csetm w8, eq
627 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
628 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
629 ; NONEON-NOSVE-NEXT: fcmp s1, s0
630 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
631 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
632 ; NONEON-NOSVE-NEXT: fcvt s0, h0
633 ; NONEON-NOSVE-NEXT: fcvt s1, h1
634 ; NONEON-NOSVE-NEXT: csetm w8, eq
635 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
636 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
637 ; NONEON-NOSVE-NEXT: fcmp s1, s0
638 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
639 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
640 ; NONEON-NOSVE-NEXT: fcvt s0, h0
641 ; NONEON-NOSVE-NEXT: fcvt s1, h1
642 ; NONEON-NOSVE-NEXT: csetm w8, eq
643 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
644 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
645 ; NONEON-NOSVE-NEXT: fcmp s1, s0
646 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
647 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
648 ; NONEON-NOSVE-NEXT: fcvt s0, h0
649 ; NONEON-NOSVE-NEXT: fcvt s1, h1
650 ; NONEON-NOSVE-NEXT: csetm w8, eq
651 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
652 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
653 ; NONEON-NOSVE-NEXT: fcmp s1, s0
654 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
655 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
656 ; NONEON-NOSVE-NEXT: fcvt s0, h0
657 ; NONEON-NOSVE-NEXT: fcvt s1, h1
658 ; NONEON-NOSVE-NEXT: csetm w8, eq
659 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
660 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
661 ; NONEON-NOSVE-NEXT: fcmp s1, s0
662 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
663 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
664 ; NONEON-NOSVE-NEXT: fcvt s0, h0
665 ; NONEON-NOSVE-NEXT: fcvt s1, h1
666 ; NONEON-NOSVE-NEXT: csetm w8, eq
667 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
668 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
669 ; NONEON-NOSVE-NEXT: fcmp s1, s0
670 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
671 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
672 ; NONEON-NOSVE-NEXT: fcvt s0, h0
673 ; NONEON-NOSVE-NEXT: fcvt s1, h1
674 ; NONEON-NOSVE-NEXT: csetm w8, eq
675 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
676 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
677 ; NONEON-NOSVE-NEXT: fcmp s1, s0
678 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
679 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
680 ; NONEON-NOSVE-NEXT: fcvt s0, h0
681 ; NONEON-NOSVE-NEXT: fcvt s1, h1
682 ; NONEON-NOSVE-NEXT: csetm w8, eq
683 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
684 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
685 ; NONEON-NOSVE-NEXT: fcmp s1, s0
686 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
687 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
688 ; NONEON-NOSVE-NEXT: fcvt s0, h0
689 ; NONEON-NOSVE-NEXT: fcvt s1, h1
690 ; NONEON-NOSVE-NEXT: csetm w8, eq
691 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
692 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
693 ; NONEON-NOSVE-NEXT: fcmp s1, s0
694 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
695 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
696 ; NONEON-NOSVE-NEXT: fcvt s0, h0
697 ; NONEON-NOSVE-NEXT: fcvt s1, h1
698 ; NONEON-NOSVE-NEXT: csetm w8, eq
699 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
700 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
701 ; NONEON-NOSVE-NEXT: fcmp s1, s0
702 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
703 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
704 ; NONEON-NOSVE-NEXT: fcvt s0, h0
705 ; NONEON-NOSVE-NEXT: fcvt s1, h1
706 ; NONEON-NOSVE-NEXT: csetm w8, eq
707 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
708 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
709 ; NONEON-NOSVE-NEXT: fcmp s1, s0
710 ; NONEON-NOSVE-NEXT: csetm w8, eq
711 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, vc
712 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
713 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
714 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
715 ; NONEON-NOSVE-NEXT: add sp, sp, #96
716 ; NONEON-NOSVE-NEXT: ret
717 %op1 = load <16 x half>, ptr %a
718 %op2 = load <16 x half>, ptr %b
719 %cmp = fcmp ueq <16 x half> %op1, %op2
720 %sext = sext <16 x i1> %cmp to <16 x i16>
721 store <16 x i16> %sext, ptr %c
729 define void @fcmp_one_v16f16(ptr %a, ptr %b, ptr %c) {
730 ; CHECK-LABEL: fcmp_one_v16f16:
732 ; CHECK-NEXT: ldp q0, q3, [x1]
733 ; CHECK-NEXT: ptrue p0.h, vl8
734 ; CHECK-NEXT: ldp q1, q2, [x0]
735 ; CHECK-NEXT: fcmgt p1.h, p0/z, z0.h, z1.h
736 ; CHECK-NEXT: fcmgt p2.h, p0/z, z1.h, z0.h
737 ; CHECK-NEXT: fcmgt p3.h, p0/z, z3.h, z2.h
738 ; CHECK-NEXT: fcmgt p0.h, p0/z, z2.h, z3.h
739 ; CHECK-NEXT: mov p1.b, p2/m, p2.b
740 ; CHECK-NEXT: sel p0.b, p0, p0.b, p3.b
741 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
742 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
743 ; CHECK-NEXT: stp q0, q1, [x2]
746 ; NONEON-NOSVE-LABEL: fcmp_one_v16f16:
747 ; NONEON-NOSVE: // %bb.0:
748 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
749 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
750 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
751 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
752 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
753 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
754 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
755 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
756 ; NONEON-NOSVE-NEXT: fcvt s0, h0
757 ; NONEON-NOSVE-NEXT: fcvt s1, h1
758 ; NONEON-NOSVE-NEXT: fcmp s1, s0
759 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
760 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
761 ; NONEON-NOSVE-NEXT: fcvt s0, h0
762 ; NONEON-NOSVE-NEXT: fcvt s1, h1
763 ; NONEON-NOSVE-NEXT: csetm w8, mi
764 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
765 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
766 ; NONEON-NOSVE-NEXT: fcmp s1, s0
767 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
768 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
769 ; NONEON-NOSVE-NEXT: fcvt s0, h0
770 ; NONEON-NOSVE-NEXT: fcvt s1, h1
771 ; NONEON-NOSVE-NEXT: csetm w8, mi
772 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
773 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
774 ; NONEON-NOSVE-NEXT: fcmp s1, s0
775 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
776 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
777 ; NONEON-NOSVE-NEXT: fcvt s0, h0
778 ; NONEON-NOSVE-NEXT: fcvt s1, h1
779 ; NONEON-NOSVE-NEXT: csetm w8, mi
780 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
781 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
782 ; NONEON-NOSVE-NEXT: fcmp s1, s0
783 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
784 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
785 ; NONEON-NOSVE-NEXT: fcvt s0, h0
786 ; NONEON-NOSVE-NEXT: fcvt s1, h1
787 ; NONEON-NOSVE-NEXT: csetm w8, mi
788 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
789 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
790 ; NONEON-NOSVE-NEXT: fcmp s1, s0
791 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
792 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
793 ; NONEON-NOSVE-NEXT: fcvt s0, h0
794 ; NONEON-NOSVE-NEXT: fcvt s1, h1
795 ; NONEON-NOSVE-NEXT: csetm w8, mi
796 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
797 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
798 ; NONEON-NOSVE-NEXT: fcmp s1, s0
799 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
800 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
801 ; NONEON-NOSVE-NEXT: fcvt s0, h0
802 ; NONEON-NOSVE-NEXT: fcvt s1, h1
803 ; NONEON-NOSVE-NEXT: csetm w8, mi
804 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
805 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
806 ; NONEON-NOSVE-NEXT: fcmp s1, s0
807 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
808 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
809 ; NONEON-NOSVE-NEXT: fcvt s0, h0
810 ; NONEON-NOSVE-NEXT: fcvt s1, h1
811 ; NONEON-NOSVE-NEXT: csetm w8, mi
812 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
813 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
814 ; NONEON-NOSVE-NEXT: fcmp s1, s0
815 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
816 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
817 ; NONEON-NOSVE-NEXT: fcvt s0, h0
818 ; NONEON-NOSVE-NEXT: fcvt s1, h1
819 ; NONEON-NOSVE-NEXT: csetm w8, mi
820 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
821 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
822 ; NONEON-NOSVE-NEXT: fcmp s1, s0
823 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
824 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
825 ; NONEON-NOSVE-NEXT: fcvt s0, h0
826 ; NONEON-NOSVE-NEXT: fcvt s1, h1
827 ; NONEON-NOSVE-NEXT: csetm w8, mi
828 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
829 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
830 ; NONEON-NOSVE-NEXT: fcmp s1, s0
831 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
832 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
833 ; NONEON-NOSVE-NEXT: fcvt s0, h0
834 ; NONEON-NOSVE-NEXT: fcvt s1, h1
835 ; NONEON-NOSVE-NEXT: csetm w8, mi
836 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
837 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
838 ; NONEON-NOSVE-NEXT: fcmp s1, s0
839 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
840 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
841 ; NONEON-NOSVE-NEXT: fcvt s0, h0
842 ; NONEON-NOSVE-NEXT: fcvt s1, h1
843 ; NONEON-NOSVE-NEXT: csetm w8, mi
844 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
845 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
846 ; NONEON-NOSVE-NEXT: fcmp s1, s0
847 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
848 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
849 ; NONEON-NOSVE-NEXT: fcvt s0, h0
850 ; NONEON-NOSVE-NEXT: fcvt s1, h1
851 ; NONEON-NOSVE-NEXT: csetm w8, mi
852 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
853 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
854 ; NONEON-NOSVE-NEXT: fcmp s1, s0
855 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
856 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
857 ; NONEON-NOSVE-NEXT: fcvt s0, h0
858 ; NONEON-NOSVE-NEXT: fcvt s1, h1
859 ; NONEON-NOSVE-NEXT: csetm w8, mi
860 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
861 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
862 ; NONEON-NOSVE-NEXT: fcmp s1, s0
863 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
864 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
865 ; NONEON-NOSVE-NEXT: fcvt s0, h0
866 ; NONEON-NOSVE-NEXT: fcvt s1, h1
867 ; NONEON-NOSVE-NEXT: csetm w8, mi
868 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
869 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
870 ; NONEON-NOSVE-NEXT: fcmp s1, s0
871 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
872 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
873 ; NONEON-NOSVE-NEXT: fcvt s0, h0
874 ; NONEON-NOSVE-NEXT: fcvt s1, h1
875 ; NONEON-NOSVE-NEXT: csetm w8, mi
876 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
877 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
878 ; NONEON-NOSVE-NEXT: fcmp s1, s0
879 ; NONEON-NOSVE-NEXT: csetm w8, mi
880 ; NONEON-NOSVE-NEXT: csinv w8, w8, wzr, le
881 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
882 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
883 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
884 ; NONEON-NOSVE-NEXT: add sp, sp, #96
885 ; NONEON-NOSVE-NEXT: ret
886 %op1 = load <16 x half>, ptr %a
887 %op2 = load <16 x half>, ptr %b
888 %cmp = fcmp one <16 x half> %op1, %op2
889 %sext = sext <16 x i1> %cmp to <16 x i16>
890 store <16 x i16> %sext, ptr %c
898 define void @fcmp_une_v16f16(ptr %a, ptr %b, ptr %c) {
899 ; CHECK-LABEL: fcmp_une_v16f16:
901 ; CHECK-NEXT: ldp q0, q3, [x1]
902 ; CHECK-NEXT: ptrue p0.h, vl8
903 ; CHECK-NEXT: ldp q1, q2, [x0]
904 ; CHECK-NEXT: fcmne p1.h, p0/z, z1.h, z0.h
905 ; CHECK-NEXT: fcmne p0.h, p0/z, z2.h, z3.h
906 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
907 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
908 ; CHECK-NEXT: stp q0, q1, [x2]
911 ; NONEON-NOSVE-LABEL: fcmp_une_v16f16:
912 ; NONEON-NOSVE: // %bb.0:
913 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
914 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
915 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
916 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
917 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
918 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
919 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
920 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
921 ; NONEON-NOSVE-NEXT: fcvt s0, h0
922 ; NONEON-NOSVE-NEXT: fcvt s1, h1
923 ; NONEON-NOSVE-NEXT: fcmp s1, s0
924 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
925 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
926 ; NONEON-NOSVE-NEXT: fcvt s0, h0
927 ; NONEON-NOSVE-NEXT: fcvt s1, h1
928 ; NONEON-NOSVE-NEXT: csetm w8, ne
929 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
930 ; NONEON-NOSVE-NEXT: fcmp s1, s0
931 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
932 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
933 ; NONEON-NOSVE-NEXT: fcvt s0, h0
934 ; NONEON-NOSVE-NEXT: fcvt s1, h1
935 ; NONEON-NOSVE-NEXT: csetm w8, ne
936 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
937 ; NONEON-NOSVE-NEXT: fcmp s1, s0
938 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
939 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
940 ; NONEON-NOSVE-NEXT: fcvt s0, h0
941 ; NONEON-NOSVE-NEXT: fcvt s1, h1
942 ; NONEON-NOSVE-NEXT: csetm w8, ne
943 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
944 ; NONEON-NOSVE-NEXT: fcmp s1, s0
945 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
946 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
947 ; NONEON-NOSVE-NEXT: fcvt s0, h0
948 ; NONEON-NOSVE-NEXT: fcvt s1, h1
949 ; NONEON-NOSVE-NEXT: csetm w8, ne
950 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
951 ; NONEON-NOSVE-NEXT: fcmp s1, s0
952 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
953 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
954 ; NONEON-NOSVE-NEXT: fcvt s0, h0
955 ; NONEON-NOSVE-NEXT: fcvt s1, h1
956 ; NONEON-NOSVE-NEXT: csetm w8, ne
957 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
958 ; NONEON-NOSVE-NEXT: fcmp s1, s0
959 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
960 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
961 ; NONEON-NOSVE-NEXT: fcvt s0, h0
962 ; NONEON-NOSVE-NEXT: fcvt s1, h1
963 ; NONEON-NOSVE-NEXT: csetm w8, ne
964 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
965 ; NONEON-NOSVE-NEXT: fcmp s1, s0
966 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
967 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
968 ; NONEON-NOSVE-NEXT: fcvt s0, h0
969 ; NONEON-NOSVE-NEXT: fcvt s1, h1
970 ; NONEON-NOSVE-NEXT: csetm w8, ne
971 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
972 ; NONEON-NOSVE-NEXT: fcmp s1, s0
973 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
974 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
975 ; NONEON-NOSVE-NEXT: fcvt s0, h0
976 ; NONEON-NOSVE-NEXT: fcvt s1, h1
977 ; NONEON-NOSVE-NEXT: csetm w8, ne
978 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
979 ; NONEON-NOSVE-NEXT: fcmp s1, s0
980 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
981 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
982 ; NONEON-NOSVE-NEXT: fcvt s0, h0
983 ; NONEON-NOSVE-NEXT: fcvt s1, h1
984 ; NONEON-NOSVE-NEXT: csetm w8, ne
985 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
986 ; NONEON-NOSVE-NEXT: fcmp s1, s0
987 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
988 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
989 ; NONEON-NOSVE-NEXT: fcvt s0, h0
990 ; NONEON-NOSVE-NEXT: fcvt s1, h1
991 ; NONEON-NOSVE-NEXT: csetm w8, ne
992 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
993 ; NONEON-NOSVE-NEXT: fcmp s1, s0
994 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
995 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
996 ; NONEON-NOSVE-NEXT: fcvt s0, h0
997 ; NONEON-NOSVE-NEXT: fcvt s1, h1
998 ; NONEON-NOSVE-NEXT: csetm w8, ne
999 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
1000 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1001 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
1002 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
1003 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1004 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1005 ; NONEON-NOSVE-NEXT: csetm w8, ne
1006 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
1007 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1008 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
1009 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
1010 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1011 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1012 ; NONEON-NOSVE-NEXT: csetm w8, ne
1013 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
1014 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1015 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
1016 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
1017 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1018 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1019 ; NONEON-NOSVE-NEXT: csetm w8, ne
1020 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
1021 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1022 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
1023 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
1024 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1025 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1026 ; NONEON-NOSVE-NEXT: csetm w8, ne
1027 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
1028 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1029 ; NONEON-NOSVE-NEXT: csetm w8, ne
1030 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
1031 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
1032 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
1033 ; NONEON-NOSVE-NEXT: add sp, sp, #96
1034 ; NONEON-NOSVE-NEXT: ret
1035 %op1 = load <16 x half>, ptr %a
1036 %op2 = load <16 x half>, ptr %b
1037 %cmp = fcmp une <16 x half> %op1, %op2
1038 %sext = sext <16 x i1> %cmp to <16 x i16>
1039 store <16 x i16> %sext, ptr %c
1047 define void @fcmp_ogt_v16f16(ptr %a, ptr %b, ptr %c) {
1048 ; CHECK-LABEL: fcmp_ogt_v16f16:
1050 ; CHECK-NEXT: ldp q0, q3, [x1]
1051 ; CHECK-NEXT: ptrue p0.h, vl8
1052 ; CHECK-NEXT: ldp q1, q2, [x0]
1053 ; CHECK-NEXT: fcmgt p1.h, p0/z, z1.h, z0.h
1054 ; CHECK-NEXT: fcmgt p0.h, p0/z, z2.h, z3.h
1055 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
1056 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
1057 ; CHECK-NEXT: stp q0, q1, [x2]
1060 ; NONEON-NOSVE-LABEL: fcmp_ogt_v16f16:
1061 ; NONEON-NOSVE: // %bb.0:
1062 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
1063 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
1064 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
1065 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
1066 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
1067 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
1068 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
1069 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
1070 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1071 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1072 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1073 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
1074 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
1075 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1076 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1077 ; NONEON-NOSVE-NEXT: csetm w8, gt
1078 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
1079 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1080 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
1081 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
1082 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1083 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1084 ; NONEON-NOSVE-NEXT: csetm w8, gt
1085 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
1086 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1087 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
1088 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
1089 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1090 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1091 ; NONEON-NOSVE-NEXT: csetm w8, gt
1092 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
1093 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1094 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
1095 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
1096 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1097 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1098 ; NONEON-NOSVE-NEXT: csetm w8, gt
1099 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
1100 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1101 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
1102 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
1103 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1104 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1105 ; NONEON-NOSVE-NEXT: csetm w8, gt
1106 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
1107 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1108 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
1109 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
1110 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1111 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1112 ; NONEON-NOSVE-NEXT: csetm w8, gt
1113 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
1114 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1115 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
1116 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
1117 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1118 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1119 ; NONEON-NOSVE-NEXT: csetm w8, gt
1120 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
1121 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1122 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
1123 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
1124 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1125 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1126 ; NONEON-NOSVE-NEXT: csetm w8, gt
1127 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
1128 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1129 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
1130 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
1131 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1132 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1133 ; NONEON-NOSVE-NEXT: csetm w8, gt
1134 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
1135 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1136 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
1137 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
1138 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1139 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1140 ; NONEON-NOSVE-NEXT: csetm w8, gt
1141 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
1142 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1143 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
1144 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
1145 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1146 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1147 ; NONEON-NOSVE-NEXT: csetm w8, gt
1148 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
1149 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1150 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
1151 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
1152 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1153 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1154 ; NONEON-NOSVE-NEXT: csetm w8, gt
1155 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
1156 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1157 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
1158 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
1159 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1160 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1161 ; NONEON-NOSVE-NEXT: csetm w8, gt
1162 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
1163 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1164 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
1165 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
1166 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1167 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1168 ; NONEON-NOSVE-NEXT: csetm w8, gt
1169 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
1170 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1171 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
1172 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
1173 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1174 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1175 ; NONEON-NOSVE-NEXT: csetm w8, gt
1176 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
1177 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1178 ; NONEON-NOSVE-NEXT: csetm w8, gt
1179 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
1180 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
1181 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
1182 ; NONEON-NOSVE-NEXT: add sp, sp, #96
1183 ; NONEON-NOSVE-NEXT: ret
1184 %op1 = load <16 x half>, ptr %a
1185 %op2 = load <16 x half>, ptr %b
1186 %cmp = fcmp ogt <16 x half> %op1, %op2
1187 %sext = sext <16 x i1> %cmp to <16 x i16>
1188 store <16 x i16> %sext, ptr %c
1196 define void @fcmp_ugt_v16f16(ptr %a, ptr %b, ptr %c) {
1197 ; CHECK-LABEL: fcmp_ugt_v16f16:
1199 ; CHECK-NEXT: ldp q0, q3, [x1]
1200 ; CHECK-NEXT: ptrue p0.h, vl8
1201 ; CHECK-NEXT: ldp q1, q2, [x0]
1202 ; CHECK-NEXT: fcmge p1.h, p0/z, z0.h, z1.h
1203 ; CHECK-NEXT: fcmge p0.h, p0/z, z3.h, z2.h
1204 ; CHECK-NEXT: mov z0.h, #-1 // =0xffffffffffffffff
1205 ; CHECK-NEXT: mov z1.h, p1/z, #-1 // =0xffffffffffffffff
1206 ; CHECK-NEXT: mov z2.h, p0/z, #-1 // =0xffffffffffffffff
1207 ; CHECK-NEXT: eor z1.d, z1.d, z0.d
1208 ; CHECK-NEXT: eor z0.d, z2.d, z0.d
1209 ; CHECK-NEXT: stp q1, q0, [x2]
1212 ; NONEON-NOSVE-LABEL: fcmp_ugt_v16f16:
1213 ; NONEON-NOSVE: // %bb.0:
1214 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
1215 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
1216 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
1217 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
1218 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
1219 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
1220 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
1221 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
1222 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1223 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1224 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1225 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
1226 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
1227 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1228 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1229 ; NONEON-NOSVE-NEXT: csetm w8, hi
1230 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
1231 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1232 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
1233 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
1234 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1235 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1236 ; NONEON-NOSVE-NEXT: csetm w8, hi
1237 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
1238 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1239 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
1240 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
1241 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1242 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1243 ; NONEON-NOSVE-NEXT: csetm w8, hi
1244 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
1245 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1246 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
1247 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
1248 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1249 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1250 ; NONEON-NOSVE-NEXT: csetm w8, hi
1251 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
1252 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1253 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
1254 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
1255 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1256 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1257 ; NONEON-NOSVE-NEXT: csetm w8, hi
1258 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
1259 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1260 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
1261 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
1262 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1263 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1264 ; NONEON-NOSVE-NEXT: csetm w8, hi
1265 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
1266 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1267 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
1268 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
1269 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1270 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1271 ; NONEON-NOSVE-NEXT: csetm w8, hi
1272 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
1273 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1274 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
1275 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
1276 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1277 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1278 ; NONEON-NOSVE-NEXT: csetm w8, hi
1279 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
1280 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1281 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
1282 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
1283 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1284 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1285 ; NONEON-NOSVE-NEXT: csetm w8, hi
1286 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
1287 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1288 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
1289 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
1290 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1291 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1292 ; NONEON-NOSVE-NEXT: csetm w8, hi
1293 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
1294 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1295 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
1296 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
1297 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1298 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1299 ; NONEON-NOSVE-NEXT: csetm w8, hi
1300 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
1301 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1302 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
1303 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
1304 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1305 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1306 ; NONEON-NOSVE-NEXT: csetm w8, hi
1307 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
1308 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1309 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
1310 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
1311 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1312 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1313 ; NONEON-NOSVE-NEXT: csetm w8, hi
1314 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
1315 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1316 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
1317 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
1318 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1319 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1320 ; NONEON-NOSVE-NEXT: csetm w8, hi
1321 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
1322 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1323 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
1324 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
1325 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1326 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1327 ; NONEON-NOSVE-NEXT: csetm w8, hi
1328 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
1329 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1330 ; NONEON-NOSVE-NEXT: csetm w8, hi
1331 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
1332 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
1333 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
1334 ; NONEON-NOSVE-NEXT: add sp, sp, #96
1335 ; NONEON-NOSVE-NEXT: ret
1336 %op1 = load <16 x half>, ptr %a
1337 %op2 = load <16 x half>, ptr %b
1338 %cmp = fcmp ugt <16 x half> %op1, %op2
1339 %sext = sext <16 x i1> %cmp to <16 x i16>
1340 store <16 x i16> %sext, ptr %c
1348 define void @fcmp_olt_v16f16(ptr %a, ptr %b, ptr %c) {
1349 ; CHECK-LABEL: fcmp_olt_v16f16:
1351 ; CHECK-NEXT: ldp q0, q3, [x1]
1352 ; CHECK-NEXT: ptrue p0.h, vl8
1353 ; CHECK-NEXT: ldp q1, q2, [x0]
1354 ; CHECK-NEXT: fcmgt p1.h, p0/z, z0.h, z1.h
1355 ; CHECK-NEXT: fcmgt p0.h, p0/z, z3.h, z2.h
1356 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
1357 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
1358 ; CHECK-NEXT: stp q0, q1, [x2]
1361 ; NONEON-NOSVE-LABEL: fcmp_olt_v16f16:
1362 ; NONEON-NOSVE: // %bb.0:
1363 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
1364 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
1365 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
1366 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
1367 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
1368 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
1369 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
1370 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
1371 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1372 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1373 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1374 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
1375 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
1376 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1377 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1378 ; NONEON-NOSVE-NEXT: csetm w8, mi
1379 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
1380 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1381 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
1382 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
1383 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1384 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1385 ; NONEON-NOSVE-NEXT: csetm w8, mi
1386 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
1387 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1388 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
1389 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
1390 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1391 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1392 ; NONEON-NOSVE-NEXT: csetm w8, mi
1393 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
1394 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1395 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
1396 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
1397 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1398 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1399 ; NONEON-NOSVE-NEXT: csetm w8, mi
1400 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
1401 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1402 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
1403 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
1404 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1405 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1406 ; NONEON-NOSVE-NEXT: csetm w8, mi
1407 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
1408 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1409 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
1410 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
1411 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1412 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1413 ; NONEON-NOSVE-NEXT: csetm w8, mi
1414 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
1415 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1416 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
1417 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
1418 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1419 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1420 ; NONEON-NOSVE-NEXT: csetm w8, mi
1421 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
1422 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1423 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
1424 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
1425 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1426 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1427 ; NONEON-NOSVE-NEXT: csetm w8, mi
1428 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
1429 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1430 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
1431 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
1432 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1433 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1434 ; NONEON-NOSVE-NEXT: csetm w8, mi
1435 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
1436 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1437 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
1438 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
1439 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1440 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1441 ; NONEON-NOSVE-NEXT: csetm w8, mi
1442 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
1443 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1444 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
1445 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
1446 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1447 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1448 ; NONEON-NOSVE-NEXT: csetm w8, mi
1449 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
1450 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1451 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
1452 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
1453 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1454 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1455 ; NONEON-NOSVE-NEXT: csetm w8, mi
1456 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
1457 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1458 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
1459 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
1460 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1461 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1462 ; NONEON-NOSVE-NEXT: csetm w8, mi
1463 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
1464 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1465 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
1466 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
1467 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1468 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1469 ; NONEON-NOSVE-NEXT: csetm w8, mi
1470 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
1471 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1472 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
1473 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
1474 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1475 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1476 ; NONEON-NOSVE-NEXT: csetm w8, mi
1477 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
1478 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1479 ; NONEON-NOSVE-NEXT: csetm w8, mi
1480 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
1481 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
1482 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
1483 ; NONEON-NOSVE-NEXT: add sp, sp, #96
1484 ; NONEON-NOSVE-NEXT: ret
1485 %op1 = load <16 x half>, ptr %a
1486 %op2 = load <16 x half>, ptr %b
1487 %cmp = fcmp olt <16 x half> %op1, %op2
1488 %sext = sext <16 x i1> %cmp to <16 x i16>
1489 store <16 x i16> %sext, ptr %c
1497 define void @fcmp_ult_v16f16(ptr %a, ptr %b, ptr %c) {
1498 ; CHECK-LABEL: fcmp_ult_v16f16:
1500 ; CHECK-NEXT: ldp q0, q3, [x1]
1501 ; CHECK-NEXT: ptrue p0.h, vl8
1502 ; CHECK-NEXT: ldp q1, q2, [x0]
1503 ; CHECK-NEXT: fcmge p1.h, p0/z, z1.h, z0.h
1504 ; CHECK-NEXT: fcmge p0.h, p0/z, z2.h, z3.h
1505 ; CHECK-NEXT: mov z0.h, #-1 // =0xffffffffffffffff
1506 ; CHECK-NEXT: mov z1.h, p1/z, #-1 // =0xffffffffffffffff
1507 ; CHECK-NEXT: mov z2.h, p0/z, #-1 // =0xffffffffffffffff
1508 ; CHECK-NEXT: eor z1.d, z1.d, z0.d
1509 ; CHECK-NEXT: eor z0.d, z2.d, z0.d
1510 ; CHECK-NEXT: stp q1, q0, [x2]
1513 ; NONEON-NOSVE-LABEL: fcmp_ult_v16f16:
1514 ; NONEON-NOSVE: // %bb.0:
1515 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
1516 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
1517 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
1518 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
1519 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
1520 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
1521 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
1522 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
1523 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1524 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1525 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1526 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
1527 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
1528 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1529 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1530 ; NONEON-NOSVE-NEXT: csetm w8, lt
1531 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
1532 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1533 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
1534 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
1535 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1536 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1537 ; NONEON-NOSVE-NEXT: csetm w8, lt
1538 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
1539 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1540 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
1541 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
1542 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1543 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1544 ; NONEON-NOSVE-NEXT: csetm w8, lt
1545 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
1546 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1547 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
1548 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
1549 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1550 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1551 ; NONEON-NOSVE-NEXT: csetm w8, lt
1552 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
1553 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1554 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
1555 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
1556 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1557 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1558 ; NONEON-NOSVE-NEXT: csetm w8, lt
1559 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
1560 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1561 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
1562 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
1563 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1564 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1565 ; NONEON-NOSVE-NEXT: csetm w8, lt
1566 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
1567 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1568 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
1569 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
1570 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1571 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1572 ; NONEON-NOSVE-NEXT: csetm w8, lt
1573 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
1574 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1575 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
1576 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
1577 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1578 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1579 ; NONEON-NOSVE-NEXT: csetm w8, lt
1580 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
1581 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1582 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
1583 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
1584 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1585 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1586 ; NONEON-NOSVE-NEXT: csetm w8, lt
1587 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
1588 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1589 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
1590 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
1591 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1592 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1593 ; NONEON-NOSVE-NEXT: csetm w8, lt
1594 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
1595 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1596 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
1597 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
1598 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1599 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1600 ; NONEON-NOSVE-NEXT: csetm w8, lt
1601 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
1602 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1603 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
1604 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
1605 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1606 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1607 ; NONEON-NOSVE-NEXT: csetm w8, lt
1608 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
1609 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1610 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
1611 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
1612 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1613 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1614 ; NONEON-NOSVE-NEXT: csetm w8, lt
1615 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
1616 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1617 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
1618 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
1619 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1620 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1621 ; NONEON-NOSVE-NEXT: csetm w8, lt
1622 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
1623 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1624 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
1625 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
1626 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1627 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1628 ; NONEON-NOSVE-NEXT: csetm w8, lt
1629 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
1630 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1631 ; NONEON-NOSVE-NEXT: csetm w8, lt
1632 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
1633 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
1634 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
1635 ; NONEON-NOSVE-NEXT: add sp, sp, #96
1636 ; NONEON-NOSVE-NEXT: ret
1637 %op1 = load <16 x half>, ptr %a
1638 %op2 = load <16 x half>, ptr %b
1639 %cmp = fcmp ult <16 x half> %op1, %op2
1640 %sext = sext <16 x i1> %cmp to <16 x i16>
1641 store <16 x i16> %sext, ptr %c
1649 define void @fcmp_oge_v16f16(ptr %a, ptr %b, ptr %c) {
1650 ; CHECK-LABEL: fcmp_oge_v16f16:
1652 ; CHECK-NEXT: ldp q0, q3, [x1]
1653 ; CHECK-NEXT: ptrue p0.h, vl8
1654 ; CHECK-NEXT: ldp q1, q2, [x0]
1655 ; CHECK-NEXT: fcmge p1.h, p0/z, z1.h, z0.h
1656 ; CHECK-NEXT: fcmge p0.h, p0/z, z2.h, z3.h
1657 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
1658 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
1659 ; CHECK-NEXT: stp q0, q1, [x2]
1662 ; NONEON-NOSVE-LABEL: fcmp_oge_v16f16:
1663 ; NONEON-NOSVE: // %bb.0:
1664 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
1665 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
1666 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
1667 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
1668 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
1669 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
1670 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
1671 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
1672 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1673 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1674 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1675 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
1676 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
1677 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1678 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1679 ; NONEON-NOSVE-NEXT: csetm w8, ge
1680 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
1681 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1682 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
1683 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
1684 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1685 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1686 ; NONEON-NOSVE-NEXT: csetm w8, ge
1687 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
1688 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1689 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
1690 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
1691 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1692 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1693 ; NONEON-NOSVE-NEXT: csetm w8, ge
1694 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
1695 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1696 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
1697 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
1698 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1699 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1700 ; NONEON-NOSVE-NEXT: csetm w8, ge
1701 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
1702 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1703 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
1704 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
1705 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1706 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1707 ; NONEON-NOSVE-NEXT: csetm w8, ge
1708 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
1709 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1710 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
1711 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
1712 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1713 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1714 ; NONEON-NOSVE-NEXT: csetm w8, ge
1715 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
1716 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1717 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
1718 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
1719 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1720 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1721 ; NONEON-NOSVE-NEXT: csetm w8, ge
1722 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
1723 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1724 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
1725 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
1726 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1727 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1728 ; NONEON-NOSVE-NEXT: csetm w8, ge
1729 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
1730 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1731 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
1732 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
1733 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1734 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1735 ; NONEON-NOSVE-NEXT: csetm w8, ge
1736 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
1737 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1738 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
1739 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
1740 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1741 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1742 ; NONEON-NOSVE-NEXT: csetm w8, ge
1743 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
1744 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1745 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
1746 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
1747 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1748 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1749 ; NONEON-NOSVE-NEXT: csetm w8, ge
1750 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
1751 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1752 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
1753 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
1754 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1755 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1756 ; NONEON-NOSVE-NEXT: csetm w8, ge
1757 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
1758 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1759 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
1760 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
1761 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1762 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1763 ; NONEON-NOSVE-NEXT: csetm w8, ge
1764 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
1765 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1766 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
1767 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
1768 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1769 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1770 ; NONEON-NOSVE-NEXT: csetm w8, ge
1771 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
1772 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1773 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
1774 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
1775 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1776 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1777 ; NONEON-NOSVE-NEXT: csetm w8, ge
1778 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
1779 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1780 ; NONEON-NOSVE-NEXT: csetm w8, ge
1781 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
1782 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
1783 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
1784 ; NONEON-NOSVE-NEXT: add sp, sp, #96
1785 ; NONEON-NOSVE-NEXT: ret
1786 %op1 = load <16 x half>, ptr %a
1787 %op2 = load <16 x half>, ptr %b
1788 %cmp = fcmp oge <16 x half> %op1, %op2
1789 %sext = sext <16 x i1> %cmp to <16 x i16>
1790 store <16 x i16> %sext, ptr %c
1798 define void @fcmp_uge_v16f16(ptr %a, ptr %b, ptr %c) {
1799 ; CHECK-LABEL: fcmp_uge_v16f16:
1801 ; CHECK-NEXT: ldp q0, q3, [x1]
1802 ; CHECK-NEXT: ptrue p0.h, vl8
1803 ; CHECK-NEXT: ldp q1, q2, [x0]
1804 ; CHECK-NEXT: fcmgt p1.h, p0/z, z0.h, z1.h
1805 ; CHECK-NEXT: fcmgt p0.h, p0/z, z3.h, z2.h
1806 ; CHECK-NEXT: mov z0.h, #-1 // =0xffffffffffffffff
1807 ; CHECK-NEXT: mov z1.h, p1/z, #-1 // =0xffffffffffffffff
1808 ; CHECK-NEXT: mov z2.h, p0/z, #-1 // =0xffffffffffffffff
1809 ; CHECK-NEXT: eor z1.d, z1.d, z0.d
1810 ; CHECK-NEXT: eor z0.d, z2.d, z0.d
1811 ; CHECK-NEXT: stp q1, q0, [x2]
1814 ; NONEON-NOSVE-LABEL: fcmp_uge_v16f16:
1815 ; NONEON-NOSVE: // %bb.0:
1816 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
1817 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
1818 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
1819 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
1820 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
1821 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
1822 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
1823 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
1824 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1825 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1826 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1827 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
1828 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
1829 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1830 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1831 ; NONEON-NOSVE-NEXT: csetm w8, pl
1832 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
1833 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1834 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
1835 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
1836 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1837 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1838 ; NONEON-NOSVE-NEXT: csetm w8, pl
1839 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
1840 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1841 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
1842 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
1843 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1844 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1845 ; NONEON-NOSVE-NEXT: csetm w8, pl
1846 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
1847 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1848 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
1849 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
1850 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1851 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1852 ; NONEON-NOSVE-NEXT: csetm w8, pl
1853 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
1854 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1855 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
1856 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
1857 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1858 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1859 ; NONEON-NOSVE-NEXT: csetm w8, pl
1860 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
1861 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1862 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
1863 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
1864 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1865 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1866 ; NONEON-NOSVE-NEXT: csetm w8, pl
1867 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
1868 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1869 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
1870 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
1871 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1872 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1873 ; NONEON-NOSVE-NEXT: csetm w8, pl
1874 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
1875 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1876 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
1877 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
1878 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1879 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1880 ; NONEON-NOSVE-NEXT: csetm w8, pl
1881 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
1882 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1883 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
1884 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
1885 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1886 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1887 ; NONEON-NOSVE-NEXT: csetm w8, pl
1888 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
1889 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1890 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
1891 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
1892 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1893 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1894 ; NONEON-NOSVE-NEXT: csetm w8, pl
1895 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
1896 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1897 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
1898 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
1899 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1900 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1901 ; NONEON-NOSVE-NEXT: csetm w8, pl
1902 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
1903 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1904 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
1905 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
1906 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1907 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1908 ; NONEON-NOSVE-NEXT: csetm w8, pl
1909 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
1910 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1911 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
1912 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
1913 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1914 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1915 ; NONEON-NOSVE-NEXT: csetm w8, pl
1916 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
1917 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1918 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
1919 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
1920 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1921 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1922 ; NONEON-NOSVE-NEXT: csetm w8, pl
1923 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
1924 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1925 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
1926 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
1927 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1928 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1929 ; NONEON-NOSVE-NEXT: csetm w8, pl
1930 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
1931 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1932 ; NONEON-NOSVE-NEXT: csetm w8, pl
1933 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
1934 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
1935 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
1936 ; NONEON-NOSVE-NEXT: add sp, sp, #96
1937 ; NONEON-NOSVE-NEXT: ret
1938 %op1 = load <16 x half>, ptr %a
1939 %op2 = load <16 x half>, ptr %b
1940 %cmp = fcmp uge <16 x half> %op1, %op2
1941 %sext = sext <16 x i1> %cmp to <16 x i16>
1942 store <16 x i16> %sext, ptr %c
1950 define void @fcmp_ole_v16f16(ptr %a, ptr %b, ptr %c) {
1951 ; CHECK-LABEL: fcmp_ole_v16f16:
1953 ; CHECK-NEXT: ldp q0, q3, [x1]
1954 ; CHECK-NEXT: ptrue p0.h, vl8
1955 ; CHECK-NEXT: ldp q1, q2, [x0]
1956 ; CHECK-NEXT: fcmge p1.h, p0/z, z0.h, z1.h
1957 ; CHECK-NEXT: fcmge p0.h, p0/z, z3.h, z2.h
1958 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
1959 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
1960 ; CHECK-NEXT: stp q0, q1, [x2]
1963 ; NONEON-NOSVE-LABEL: fcmp_ole_v16f16:
1964 ; NONEON-NOSVE: // %bb.0:
1965 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
1966 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
1967 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
1968 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
1969 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
1970 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
1971 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
1972 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
1973 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1974 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1975 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1976 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
1977 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
1978 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1979 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1980 ; NONEON-NOSVE-NEXT: csetm w8, ls
1981 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
1982 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1983 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
1984 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
1985 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1986 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1987 ; NONEON-NOSVE-NEXT: csetm w8, ls
1988 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
1989 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1990 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
1991 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
1992 ; NONEON-NOSVE-NEXT: fcvt s0, h0
1993 ; NONEON-NOSVE-NEXT: fcvt s1, h1
1994 ; NONEON-NOSVE-NEXT: csetm w8, ls
1995 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
1996 ; NONEON-NOSVE-NEXT: fcmp s1, s0
1997 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
1998 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
1999 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2000 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2001 ; NONEON-NOSVE-NEXT: csetm w8, ls
2002 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
2003 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2004 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
2005 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
2006 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2007 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2008 ; NONEON-NOSVE-NEXT: csetm w8, ls
2009 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
2010 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2011 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
2012 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
2013 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2014 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2015 ; NONEON-NOSVE-NEXT: csetm w8, ls
2016 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
2017 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2018 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
2019 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
2020 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2021 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2022 ; NONEON-NOSVE-NEXT: csetm w8, ls
2023 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
2024 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2025 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
2026 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
2027 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2028 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2029 ; NONEON-NOSVE-NEXT: csetm w8, ls
2030 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
2031 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2032 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
2033 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
2034 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2035 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2036 ; NONEON-NOSVE-NEXT: csetm w8, ls
2037 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
2038 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2039 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
2040 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
2041 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2042 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2043 ; NONEON-NOSVE-NEXT: csetm w8, ls
2044 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
2045 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2046 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
2047 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
2048 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2049 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2050 ; NONEON-NOSVE-NEXT: csetm w8, ls
2051 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
2052 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2053 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
2054 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
2055 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2056 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2057 ; NONEON-NOSVE-NEXT: csetm w8, ls
2058 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
2059 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2060 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
2061 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
2062 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2063 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2064 ; NONEON-NOSVE-NEXT: csetm w8, ls
2065 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
2066 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2067 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
2068 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
2069 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2070 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2071 ; NONEON-NOSVE-NEXT: csetm w8, ls
2072 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
2073 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2074 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
2075 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
2076 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2077 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2078 ; NONEON-NOSVE-NEXT: csetm w8, ls
2079 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
2080 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2081 ; NONEON-NOSVE-NEXT: csetm w8, ls
2082 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
2083 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
2084 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
2085 ; NONEON-NOSVE-NEXT: add sp, sp, #96
2086 ; NONEON-NOSVE-NEXT: ret
2087 %op1 = load <16 x half>, ptr %a
2088 %op2 = load <16 x half>, ptr %b
2089 %cmp = fcmp ole <16 x half> %op1, %op2
2090 %sext = sext <16 x i1> %cmp to <16 x i16>
2091 store <16 x i16> %sext, ptr %c
2099 define void @fcmp_ule_v16f16(ptr %a, ptr %b, ptr %c) {
2100 ; CHECK-LABEL: fcmp_ule_v16f16:
2102 ; CHECK-NEXT: ldp q0, q3, [x1]
2103 ; CHECK-NEXT: ptrue p0.h, vl8
2104 ; CHECK-NEXT: ldp q1, q2, [x0]
2105 ; CHECK-NEXT: fcmgt p1.h, p0/z, z1.h, z0.h
2106 ; CHECK-NEXT: fcmgt p0.h, p0/z, z2.h, z3.h
2107 ; CHECK-NEXT: mov z0.h, #-1 // =0xffffffffffffffff
2108 ; CHECK-NEXT: mov z1.h, p1/z, #-1 // =0xffffffffffffffff
2109 ; CHECK-NEXT: mov z2.h, p0/z, #-1 // =0xffffffffffffffff
2110 ; CHECK-NEXT: eor z1.d, z1.d, z0.d
2111 ; CHECK-NEXT: eor z0.d, z2.d, z0.d
2112 ; CHECK-NEXT: stp q1, q0, [x2]
2115 ; NONEON-NOSVE-LABEL: fcmp_ule_v16f16:
2116 ; NONEON-NOSVE: // %bb.0:
2117 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
2118 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
2119 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
2120 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
2121 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
2122 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
2123 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
2124 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
2125 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2126 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2127 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2128 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
2129 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
2130 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2131 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2132 ; NONEON-NOSVE-NEXT: csetm w8, le
2133 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
2134 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2135 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
2136 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
2137 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2138 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2139 ; NONEON-NOSVE-NEXT: csetm w8, le
2140 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
2141 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2142 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
2143 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
2144 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2145 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2146 ; NONEON-NOSVE-NEXT: csetm w8, le
2147 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
2148 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2149 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
2150 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
2151 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2152 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2153 ; NONEON-NOSVE-NEXT: csetm w8, le
2154 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
2155 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2156 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
2157 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
2158 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2159 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2160 ; NONEON-NOSVE-NEXT: csetm w8, le
2161 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
2162 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2163 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
2164 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
2165 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2166 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2167 ; NONEON-NOSVE-NEXT: csetm w8, le
2168 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
2169 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2170 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
2171 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
2172 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2173 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2174 ; NONEON-NOSVE-NEXT: csetm w8, le
2175 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
2176 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2177 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
2178 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
2179 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2180 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2181 ; NONEON-NOSVE-NEXT: csetm w8, le
2182 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
2183 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2184 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
2185 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
2186 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2187 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2188 ; NONEON-NOSVE-NEXT: csetm w8, le
2189 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
2190 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2191 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
2192 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
2193 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2194 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2195 ; NONEON-NOSVE-NEXT: csetm w8, le
2196 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
2197 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2198 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
2199 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
2200 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2201 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2202 ; NONEON-NOSVE-NEXT: csetm w8, le
2203 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
2204 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2205 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
2206 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
2207 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2208 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2209 ; NONEON-NOSVE-NEXT: csetm w8, le
2210 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
2211 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2212 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
2213 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
2214 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2215 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2216 ; NONEON-NOSVE-NEXT: csetm w8, le
2217 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
2218 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2219 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
2220 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
2221 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2222 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2223 ; NONEON-NOSVE-NEXT: csetm w8, le
2224 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
2225 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2226 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
2227 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
2228 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2229 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2230 ; NONEON-NOSVE-NEXT: csetm w8, le
2231 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
2232 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2233 ; NONEON-NOSVE-NEXT: csetm w8, le
2234 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
2235 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
2236 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
2237 ; NONEON-NOSVE-NEXT: add sp, sp, #96
2238 ; NONEON-NOSVE-NEXT: ret
2239 %op1 = load <16 x half>, ptr %a
2240 %op2 = load <16 x half>, ptr %b
2241 %cmp = fcmp ule <16 x half> %op1, %op2
2242 %sext = sext <16 x i1> %cmp to <16 x i16>
2243 store <16 x i16> %sext, ptr %c
2251 define void @fcmp_uno_v16f16(ptr %a, ptr %b, ptr %c) {
2252 ; CHECK-LABEL: fcmp_uno_v16f16:
2254 ; CHECK-NEXT: ldp q0, q3, [x1]
2255 ; CHECK-NEXT: ptrue p0.h, vl8
2256 ; CHECK-NEXT: ldp q1, q2, [x0]
2257 ; CHECK-NEXT: fcmuo p1.h, p0/z, z1.h, z0.h
2258 ; CHECK-NEXT: fcmuo p0.h, p0/z, z2.h, z3.h
2259 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
2260 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
2261 ; CHECK-NEXT: stp q0, q1, [x2]
2264 ; NONEON-NOSVE-LABEL: fcmp_uno_v16f16:
2265 ; NONEON-NOSVE: // %bb.0:
2266 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
2267 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
2268 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
2269 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
2270 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
2271 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
2272 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
2273 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
2274 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2275 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2276 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2277 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
2278 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
2279 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2280 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2281 ; NONEON-NOSVE-NEXT: csetm w8, vs
2282 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
2283 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2284 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
2285 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
2286 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2287 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2288 ; NONEON-NOSVE-NEXT: csetm w8, vs
2289 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
2290 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2291 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
2292 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
2293 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2294 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2295 ; NONEON-NOSVE-NEXT: csetm w8, vs
2296 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
2297 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2298 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
2299 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
2300 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2301 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2302 ; NONEON-NOSVE-NEXT: csetm w8, vs
2303 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
2304 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2305 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
2306 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
2307 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2308 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2309 ; NONEON-NOSVE-NEXT: csetm w8, vs
2310 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
2311 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2312 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
2313 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
2314 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2315 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2316 ; NONEON-NOSVE-NEXT: csetm w8, vs
2317 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
2318 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2319 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
2320 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
2321 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2322 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2323 ; NONEON-NOSVE-NEXT: csetm w8, vs
2324 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
2325 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2326 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
2327 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
2328 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2329 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2330 ; NONEON-NOSVE-NEXT: csetm w8, vs
2331 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
2332 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2333 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
2334 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
2335 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2336 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2337 ; NONEON-NOSVE-NEXT: csetm w8, vs
2338 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
2339 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2340 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
2341 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
2342 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2343 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2344 ; NONEON-NOSVE-NEXT: csetm w8, vs
2345 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
2346 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2347 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
2348 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
2349 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2350 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2351 ; NONEON-NOSVE-NEXT: csetm w8, vs
2352 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
2353 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2354 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
2355 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
2356 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2357 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2358 ; NONEON-NOSVE-NEXT: csetm w8, vs
2359 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
2360 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2361 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
2362 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
2363 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2364 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2365 ; NONEON-NOSVE-NEXT: csetm w8, vs
2366 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
2367 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2368 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
2369 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
2370 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2371 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2372 ; NONEON-NOSVE-NEXT: csetm w8, vs
2373 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
2374 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2375 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
2376 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
2377 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2378 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2379 ; NONEON-NOSVE-NEXT: csetm w8, vs
2380 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
2381 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2382 ; NONEON-NOSVE-NEXT: csetm w8, vs
2383 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
2384 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
2385 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
2386 ; NONEON-NOSVE-NEXT: add sp, sp, #96
2387 ; NONEON-NOSVE-NEXT: ret
2388 %op1 = load <16 x half>, ptr %a
2389 %op2 = load <16 x half>, ptr %b
2390 %cmp = fcmp uno <16 x half> %op1, %op2
2391 %sext = sext <16 x i1> %cmp to <16 x i16>
2392 store <16 x i16> %sext, ptr %c
2400 define void @fcmp_ord_v16f16(ptr %a, ptr %b, ptr %c) {
2401 ; CHECK-LABEL: fcmp_ord_v16f16:
2403 ; CHECK-NEXT: ldp q0, q3, [x1]
2404 ; CHECK-NEXT: ptrue p0.h, vl8
2405 ; CHECK-NEXT: ldp q1, q2, [x0]
2406 ; CHECK-NEXT: fcmuo p1.h, p0/z, z1.h, z0.h
2407 ; CHECK-NEXT: fcmuo p0.h, p0/z, z2.h, z3.h
2408 ; CHECK-NEXT: mov z0.h, #-1 // =0xffffffffffffffff
2409 ; CHECK-NEXT: mov z1.h, p1/z, #-1 // =0xffffffffffffffff
2410 ; CHECK-NEXT: mov z2.h, p0/z, #-1 // =0xffffffffffffffff
2411 ; CHECK-NEXT: eor z1.d, z1.d, z0.d
2412 ; CHECK-NEXT: eor z0.d, z2.d, z0.d
2413 ; CHECK-NEXT: stp q1, q0, [x2]
2416 ; NONEON-NOSVE-LABEL: fcmp_ord_v16f16:
2417 ; NONEON-NOSVE: // %bb.0:
2418 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
2419 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
2420 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
2421 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
2422 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
2423 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
2424 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
2425 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
2426 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2427 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2428 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2429 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
2430 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
2431 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2432 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2433 ; NONEON-NOSVE-NEXT: csetm w8, vc
2434 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
2435 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2436 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
2437 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
2438 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2439 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2440 ; NONEON-NOSVE-NEXT: csetm w8, vc
2441 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
2442 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2443 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
2444 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
2445 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2446 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2447 ; NONEON-NOSVE-NEXT: csetm w8, vc
2448 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
2449 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2450 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
2451 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
2452 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2453 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2454 ; NONEON-NOSVE-NEXT: csetm w8, vc
2455 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
2456 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2457 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
2458 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
2459 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2460 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2461 ; NONEON-NOSVE-NEXT: csetm w8, vc
2462 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
2463 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2464 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
2465 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
2466 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2467 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2468 ; NONEON-NOSVE-NEXT: csetm w8, vc
2469 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
2470 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2471 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
2472 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
2473 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2474 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2475 ; NONEON-NOSVE-NEXT: csetm w8, vc
2476 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
2477 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2478 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
2479 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
2480 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2481 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2482 ; NONEON-NOSVE-NEXT: csetm w8, vc
2483 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
2484 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2485 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
2486 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
2487 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2488 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2489 ; NONEON-NOSVE-NEXT: csetm w8, vc
2490 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
2491 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2492 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
2493 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
2494 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2495 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2496 ; NONEON-NOSVE-NEXT: csetm w8, vc
2497 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
2498 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2499 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
2500 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
2501 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2502 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2503 ; NONEON-NOSVE-NEXT: csetm w8, vc
2504 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
2505 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2506 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
2507 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
2508 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2509 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2510 ; NONEON-NOSVE-NEXT: csetm w8, vc
2511 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
2512 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2513 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
2514 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
2515 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2516 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2517 ; NONEON-NOSVE-NEXT: csetm w8, vc
2518 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
2519 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2520 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
2521 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
2522 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2523 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2524 ; NONEON-NOSVE-NEXT: csetm w8, vc
2525 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
2526 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2527 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
2528 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
2529 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2530 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2531 ; NONEON-NOSVE-NEXT: csetm w8, vc
2532 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
2533 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2534 ; NONEON-NOSVE-NEXT: csetm w8, vc
2535 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
2536 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
2537 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
2538 ; NONEON-NOSVE-NEXT: add sp, sp, #96
2539 ; NONEON-NOSVE-NEXT: ret
2540 %op1 = load <16 x half>, ptr %a
2541 %op2 = load <16 x half>, ptr %b
2542 %cmp = fcmp ord <16 x half> %op1, %op2
2543 %sext = sext <16 x i1> %cmp to <16 x i16>
2544 store <16 x i16> %sext, ptr %c
2552 define void @fcmp_eq_v16f16(ptr %a, ptr %b, ptr %c) {
2553 ; CHECK-LABEL: fcmp_eq_v16f16:
2555 ; CHECK-NEXT: ldp q0, q3, [x1]
2556 ; CHECK-NEXT: ptrue p0.h, vl8
2557 ; CHECK-NEXT: ldp q1, q2, [x0]
2558 ; CHECK-NEXT: fcmeq p1.h, p0/z, z1.h, z0.h
2559 ; CHECK-NEXT: fcmeq p0.h, p0/z, z2.h, z3.h
2560 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
2561 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
2562 ; CHECK-NEXT: stp q0, q1, [x2]
2565 ; NONEON-NOSVE-LABEL: fcmp_eq_v16f16:
2566 ; NONEON-NOSVE: // %bb.0:
2567 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
2568 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
2569 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
2570 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
2571 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
2572 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
2573 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
2574 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
2575 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2576 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2577 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2578 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
2579 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
2580 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2581 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2582 ; NONEON-NOSVE-NEXT: csetm w8, eq
2583 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
2584 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2585 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
2586 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
2587 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2588 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2589 ; NONEON-NOSVE-NEXT: csetm w8, eq
2590 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
2591 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2592 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
2593 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
2594 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2595 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2596 ; NONEON-NOSVE-NEXT: csetm w8, eq
2597 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
2598 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2599 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
2600 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
2601 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2602 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2603 ; NONEON-NOSVE-NEXT: csetm w8, eq
2604 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
2605 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2606 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
2607 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
2608 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2609 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2610 ; NONEON-NOSVE-NEXT: csetm w8, eq
2611 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
2612 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2613 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
2614 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
2615 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2616 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2617 ; NONEON-NOSVE-NEXT: csetm w8, eq
2618 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
2619 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2620 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
2621 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
2622 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2623 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2624 ; NONEON-NOSVE-NEXT: csetm w8, eq
2625 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
2626 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2627 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
2628 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
2629 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2630 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2631 ; NONEON-NOSVE-NEXT: csetm w8, eq
2632 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
2633 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2634 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
2635 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
2636 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2637 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2638 ; NONEON-NOSVE-NEXT: csetm w8, eq
2639 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
2640 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2641 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
2642 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
2643 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2644 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2645 ; NONEON-NOSVE-NEXT: csetm w8, eq
2646 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
2647 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2648 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
2649 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
2650 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2651 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2652 ; NONEON-NOSVE-NEXT: csetm w8, eq
2653 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
2654 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2655 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
2656 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
2657 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2658 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2659 ; NONEON-NOSVE-NEXT: csetm w8, eq
2660 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
2661 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2662 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
2663 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
2664 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2665 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2666 ; NONEON-NOSVE-NEXT: csetm w8, eq
2667 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
2668 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2669 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
2670 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
2671 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2672 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2673 ; NONEON-NOSVE-NEXT: csetm w8, eq
2674 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
2675 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2676 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
2677 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
2678 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2679 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2680 ; NONEON-NOSVE-NEXT: csetm w8, eq
2681 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
2682 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2683 ; NONEON-NOSVE-NEXT: csetm w8, eq
2684 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
2685 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
2686 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
2687 ; NONEON-NOSVE-NEXT: add sp, sp, #96
2688 ; NONEON-NOSVE-NEXT: ret
2689 %op1 = load <16 x half>, ptr %a
2690 %op2 = load <16 x half>, ptr %b
2691 %cmp = fcmp fast oeq <16 x half> %op1, %op2
2692 %sext = sext <16 x i1> %cmp to <16 x i16>
2693 store <16 x i16> %sext, ptr %c
2701 define void @fcmp_ne_v16f16(ptr %a, ptr %b, ptr %c) {
2702 ; CHECK-LABEL: fcmp_ne_v16f16:
2704 ; CHECK-NEXT: ldp q0, q3, [x1]
2705 ; CHECK-NEXT: ptrue p0.h, vl8
2706 ; CHECK-NEXT: ldp q1, q2, [x0]
2707 ; CHECK-NEXT: fcmne p1.h, p0/z, z1.h, z0.h
2708 ; CHECK-NEXT: fcmne p0.h, p0/z, z2.h, z3.h
2709 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
2710 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
2711 ; CHECK-NEXT: stp q0, q1, [x2]
2714 ; NONEON-NOSVE-LABEL: fcmp_ne_v16f16:
2715 ; NONEON-NOSVE: // %bb.0:
2716 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
2717 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
2718 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
2719 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
2720 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
2721 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
2722 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
2723 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
2724 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2725 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2726 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2727 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
2728 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
2729 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2730 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2731 ; NONEON-NOSVE-NEXT: csetm w8, ne
2732 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
2733 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2734 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
2735 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
2736 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2737 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2738 ; NONEON-NOSVE-NEXT: csetm w8, ne
2739 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
2740 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2741 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
2742 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
2743 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2744 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2745 ; NONEON-NOSVE-NEXT: csetm w8, ne
2746 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
2747 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2748 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
2749 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
2750 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2751 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2752 ; NONEON-NOSVE-NEXT: csetm w8, ne
2753 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
2754 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2755 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
2756 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
2757 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2758 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2759 ; NONEON-NOSVE-NEXT: csetm w8, ne
2760 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
2761 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2762 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
2763 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
2764 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2765 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2766 ; NONEON-NOSVE-NEXT: csetm w8, ne
2767 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
2768 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2769 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
2770 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
2771 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2772 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2773 ; NONEON-NOSVE-NEXT: csetm w8, ne
2774 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
2775 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2776 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
2777 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
2778 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2779 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2780 ; NONEON-NOSVE-NEXT: csetm w8, ne
2781 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
2782 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2783 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
2784 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
2785 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2786 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2787 ; NONEON-NOSVE-NEXT: csetm w8, ne
2788 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
2789 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2790 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
2791 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
2792 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2793 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2794 ; NONEON-NOSVE-NEXT: csetm w8, ne
2795 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
2796 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2797 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
2798 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
2799 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2800 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2801 ; NONEON-NOSVE-NEXT: csetm w8, ne
2802 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
2803 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2804 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
2805 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
2806 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2807 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2808 ; NONEON-NOSVE-NEXT: csetm w8, ne
2809 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
2810 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2811 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
2812 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
2813 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2814 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2815 ; NONEON-NOSVE-NEXT: csetm w8, ne
2816 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
2817 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2818 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
2819 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
2820 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2821 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2822 ; NONEON-NOSVE-NEXT: csetm w8, ne
2823 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
2824 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2825 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
2826 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
2827 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2828 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2829 ; NONEON-NOSVE-NEXT: csetm w8, ne
2830 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
2831 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2832 ; NONEON-NOSVE-NEXT: csetm w8, ne
2833 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
2834 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
2835 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
2836 ; NONEON-NOSVE-NEXT: add sp, sp, #96
2837 ; NONEON-NOSVE-NEXT: ret
2838 %op1 = load <16 x half>, ptr %a
2839 %op2 = load <16 x half>, ptr %b
2840 %cmp = fcmp fast one <16 x half> %op1, %op2
2841 %sext = sext <16 x i1> %cmp to <16 x i16>
2842 store <16 x i16> %sext, ptr %c
2850 define void @fcmp_gt_v16f16(ptr %a, ptr %b, ptr %c) {
2851 ; CHECK-LABEL: fcmp_gt_v16f16:
2853 ; CHECK-NEXT: ldp q0, q3, [x1]
2854 ; CHECK-NEXT: ptrue p0.h, vl8
2855 ; CHECK-NEXT: ldp q1, q2, [x0]
2856 ; CHECK-NEXT: fcmgt p1.h, p0/z, z1.h, z0.h
2857 ; CHECK-NEXT: fcmgt p0.h, p0/z, z2.h, z3.h
2858 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
2859 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
2860 ; CHECK-NEXT: stp q0, q1, [x2]
2863 ; NONEON-NOSVE-LABEL: fcmp_gt_v16f16:
2864 ; NONEON-NOSVE: // %bb.0:
2865 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
2866 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
2867 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
2868 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
2869 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
2870 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
2871 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
2872 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
2873 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2874 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2875 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2876 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
2877 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
2878 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2879 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2880 ; NONEON-NOSVE-NEXT: csetm w8, gt
2881 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
2882 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2883 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
2884 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
2885 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2886 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2887 ; NONEON-NOSVE-NEXT: csetm w8, gt
2888 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
2889 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2890 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
2891 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
2892 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2893 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2894 ; NONEON-NOSVE-NEXT: csetm w8, gt
2895 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
2896 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2897 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
2898 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
2899 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2900 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2901 ; NONEON-NOSVE-NEXT: csetm w8, gt
2902 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
2903 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2904 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
2905 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
2906 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2907 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2908 ; NONEON-NOSVE-NEXT: csetm w8, gt
2909 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
2910 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2911 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
2912 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
2913 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2914 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2915 ; NONEON-NOSVE-NEXT: csetm w8, gt
2916 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
2917 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2918 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
2919 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
2920 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2921 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2922 ; NONEON-NOSVE-NEXT: csetm w8, gt
2923 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
2924 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2925 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
2926 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
2927 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2928 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2929 ; NONEON-NOSVE-NEXT: csetm w8, gt
2930 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
2931 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2932 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
2933 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
2934 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2935 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2936 ; NONEON-NOSVE-NEXT: csetm w8, gt
2937 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
2938 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2939 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
2940 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
2941 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2942 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2943 ; NONEON-NOSVE-NEXT: csetm w8, gt
2944 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
2945 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2946 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
2947 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
2948 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2949 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2950 ; NONEON-NOSVE-NEXT: csetm w8, gt
2951 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
2952 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2953 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
2954 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
2955 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2956 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2957 ; NONEON-NOSVE-NEXT: csetm w8, gt
2958 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
2959 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2960 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
2961 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
2962 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2963 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2964 ; NONEON-NOSVE-NEXT: csetm w8, gt
2965 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
2966 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2967 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
2968 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
2969 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2970 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2971 ; NONEON-NOSVE-NEXT: csetm w8, gt
2972 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
2973 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2974 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
2975 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
2976 ; NONEON-NOSVE-NEXT: fcvt s0, h0
2977 ; NONEON-NOSVE-NEXT: fcvt s1, h1
2978 ; NONEON-NOSVE-NEXT: csetm w8, gt
2979 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
2980 ; NONEON-NOSVE-NEXT: fcmp s1, s0
2981 ; NONEON-NOSVE-NEXT: csetm w8, gt
2982 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
2983 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
2984 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
2985 ; NONEON-NOSVE-NEXT: add sp, sp, #96
2986 ; NONEON-NOSVE-NEXT: ret
2987 %op1 = load <16 x half>, ptr %a
2988 %op2 = load <16 x half>, ptr %b
2989 %cmp = fcmp fast ogt <16 x half> %op1, %op2
2990 %sext = sext <16 x i1> %cmp to <16 x i16>
2991 store <16 x i16> %sext, ptr %c
2999 define void @fcmp_lt_v16f16(ptr %a, ptr %b, ptr %c) {
3000 ; CHECK-LABEL: fcmp_lt_v16f16:
3002 ; CHECK-NEXT: ldp q0, q3, [x1]
3003 ; CHECK-NEXT: ptrue p0.h, vl8
3004 ; CHECK-NEXT: ldp q1, q2, [x0]
3005 ; CHECK-NEXT: fcmgt p1.h, p0/z, z0.h, z1.h
3006 ; CHECK-NEXT: fcmgt p0.h, p0/z, z3.h, z2.h
3007 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
3008 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
3009 ; CHECK-NEXT: stp q0, q1, [x2]
3012 ; NONEON-NOSVE-LABEL: fcmp_lt_v16f16:
3013 ; NONEON-NOSVE: // %bb.0:
3014 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
3015 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
3016 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
3017 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
3018 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
3019 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
3020 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
3021 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
3022 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3023 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3024 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3025 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
3026 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
3027 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3028 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3029 ; NONEON-NOSVE-NEXT: csetm w8, lt
3030 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
3031 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3032 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
3033 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
3034 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3035 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3036 ; NONEON-NOSVE-NEXT: csetm w8, lt
3037 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
3038 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3039 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
3040 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
3041 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3042 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3043 ; NONEON-NOSVE-NEXT: csetm w8, lt
3044 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
3045 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3046 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
3047 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
3048 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3049 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3050 ; NONEON-NOSVE-NEXT: csetm w8, lt
3051 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
3052 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3053 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
3054 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
3055 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3056 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3057 ; NONEON-NOSVE-NEXT: csetm w8, lt
3058 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
3059 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3060 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
3061 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
3062 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3063 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3064 ; NONEON-NOSVE-NEXT: csetm w8, lt
3065 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
3066 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3067 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
3068 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
3069 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3070 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3071 ; NONEON-NOSVE-NEXT: csetm w8, lt
3072 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
3073 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3074 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
3075 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
3076 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3077 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3078 ; NONEON-NOSVE-NEXT: csetm w8, lt
3079 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
3080 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3081 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
3082 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
3083 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3084 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3085 ; NONEON-NOSVE-NEXT: csetm w8, lt
3086 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
3087 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3088 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
3089 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
3090 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3091 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3092 ; NONEON-NOSVE-NEXT: csetm w8, lt
3093 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
3094 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3095 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
3096 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
3097 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3098 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3099 ; NONEON-NOSVE-NEXT: csetm w8, lt
3100 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
3101 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3102 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
3103 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
3104 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3105 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3106 ; NONEON-NOSVE-NEXT: csetm w8, lt
3107 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
3108 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3109 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
3110 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
3111 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3112 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3113 ; NONEON-NOSVE-NEXT: csetm w8, lt
3114 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
3115 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3116 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
3117 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
3118 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3119 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3120 ; NONEON-NOSVE-NEXT: csetm w8, lt
3121 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
3122 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3123 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
3124 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
3125 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3126 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3127 ; NONEON-NOSVE-NEXT: csetm w8, lt
3128 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
3129 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3130 ; NONEON-NOSVE-NEXT: csetm w8, lt
3131 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
3132 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
3133 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
3134 ; NONEON-NOSVE-NEXT: add sp, sp, #96
3135 ; NONEON-NOSVE-NEXT: ret
3136 %op1 = load <16 x half>, ptr %a
3137 %op2 = load <16 x half>, ptr %b
3138 %cmp = fcmp fast olt <16 x half> %op1, %op2
3139 %sext = sext <16 x i1> %cmp to <16 x i16>
3140 store <16 x i16> %sext, ptr %c
3148 define void @fcmp_ge_v16f16(ptr %a, ptr %b, ptr %c) {
3149 ; CHECK-LABEL: fcmp_ge_v16f16:
3151 ; CHECK-NEXT: ldp q0, q3, [x1]
3152 ; CHECK-NEXT: ptrue p0.h, vl8
3153 ; CHECK-NEXT: ldp q1, q2, [x0]
3154 ; CHECK-NEXT: fcmge p1.h, p0/z, z1.h, z0.h
3155 ; CHECK-NEXT: fcmge p0.h, p0/z, z2.h, z3.h
3156 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
3157 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
3158 ; CHECK-NEXT: stp q0, q1, [x2]
3161 ; NONEON-NOSVE-LABEL: fcmp_ge_v16f16:
3162 ; NONEON-NOSVE: // %bb.0:
3163 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
3164 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
3165 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
3166 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
3167 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
3168 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
3169 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
3170 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
3171 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3172 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3173 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3174 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
3175 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
3176 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3177 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3178 ; NONEON-NOSVE-NEXT: csetm w8, ge
3179 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
3180 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3181 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
3182 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
3183 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3184 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3185 ; NONEON-NOSVE-NEXT: csetm w8, ge
3186 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
3187 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3188 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
3189 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
3190 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3191 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3192 ; NONEON-NOSVE-NEXT: csetm w8, ge
3193 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
3194 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3195 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
3196 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
3197 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3198 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3199 ; NONEON-NOSVE-NEXT: csetm w8, ge
3200 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
3201 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3202 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
3203 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
3204 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3205 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3206 ; NONEON-NOSVE-NEXT: csetm w8, ge
3207 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
3208 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3209 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
3210 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
3211 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3212 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3213 ; NONEON-NOSVE-NEXT: csetm w8, ge
3214 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
3215 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3216 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
3217 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
3218 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3219 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3220 ; NONEON-NOSVE-NEXT: csetm w8, ge
3221 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
3222 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3223 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
3224 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
3225 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3226 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3227 ; NONEON-NOSVE-NEXT: csetm w8, ge
3228 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
3229 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3230 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
3231 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
3232 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3233 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3234 ; NONEON-NOSVE-NEXT: csetm w8, ge
3235 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
3236 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3237 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
3238 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
3239 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3240 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3241 ; NONEON-NOSVE-NEXT: csetm w8, ge
3242 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
3243 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3244 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
3245 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
3246 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3247 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3248 ; NONEON-NOSVE-NEXT: csetm w8, ge
3249 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
3250 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3251 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
3252 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
3253 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3254 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3255 ; NONEON-NOSVE-NEXT: csetm w8, ge
3256 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
3257 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3258 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
3259 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
3260 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3261 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3262 ; NONEON-NOSVE-NEXT: csetm w8, ge
3263 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
3264 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3265 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
3266 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
3267 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3268 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3269 ; NONEON-NOSVE-NEXT: csetm w8, ge
3270 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
3271 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3272 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
3273 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
3274 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3275 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3276 ; NONEON-NOSVE-NEXT: csetm w8, ge
3277 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
3278 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3279 ; NONEON-NOSVE-NEXT: csetm w8, ge
3280 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
3281 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
3282 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
3283 ; NONEON-NOSVE-NEXT: add sp, sp, #96
3284 ; NONEON-NOSVE-NEXT: ret
3285 %op1 = load <16 x half>, ptr %a
3286 %op2 = load <16 x half>, ptr %b
3287 %cmp = fcmp fast oge <16 x half> %op1, %op2
3288 %sext = sext <16 x i1> %cmp to <16 x i16>
3289 store <16 x i16> %sext, ptr %c
3297 define void @fcmp_le_v16f16(ptr %a, ptr %b, ptr %c) {
3298 ; CHECK-LABEL: fcmp_le_v16f16:
3300 ; CHECK-NEXT: ldp q0, q3, [x1]
3301 ; CHECK-NEXT: ptrue p0.h, vl8
3302 ; CHECK-NEXT: ldp q1, q2, [x0]
3303 ; CHECK-NEXT: fcmge p1.h, p0/z, z0.h, z1.h
3304 ; CHECK-NEXT: fcmge p0.h, p0/z, z3.h, z2.h
3305 ; CHECK-NEXT: mov z0.h, p1/z, #-1 // =0xffffffffffffffff
3306 ; CHECK-NEXT: mov z1.h, p0/z, #-1 // =0xffffffffffffffff
3307 ; CHECK-NEXT: stp q0, q1, [x2]
3310 ; NONEON-NOSVE-LABEL: fcmp_le_v16f16:
3311 ; NONEON-NOSVE: // %bb.0:
3312 ; NONEON-NOSVE-NEXT: sub sp, sp, #96
3313 ; NONEON-NOSVE-NEXT: .cfi_def_cfa_offset 96
3314 ; NONEON-NOSVE-NEXT: ldp q3, q0, [x1]
3315 ; NONEON-NOSVE-NEXT: ldp q2, q1, [x0]
3316 ; NONEON-NOSVE-NEXT: stp q2, q3, [sp]
3317 ; NONEON-NOSVE-NEXT: stp q1, q0, [sp, #32]
3318 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #62]
3319 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #46]
3320 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3321 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3322 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3323 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #60]
3324 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #44]
3325 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3326 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3327 ; NONEON-NOSVE-NEXT: csetm w8, le
3328 ; NONEON-NOSVE-NEXT: strh w8, [sp, #94]
3329 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3330 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #58]
3331 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #42]
3332 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3333 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3334 ; NONEON-NOSVE-NEXT: csetm w8, le
3335 ; NONEON-NOSVE-NEXT: strh w8, [sp, #92]
3336 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3337 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #56]
3338 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #40]
3339 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3340 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3341 ; NONEON-NOSVE-NEXT: csetm w8, le
3342 ; NONEON-NOSVE-NEXT: strh w8, [sp, #90]
3343 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3344 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #54]
3345 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #38]
3346 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3347 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3348 ; NONEON-NOSVE-NEXT: csetm w8, le
3349 ; NONEON-NOSVE-NEXT: strh w8, [sp, #88]
3350 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3351 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #52]
3352 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #36]
3353 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3354 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3355 ; NONEON-NOSVE-NEXT: csetm w8, le
3356 ; NONEON-NOSVE-NEXT: strh w8, [sp, #86]
3357 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3358 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #50]
3359 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #34]
3360 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3361 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3362 ; NONEON-NOSVE-NEXT: csetm w8, le
3363 ; NONEON-NOSVE-NEXT: strh w8, [sp, #84]
3364 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3365 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #48]
3366 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #32]
3367 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3368 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3369 ; NONEON-NOSVE-NEXT: csetm w8, le
3370 ; NONEON-NOSVE-NEXT: strh w8, [sp, #82]
3371 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3372 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #30]
3373 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #14]
3374 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3375 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3376 ; NONEON-NOSVE-NEXT: csetm w8, le
3377 ; NONEON-NOSVE-NEXT: strh w8, [sp, #80]
3378 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3379 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #28]
3380 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #12]
3381 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3382 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3383 ; NONEON-NOSVE-NEXT: csetm w8, le
3384 ; NONEON-NOSVE-NEXT: strh w8, [sp, #78]
3385 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3386 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #26]
3387 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #10]
3388 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3389 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3390 ; NONEON-NOSVE-NEXT: csetm w8, le
3391 ; NONEON-NOSVE-NEXT: strh w8, [sp, #76]
3392 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3393 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #24]
3394 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #8]
3395 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3396 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3397 ; NONEON-NOSVE-NEXT: csetm w8, le
3398 ; NONEON-NOSVE-NEXT: strh w8, [sp, #74]
3399 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3400 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #22]
3401 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #6]
3402 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3403 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3404 ; NONEON-NOSVE-NEXT: csetm w8, le
3405 ; NONEON-NOSVE-NEXT: strh w8, [sp, #72]
3406 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3407 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #20]
3408 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #4]
3409 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3410 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3411 ; NONEON-NOSVE-NEXT: csetm w8, le
3412 ; NONEON-NOSVE-NEXT: strh w8, [sp, #70]
3413 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3414 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #18]
3415 ; NONEON-NOSVE-NEXT: ldr h1, [sp, #2]
3416 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3417 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3418 ; NONEON-NOSVE-NEXT: csetm w8, le
3419 ; NONEON-NOSVE-NEXT: strh w8, [sp, #68]
3420 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3421 ; NONEON-NOSVE-NEXT: ldr h0, [sp, #16]
3422 ; NONEON-NOSVE-NEXT: ldr h1, [sp]
3423 ; NONEON-NOSVE-NEXT: fcvt s0, h0
3424 ; NONEON-NOSVE-NEXT: fcvt s1, h1
3425 ; NONEON-NOSVE-NEXT: csetm w8, le
3426 ; NONEON-NOSVE-NEXT: strh w8, [sp, #66]
3427 ; NONEON-NOSVE-NEXT: fcmp s1, s0
3428 ; NONEON-NOSVE-NEXT: csetm w8, le
3429 ; NONEON-NOSVE-NEXT: strh w8, [sp, #64]
3430 ; NONEON-NOSVE-NEXT: ldp q0, q1, [sp, #64]
3431 ; NONEON-NOSVE-NEXT: stp q0, q1, [x2]
3432 ; NONEON-NOSVE-NEXT: add sp, sp, #96
3433 ; NONEON-NOSVE-NEXT: ret
3434 %op1 = load <16 x half>, ptr %a
3435 %op2 = load <16 x half>, ptr %b
3436 %cmp = fcmp fast ole <16 x half> %op1, %op2
3437 %sext = sext <16 x i1> %cmp to <16 x i16>
3438 store <16 x i16> %sext, ptr %c