Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / Transforms / InstSimplify / cmp-vec-fast-path.ll
bloba07e6fae5d4f45f12996d3005ffacd99511eb54a
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; Check that cmp's of scalable vector splats are simplified
4 ; RUN: opt -passes=instsimplify -S < %s | FileCheck %s
6 define <2 x i1> @i32cmp_eq_fixed_zero() {
7 ; CHECK-LABEL: @i32cmp_eq_fixed_zero(
8 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
10   %res = icmp eq <2 x i32> zeroinitializer, zeroinitializer
11   ret <2 x i1> %res
14 define <vscale x 2 x i1> @i32cmp_eq_scalable_zero() {
15 ; CHECK-LABEL: @i32cmp_eq_scalable_zero(
16 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
18   %res = icmp eq <vscale x 2 x i32> zeroinitializer, zeroinitializer
19   ret <vscale x 2 x i1> %res
22 define <2 x i1> @i32cmp_eq_fixed_one() {
23 ; CHECK-LABEL: @i32cmp_eq_fixed_one(
24 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
26   %res = icmp eq <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
27   ret <2 x i1> %res
30 define <vscale x 2 x i1> @i32cmp_eq_scalable_one() {
31 ; CHECK-LABEL: @i32cmp_eq_scalable_one(
32 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
34   %res = icmp eq <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer)
35   ret <vscale x 2 x i1> %res
38 define <2 x i1> @i32cmp_ne_fixed_zero() {
39 ; CHECK-LABEL: @i32cmp_ne_fixed_zero(
40 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
42   %res = icmp ne <2 x i32> zeroinitializer, zeroinitializer
43   ret <2 x i1> %res
46 define <vscale x 2 x i1> @i32cmp_ne_scalable_zero() {
47 ; CHECK-LABEL: @i32cmp_ne_scalable_zero(
48 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
50   %res = icmp ne <vscale x 2 x i32> zeroinitializer, zeroinitializer
51   ret <vscale x 2 x i1> %res
54 define <2 x i1> @i32cmp_ne_fixed_one() {
55 ; CHECK-LABEL: @i32cmp_ne_fixed_one(
56 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
58   %res = icmp ne <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
59   ret <2 x i1> %res
62 define <vscale x 2 x i1> @i32cmp_ne_scalable_one() {
63 ; CHECK-LABEL: @i32cmp_ne_scalable_one(
64 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
66   %res = icmp ne <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer)
67   ret <vscale x 2 x i1> %res
70 define <2 x i1> @i32cmp_ugt_fixed_zero() {
71 ; CHECK-LABEL: @i32cmp_ugt_fixed_zero(
72 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
74   %res = icmp ugt <2 x i32> zeroinitializer, zeroinitializer
75   ret <2 x i1> %res
78 define <vscale x 2 x i1> @i32cmp_ugt_scalable_zero() {
79 ; CHECK-LABEL: @i32cmp_ugt_scalable_zero(
80 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
82   %res = icmp ugt <vscale x 2 x i32> zeroinitializer, zeroinitializer
83   ret <vscale x 2 x i1> %res
86 define <2 x i1> @i32cmp_ugt_fixed_one() {
87 ; CHECK-LABEL: @i32cmp_ugt_fixed_one(
88 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
90   %res = icmp ugt <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
91   ret <2 x i1> %res
94 define <vscale x 2 x i1> @i32cmp_ugt_scalable_one() {
95 ; CHECK-LABEL: @i32cmp_ugt_scalable_one(
96 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
98   %res = icmp ugt <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer)
99   ret <vscale x 2 x i1> %res
102 define <2 x i1> @i32cmp_uge_fixed_zero() {
103 ; CHECK-LABEL: @i32cmp_uge_fixed_zero(
104 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
106   %res = icmp uge <2 x i32> zeroinitializer, zeroinitializer
107   ret <2 x i1> %res
110 define <vscale x 2 x i1> @i32cmp_uge_scalable_zero() {
111 ; CHECK-LABEL: @i32cmp_uge_scalable_zero(
112 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
114   %res = icmp uge <vscale x 2 x i32> zeroinitializer, zeroinitializer
115   ret <vscale x 2 x i1> %res
118 define <2 x i1> @i32cmp_uge_fixed_one() {
119 ; CHECK-LABEL: @i32cmp_uge_fixed_one(
120 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
122   %res = icmp uge <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
123   ret <2 x i1> %res
126 define <vscale x 2 x i1> @i32cmp_uge_scalable_one() {
127 ; CHECK-LABEL: @i32cmp_uge_scalable_one(
128 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
130   %res = icmp uge <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer)
131   ret <vscale x 2 x i1> %res
134 define <2 x i1> @i32cmp_ult_fixed_zero() {
135 ; CHECK-LABEL: @i32cmp_ult_fixed_zero(
136 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
138   %res = icmp ult <2 x i32> zeroinitializer, zeroinitializer
139   ret <2 x i1> %res
142 define <vscale x 2 x i1> @i32cmp_ult_scalable_zero() {
143 ; CHECK-LABEL: @i32cmp_ult_scalable_zero(
144 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
146   %res = icmp ult <vscale x 2 x i32> zeroinitializer, zeroinitializer
147   ret <vscale x 2 x i1> %res
150 define <2 x i1> @i32cmp_ult_fixed_one() {
151 ; CHECK-LABEL: @i32cmp_ult_fixed_one(
152 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
154   %res = icmp ult <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
155   ret <2 x i1> %res
158 define <vscale x 2 x i1> @i32cmp_ult_scalable_one() {
159 ; CHECK-LABEL: @i32cmp_ult_scalable_one(
160 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
162   %res = icmp ult <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer)
163   ret <vscale x 2 x i1> %res
166 define <2 x i1> @i32cmp_ule_fixed_zero() {
167 ; CHECK-LABEL: @i32cmp_ule_fixed_zero(
168 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
170   %res = icmp ule <2 x i32> zeroinitializer, zeroinitializer
171   ret <2 x i1> %res
174 define <vscale x 2 x i1> @i32cmp_ule_scalable_zero() {
175 ; CHECK-LABEL: @i32cmp_ule_scalable_zero(
176 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
178   %res = icmp ule <vscale x 2 x i32> zeroinitializer, zeroinitializer
179   ret <vscale x 2 x i1> %res
182 define <2 x i1> @i32cmp_ule_fixed_one() {
183 ; CHECK-LABEL: @i32cmp_ule_fixed_one(
184 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
186   %res = icmp ule <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
187   ret <2 x i1> %res
190 define <vscale x 2 x i1> @i32cmp_ule_scalable_one() {
191 ; CHECK-LABEL: @i32cmp_ule_scalable_one(
192 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
194   %res = icmp ule <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer)
195   ret <vscale x 2 x i1> %res
198 define <2 x i1> @i32cmp_sgt_fixed_zero() {
199 ; CHECK-LABEL: @i32cmp_sgt_fixed_zero(
200 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
202   %res = icmp sgt <2 x i32> zeroinitializer, zeroinitializer
203   ret <2 x i1> %res
206 define <vscale x 2 x i1> @i32cmp_sgt_scalable_zero() {
207 ; CHECK-LABEL: @i32cmp_sgt_scalable_zero(
208 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
210   %res = icmp sgt <vscale x 2 x i32> zeroinitializer, zeroinitializer
211   ret <vscale x 2 x i1> %res
214 define <2 x i1> @i32cmp_sgt_fixed_one() {
215 ; CHECK-LABEL: @i32cmp_sgt_fixed_one(
216 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
218   %res = icmp sgt <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
219   ret <2 x i1> %res
222 define <vscale x 2 x i1> @i32cmp_sgt_scalable_one() {
223 ; CHECK-LABEL: @i32cmp_sgt_scalable_one(
224 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
226   %res = icmp sgt <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer)
227   ret <vscale x 2 x i1> %res
230 define <2 x i1> @i32cmp_sge_fixed_zero() {
231 ; CHECK-LABEL: @i32cmp_sge_fixed_zero(
232 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
234   %res = icmp sge <2 x i32> zeroinitializer, zeroinitializer
235   ret <2 x i1> %res
238 define <vscale x 2 x i1> @i32cmp_sge_scalable_zero() {
239 ; CHECK-LABEL: @i32cmp_sge_scalable_zero(
240 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
242   %res = icmp sge <vscale x 2 x i32> zeroinitializer, zeroinitializer
243   ret <vscale x 2 x i1> %res
246 define <2 x i1> @i32cmp_sge_fixed_one() {
247 ; CHECK-LABEL: @i32cmp_sge_fixed_one(
248 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
250   %res = icmp sge <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
251   ret <2 x i1> %res
254 define <vscale x 2 x i1> @i32cmp_sge_scalable_one() {
255 ; CHECK-LABEL: @i32cmp_sge_scalable_one(
256 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
258   %res = icmp sge <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer)
259   ret <vscale x 2 x i1> %res
262 define <2 x i1> @i32cmp_slt_fixed_zero() {
263 ; CHECK-LABEL: @i32cmp_slt_fixed_zero(
264 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
266   %res = icmp slt <2 x i32> zeroinitializer, zeroinitializer
267   ret <2 x i1> %res
270 define <vscale x 2 x i1> @i32cmp_slt_scalable_zero() {
271 ; CHECK-LABEL: @i32cmp_slt_scalable_zero(
272 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
274   %res = icmp slt <vscale x 2 x i32> zeroinitializer, zeroinitializer
275   ret <vscale x 2 x i1> %res
278 define <2 x i1> @i32cmp_slt_fixed_one() {
279 ; CHECK-LABEL: @i32cmp_slt_fixed_one(
280 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
282   %res = icmp slt <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
283   ret <2 x i1> %res
286 define <vscale x 2 x i1> @i32cmp_slt_scalable_one() {
287 ; CHECK-LABEL: @i32cmp_slt_scalable_one(
288 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
290   %res = icmp slt <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer)
291   ret <vscale x 2 x i1> %res
294 define <2 x i1> @i32cmp_sle_fixed_zero() {
295 ; CHECK-LABEL: @i32cmp_sle_fixed_zero(
296 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
298   %res = icmp sle <2 x i32> zeroinitializer, zeroinitializer
299   ret <2 x i1> %res
302 define <vscale x 2 x i1> @i32cmp_sle_scalable_zero() {
303 ; CHECK-LABEL: @i32cmp_sle_scalable_zero(
304 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
306   %res = icmp sle <vscale x 2 x i32> zeroinitializer, zeroinitializer
307   ret <vscale x 2 x i1> %res
310 define <2 x i1> @i32cmp_sle_fixed_one() {
311 ; CHECK-LABEL: @i32cmp_sle_fixed_one(
312 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
314   %res = icmp sle <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
315   ret <2 x i1> %res
318 define <vscale x 2 x i1> @i32cmp_sle_scalable_one() {
319 ; CHECK-LABEL: @i32cmp_sle_scalable_one(
320 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
322   %res = icmp sle <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer)
323   ret <vscale x 2 x i1> %res
326 define <2 x i1> @floatcmp_false_fixed_zero() {
327 ; CHECK-LABEL: @floatcmp_false_fixed_zero(
328 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
330   %res = fcmp false <2 x float> zeroinitializer, zeroinitializer
331   ret <2 x i1> %res
334 define <vscale x 2 x i1> @floatcmp_false_scalable_zero() {
335 ; CHECK-LABEL: @floatcmp_false_scalable_zero(
336 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
338   %res = fcmp false <vscale x 2 x float> zeroinitializer, zeroinitializer
339   ret <vscale x 2 x i1> %res
342 define <2 x i1> @floatcmp_false_fixed_one() {
343 ; CHECK-LABEL: @floatcmp_false_fixed_one(
344 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
346   %res = fcmp false <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
347   ret <2 x i1> %res
350 define <vscale x 2 x i1> @floatcmp_false_scalable_one() {
351 ; CHECK-LABEL: @floatcmp_false_scalable_one(
352 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
354   %res = fcmp false <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
355   ret <vscale x 2 x i1> %res
358 define <2 x i1> @floatcmp_oeq_fixed_zero() {
359 ; CHECK-LABEL: @floatcmp_oeq_fixed_zero(
360 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
362   %res = fcmp oeq <2 x float> zeroinitializer, zeroinitializer
363   ret <2 x i1> %res
366 define <vscale x 2 x i1> @floatcmp_oeq_scalable_zero() {
367 ; CHECK-LABEL: @floatcmp_oeq_scalable_zero(
368 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
370   %res = fcmp oeq <vscale x 2 x float> zeroinitializer, zeroinitializer
371   ret <vscale x 2 x i1> %res
374 define <2 x i1> @floatcmp_oeq_fixed_one() {
375 ; CHECK-LABEL: @floatcmp_oeq_fixed_one(
376 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
378   %res = fcmp oeq <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
379   ret <2 x i1> %res
382 define <vscale x 2 x i1> @floatcmp_oeq_scalable_one() {
383 ; CHECK-LABEL: @floatcmp_oeq_scalable_one(
384 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
386   %res = fcmp oeq <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
387   ret <vscale x 2 x i1> %res
390 define <2 x i1> @floatcmp_ogt_fixed_zero() {
391 ; CHECK-LABEL: @floatcmp_ogt_fixed_zero(
392 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
394   %res = fcmp ogt <2 x float> zeroinitializer, zeroinitializer
395   ret <2 x i1> %res
398 define <vscale x 2 x i1> @floatcmp_ogt_scalable_zero() {
399 ; CHECK-LABEL: @floatcmp_ogt_scalable_zero(
400 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
402   %res = fcmp ogt <vscale x 2 x float> zeroinitializer, zeroinitializer
403   ret <vscale x 2 x i1> %res
406 define <2 x i1> @floatcmp_ogt_fixed_one() {
407 ; CHECK-LABEL: @floatcmp_ogt_fixed_one(
408 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
410   %res = fcmp ogt <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
411   ret <2 x i1> %res
414 define <vscale x 2 x i1> @floatcmp_ogt_scalable_one() {
415 ; CHECK-LABEL: @floatcmp_ogt_scalable_one(
416 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
418   %res = fcmp ogt <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
419   ret <vscale x 2 x i1> %res
422 define <2 x i1> @floatcmp_oge_fixed_zero() {
423 ; CHECK-LABEL: @floatcmp_oge_fixed_zero(
424 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
426   %res = fcmp oge <2 x float> zeroinitializer, zeroinitializer
427   ret <2 x i1> %res
430 define <vscale x 2 x i1> @floatcmp_oge_scalable_zero() {
431 ; CHECK-LABEL: @floatcmp_oge_scalable_zero(
432 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
434   %res = fcmp oge <vscale x 2 x float> zeroinitializer, zeroinitializer
435   ret <vscale x 2 x i1> %res
438 define <2 x i1> @floatcmp_oge_fixed_one() {
439 ; CHECK-LABEL: @floatcmp_oge_fixed_one(
440 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
442   %res = fcmp oge <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
443   ret <2 x i1> %res
446 define <vscale x 2 x i1> @floatcmp_oge_scalable_one() {
447 ; CHECK-LABEL: @floatcmp_oge_scalable_one(
448 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
450   %res = fcmp oge <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
451   ret <vscale x 2 x i1> %res
454 define <2 x i1> @floatcmp_olt_fixed_zero() {
455 ; CHECK-LABEL: @floatcmp_olt_fixed_zero(
456 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
458   %res = fcmp olt <2 x float> zeroinitializer, zeroinitializer
459   ret <2 x i1> %res
462 define <vscale x 2 x i1> @floatcmp_olt_scalable_zero() {
463 ; CHECK-LABEL: @floatcmp_olt_scalable_zero(
464 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
466   %res = fcmp olt <vscale x 2 x float> zeroinitializer, zeroinitializer
467   ret <vscale x 2 x i1> %res
470 define <2 x i1> @floatcmp_olt_fixed_one() {
471 ; CHECK-LABEL: @floatcmp_olt_fixed_one(
472 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
474   %res = fcmp olt <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
475   ret <2 x i1> %res
478 define <vscale x 2 x i1> @floatcmp_olt_scalable_one() {
479 ; CHECK-LABEL: @floatcmp_olt_scalable_one(
480 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
482   %res = fcmp olt <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
483   ret <vscale x 2 x i1> %res
486 define <2 x i1> @floatcmp_ole_fixed_zero() {
487 ; CHECK-LABEL: @floatcmp_ole_fixed_zero(
488 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
490   %res = fcmp ole <2 x float> zeroinitializer, zeroinitializer
491   ret <2 x i1> %res
494 define <vscale x 2 x i1> @floatcmp_ole_scalable_zero() {
495 ; CHECK-LABEL: @floatcmp_ole_scalable_zero(
496 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
498   %res = fcmp ole <vscale x 2 x float> zeroinitializer, zeroinitializer
499   ret <vscale x 2 x i1> %res
502 define <2 x i1> @floatcmp_ole_fixed_one() {
503 ; CHECK-LABEL: @floatcmp_ole_fixed_one(
504 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
506   %res = fcmp ole <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
507   ret <2 x i1> %res
510 define <vscale x 2 x i1> @floatcmp_ole_scalable_one() {
511 ; CHECK-LABEL: @floatcmp_ole_scalable_one(
512 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
514   %res = fcmp ole <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
515   ret <vscale x 2 x i1> %res
518 define <2 x i1> @floatcmp_one_fixed_zero() {
519 ; CHECK-LABEL: @floatcmp_one_fixed_zero(
520 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
522   %res = fcmp one <2 x float> zeroinitializer, zeroinitializer
523   ret <2 x i1> %res
526 define <vscale x 2 x i1> @floatcmp_one_scalable_zero() {
527 ; CHECK-LABEL: @floatcmp_one_scalable_zero(
528 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
530   %res = fcmp one <vscale x 2 x float> zeroinitializer, zeroinitializer
531   ret <vscale x 2 x i1> %res
534 define <2 x i1> @floatcmp_one_fixed_one() {
535 ; CHECK-LABEL: @floatcmp_one_fixed_one(
536 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
538   %res = fcmp one <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
539   ret <2 x i1> %res
542 define <vscale x 2 x i1> @floatcmp_one_scalable_one() {
543 ; CHECK-LABEL: @floatcmp_one_scalable_one(
544 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
546   %res = fcmp one <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
547   ret <vscale x 2 x i1> %res
550 define <2 x i1> @floatcmp_ord_fixed_zero() {
551 ; CHECK-LABEL: @floatcmp_ord_fixed_zero(
552 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
554   %res = fcmp ord <2 x float> zeroinitializer, zeroinitializer
555   ret <2 x i1> %res
558 define <vscale x 2 x i1> @floatcmp_ord_scalable_zero() {
559 ; CHECK-LABEL: @floatcmp_ord_scalable_zero(
560 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
562   %res = fcmp ord <vscale x 2 x float> zeroinitializer, zeroinitializer
563   ret <vscale x 2 x i1> %res
566 define <2 x i1> @floatcmp_ord_fixed_one() {
567 ; CHECK-LABEL: @floatcmp_ord_fixed_one(
568 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
570   %res = fcmp ord <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
571   ret <2 x i1> %res
574 define <vscale x 2 x i1> @floatcmp_ord_scalable_one() {
575 ; CHECK-LABEL: @floatcmp_ord_scalable_one(
576 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
578   %res = fcmp ord <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
579   ret <vscale x 2 x i1> %res
582 define <2 x i1> @floatcmp_ueq_fixed_zero() {
583 ; CHECK-LABEL: @floatcmp_ueq_fixed_zero(
584 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
586   %res = fcmp ueq <2 x float> zeroinitializer, zeroinitializer
587   ret <2 x i1> %res
590 define <vscale x 2 x i1> @floatcmp_ueq_scalable_zero() {
591 ; CHECK-LABEL: @floatcmp_ueq_scalable_zero(
592 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
594   %res = fcmp ueq <vscale x 2 x float> zeroinitializer, zeroinitializer
595   ret <vscale x 2 x i1> %res
598 define <2 x i1> @floatcmp_ueq_fixed_one() {
599 ; CHECK-LABEL: @floatcmp_ueq_fixed_one(
600 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
602   %res = fcmp ueq <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
603   ret <2 x i1> %res
606 define <vscale x 2 x i1> @floatcmp_ueq_scalable_one() {
607 ; CHECK-LABEL: @floatcmp_ueq_scalable_one(
608 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
610   %res = fcmp ueq <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
611   ret <vscale x 2 x i1> %res
614 define <2 x i1> @floatcmp_ugt_fixed_zero() {
615 ; CHECK-LABEL: @floatcmp_ugt_fixed_zero(
616 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
618   %res = fcmp ugt <2 x float> zeroinitializer, zeroinitializer
619   ret <2 x i1> %res
622 define <vscale x 2 x i1> @floatcmp_ugt_scalable_zero() {
623 ; CHECK-LABEL: @floatcmp_ugt_scalable_zero(
624 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
626   %res = fcmp ugt <vscale x 2 x float> zeroinitializer, zeroinitializer
627   ret <vscale x 2 x i1> %res
630 define <2 x i1> @floatcmp_ugt_fixed_one() {
631 ; CHECK-LABEL: @floatcmp_ugt_fixed_one(
632 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
634   %res = fcmp ugt <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
635   ret <2 x i1> %res
638 define <vscale x 2 x i1> @floatcmp_ugt_scalable_one() {
639 ; CHECK-LABEL: @floatcmp_ugt_scalable_one(
640 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
642   %res = fcmp ugt <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
643   ret <vscale x 2 x i1> %res
646 define <2 x i1> @floatcmp_uge_fixed_zero() {
647 ; CHECK-LABEL: @floatcmp_uge_fixed_zero(
648 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
650   %res = fcmp uge <2 x float> zeroinitializer, zeroinitializer
651   ret <2 x i1> %res
654 define <vscale x 2 x i1> @floatcmp_uge_scalable_zero() {
655 ; CHECK-LABEL: @floatcmp_uge_scalable_zero(
656 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
658   %res = fcmp uge <vscale x 2 x float> zeroinitializer, zeroinitializer
659   ret <vscale x 2 x i1> %res
662 define <2 x i1> @floatcmp_uge_fixed_one() {
663 ; CHECK-LABEL: @floatcmp_uge_fixed_one(
664 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
666   %res = fcmp uge <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
667   ret <2 x i1> %res
670 define <vscale x 2 x i1> @floatcmp_uge_scalable_one() {
671 ; CHECK-LABEL: @floatcmp_uge_scalable_one(
672 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
674   %res = fcmp uge <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
675   ret <vscale x 2 x i1> %res
678 define <2 x i1> @floatcmp_ult_fixed_zero() {
679 ; CHECK-LABEL: @floatcmp_ult_fixed_zero(
680 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
682   %res = fcmp ult <2 x float> zeroinitializer, zeroinitializer
683   ret <2 x i1> %res
686 define <vscale x 2 x i1> @floatcmp_ult_scalable_zero() {
687 ; CHECK-LABEL: @floatcmp_ult_scalable_zero(
688 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
690   %res = fcmp ult <vscale x 2 x float> zeroinitializer, zeroinitializer
691   ret <vscale x 2 x i1> %res
694 define <2 x i1> @floatcmp_ult_fixed_one() {
695 ; CHECK-LABEL: @floatcmp_ult_fixed_one(
696 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
698   %res = fcmp ult <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
699   ret <2 x i1> %res
702 define <vscale x 2 x i1> @floatcmp_ult_scalable_one() {
703 ; CHECK-LABEL: @floatcmp_ult_scalable_one(
704 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
706   %res = fcmp ult <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
707   ret <vscale x 2 x i1> %res
710 define <2 x i1> @floatcmp_ule_fixed_zero() {
711 ; CHECK-LABEL: @floatcmp_ule_fixed_zero(
712 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
714   %res = fcmp ule <2 x float> zeroinitializer, zeroinitializer
715   ret <2 x i1> %res
718 define <vscale x 2 x i1> @floatcmp_ule_scalable_zero() {
719 ; CHECK-LABEL: @floatcmp_ule_scalable_zero(
720 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
722   %res = fcmp ule <vscale x 2 x float> zeroinitializer, zeroinitializer
723   ret <vscale x 2 x i1> %res
726 define <2 x i1> @floatcmp_ule_fixed_one() {
727 ; CHECK-LABEL: @floatcmp_ule_fixed_one(
728 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
730   %res = fcmp ule <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
731   ret <2 x i1> %res
734 define <vscale x 2 x i1> @floatcmp_ule_scalable_one() {
735 ; CHECK-LABEL: @floatcmp_ule_scalable_one(
736 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
738   %res = fcmp ule <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
739   ret <vscale x 2 x i1> %res
742 define <2 x i1> @floatcmp_une_fixed_zero() {
743 ; CHECK-LABEL: @floatcmp_une_fixed_zero(
744 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
746   %res = fcmp une <2 x float> zeroinitializer, zeroinitializer
747   ret <2 x i1> %res
750 define <vscale x 2 x i1> @floatcmp_une_scalable_zero() {
751 ; CHECK-LABEL: @floatcmp_une_scalable_zero(
752 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
754   %res = fcmp une <vscale x 2 x float> zeroinitializer, zeroinitializer
755   ret <vscale x 2 x i1> %res
758 define <2 x i1> @floatcmp_une_fixed_one() {
759 ; CHECK-LABEL: @floatcmp_une_fixed_one(
760 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
762   %res = fcmp une <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
763   ret <2 x i1> %res
766 define <vscale x 2 x i1> @floatcmp_une_scalable_one() {
767 ; CHECK-LABEL: @floatcmp_une_scalable_one(
768 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
770   %res = fcmp une <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
771   ret <vscale x 2 x i1> %res
774 define <2 x i1> @floatcmp_uno_fixed_zero() {
775 ; CHECK-LABEL: @floatcmp_uno_fixed_zero(
776 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
778   %res = fcmp uno <2 x float> zeroinitializer, zeroinitializer
779   ret <2 x i1> %res
782 define <vscale x 2 x i1> @floatcmp_uno_scalable_zero() {
783 ; CHECK-LABEL: @floatcmp_uno_scalable_zero(
784 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
786   %res = fcmp uno <vscale x 2 x float> zeroinitializer, zeroinitializer
787   ret <vscale x 2 x i1> %res
790 define <2 x i1> @floatcmp_uno_fixed_one() {
791 ; CHECK-LABEL: @floatcmp_uno_fixed_one(
792 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
794   %res = fcmp uno <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
795   ret <2 x i1> %res
798 define <vscale x 2 x i1> @floatcmp_uno_scalable_one() {
799 ; CHECK-LABEL: @floatcmp_uno_scalable_one(
800 ; CHECK-NEXT:    ret <vscale x 2 x i1> zeroinitializer
802   %res = fcmp uno <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
803   ret <vscale x 2 x i1> %res
806 define <2 x i1> @floatcmp_true_fixed_zero() {
807 ; CHECK-LABEL: @floatcmp_true_fixed_zero(
808 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
810   %res = fcmp true <2 x float> zeroinitializer, zeroinitializer
811   ret <2 x i1> %res
814 define <vscale x 2 x i1> @floatcmp_true_scalable_zero() {
815 ; CHECK-LABEL: @floatcmp_true_scalable_zero(
816 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
818   %res = fcmp true <vscale x 2 x float> zeroinitializer, zeroinitializer
819   ret <vscale x 2 x i1> %res
822 define <2 x i1> @floatcmp_true_fixed_one() {
823 ; CHECK-LABEL: @floatcmp_true_fixed_one(
824 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
826   %res = fcmp true <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0>
827   ret <2 x i1> %res
830 define <vscale x 2 x i1> @floatcmp_true_scalable_one() {
831 ; CHECK-LABEL: @floatcmp_true_scalable_one(
832 ; CHECK-NEXT:    ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer)
834   %res = fcmp true <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer)
835   ret <vscale x 2 x i1> %res