1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; Check that cmp's of scalable vector splats are simplified
3
4; RUN: opt -instsimplify -S < %s | FileCheck %s
5
6define <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>
9;
10  %res = icmp eq <2 x i32> zeroinitializer, zeroinitializer
11  ret <2 x i1> %res
12}
13
14define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
17;
18  %res = icmp eq <vscale x 2 x i32> zeroinitializer, zeroinitializer
19  ret <vscale x 2 x i1> %res
20}
21
22define <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>
25;
26  %res = icmp eq <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
27  ret <2 x i1> %res
28}
29
30define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
33;
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
36}
37
38define <2 x i1> @i32cmp_ne_fixed_zero() {
39; CHECK-LABEL: @i32cmp_ne_fixed_zero(
40; CHECK-NEXT:    ret <2 x i1> zeroinitializer
41;
42  %res = icmp ne <2 x i32> zeroinitializer, zeroinitializer
43  ret <2 x i1> %res
44}
45
46define <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
49;
50  %res = icmp ne <vscale x 2 x i32> zeroinitializer, zeroinitializer
51  ret <vscale x 2 x i1> %res
52}
53
54define <2 x i1> @i32cmp_ne_fixed_one() {
55; CHECK-LABEL: @i32cmp_ne_fixed_one(
56; CHECK-NEXT:    ret <2 x i1> zeroinitializer
57;
58  %res = icmp ne <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
59  ret <2 x i1> %res
60}
61
62define <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
65;
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
68}
69
70define <2 x i1> @i32cmp_ugt_fixed_zero() {
71; CHECK-LABEL: @i32cmp_ugt_fixed_zero(
72; CHECK-NEXT:    ret <2 x i1> zeroinitializer
73;
74  %res = icmp ugt <2 x i32> zeroinitializer, zeroinitializer
75  ret <2 x i1> %res
76}
77
78define <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
81;
82  %res = icmp ugt <vscale x 2 x i32> zeroinitializer, zeroinitializer
83  ret <vscale x 2 x i1> %res
84}
85
86define <2 x i1> @i32cmp_ugt_fixed_one() {
87; CHECK-LABEL: @i32cmp_ugt_fixed_one(
88; CHECK-NEXT:    ret <2 x i1> zeroinitializer
89;
90  %res = icmp ugt <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
91  ret <2 x i1> %res
92}
93
94define <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
97;
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
100}
101
102define <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>
105;
106  %res = icmp uge <2 x i32> zeroinitializer, zeroinitializer
107  ret <2 x i1> %res
108}
109
110define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
113;
114  %res = icmp uge <vscale x 2 x i32> zeroinitializer, zeroinitializer
115  ret <vscale x 2 x i1> %res
116}
117
118define <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>
121;
122  %res = icmp uge <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
123  ret <2 x i1> %res
124}
125
126define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
129;
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
132}
133
134define <2 x i1> @i32cmp_ult_fixed_zero() {
135; CHECK-LABEL: @i32cmp_ult_fixed_zero(
136; CHECK-NEXT:    ret <2 x i1> zeroinitializer
137;
138  %res = icmp ult <2 x i32> zeroinitializer, zeroinitializer
139  ret <2 x i1> %res
140}
141
142define <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
145;
146  %res = icmp ult <vscale x 2 x i32> zeroinitializer, zeroinitializer
147  ret <vscale x 2 x i1> %res
148}
149
150define <2 x i1> @i32cmp_ult_fixed_one() {
151; CHECK-LABEL: @i32cmp_ult_fixed_one(
152; CHECK-NEXT:    ret <2 x i1> zeroinitializer
153;
154  %res = icmp ult <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
155  ret <2 x i1> %res
156}
157
158define <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
161;
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
164}
165
166define <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>
169;
170  %res = icmp ule <2 x i32> zeroinitializer, zeroinitializer
171  ret <2 x i1> %res
172}
173
174define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
177;
178  %res = icmp ule <vscale x 2 x i32> zeroinitializer, zeroinitializer
179  ret <vscale x 2 x i1> %res
180}
181
182define <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>
185;
186  %res = icmp ule <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
187  ret <2 x i1> %res
188}
189
190define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
193;
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
196}
197
198define <2 x i1> @i32cmp_sgt_fixed_zero() {
199; CHECK-LABEL: @i32cmp_sgt_fixed_zero(
200; CHECK-NEXT:    ret <2 x i1> zeroinitializer
201;
202  %res = icmp sgt <2 x i32> zeroinitializer, zeroinitializer
203  ret <2 x i1> %res
204}
205
206define <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
209;
210  %res = icmp sgt <vscale x 2 x i32> zeroinitializer, zeroinitializer
211  ret <vscale x 2 x i1> %res
212}
213
214define <2 x i1> @i32cmp_sgt_fixed_one() {
215; CHECK-LABEL: @i32cmp_sgt_fixed_one(
216; CHECK-NEXT:    ret <2 x i1> zeroinitializer
217;
218  %res = icmp sgt <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
219  ret <2 x i1> %res
220}
221
222define <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
225;
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
228}
229
230define <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>
233;
234  %res = icmp sge <2 x i32> zeroinitializer, zeroinitializer
235  ret <2 x i1> %res
236}
237
238define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
241;
242  %res = icmp sge <vscale x 2 x i32> zeroinitializer, zeroinitializer
243  ret <vscale x 2 x i1> %res
244}
245
246define <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>
249;
250  %res = icmp sge <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
251  ret <2 x i1> %res
252}
253
254define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
257;
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
260}
261
262define <2 x i1> @i32cmp_slt_fixed_zero() {
263; CHECK-LABEL: @i32cmp_slt_fixed_zero(
264; CHECK-NEXT:    ret <2 x i1> zeroinitializer
265;
266  %res = icmp slt <2 x i32> zeroinitializer, zeroinitializer
267  ret <2 x i1> %res
268}
269
270define <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
273;
274  %res = icmp slt <vscale x 2 x i32> zeroinitializer, zeroinitializer
275  ret <vscale x 2 x i1> %res
276}
277
278define <2 x i1> @i32cmp_slt_fixed_one() {
279; CHECK-LABEL: @i32cmp_slt_fixed_one(
280; CHECK-NEXT:    ret <2 x i1> zeroinitializer
281;
282  %res = icmp slt <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
283  ret <2 x i1> %res
284}
285
286define <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
289;
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
292}
293
294define <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>
297;
298  %res = icmp sle <2 x i32> zeroinitializer, zeroinitializer
299  ret <2 x i1> %res
300}
301
302define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
305;
306  %res = icmp sle <vscale x 2 x i32> zeroinitializer, zeroinitializer
307  ret <vscale x 2 x i1> %res
308}
309
310define <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>
313;
314  %res = icmp sle <2 x i32> <i32 1, i32 1>, <i32 1, i32 1>
315  ret <2 x i1> %res
316}
317
318define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
321;
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
324}
325
326define <2 x i1> @floatcmp_false_fixed_zero() {
327; CHECK-LABEL: @floatcmp_false_fixed_zero(
328; CHECK-NEXT:    ret <2 x i1> zeroinitializer
329;
330  %res = fcmp false <2 x float> zeroinitializer, zeroinitializer
331  ret <2 x i1> %res
332}
333
334define <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
337;
338  %res = fcmp false <vscale x 2 x float> zeroinitializer, zeroinitializer
339  ret <vscale x 2 x i1> %res
340}
341
342define <2 x i1> @floatcmp_false_fixed_one() {
343; CHECK-LABEL: @floatcmp_false_fixed_one(
344; CHECK-NEXT:    ret <2 x i1> zeroinitializer
345;
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
348}
349
350define <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
353;
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
356}
357
358define <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>
361;
362  %res = fcmp oeq <2 x float> zeroinitializer, zeroinitializer
363  ret <2 x i1> %res
364}
365
366define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
369;
370  %res = fcmp oeq <vscale x 2 x float> zeroinitializer, zeroinitializer
371  ret <vscale x 2 x i1> %res
372}
373
374define <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>
377;
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
380}
381
382define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
385;
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
388}
389
390define <2 x i1> @floatcmp_ogt_fixed_zero() {
391; CHECK-LABEL: @floatcmp_ogt_fixed_zero(
392; CHECK-NEXT:    ret <2 x i1> zeroinitializer
393;
394  %res = fcmp ogt <2 x float> zeroinitializer, zeroinitializer
395  ret <2 x i1> %res
396}
397
398define <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
401;
402  %res = fcmp ogt <vscale x 2 x float> zeroinitializer, zeroinitializer
403  ret <vscale x 2 x i1> %res
404}
405
406define <2 x i1> @floatcmp_ogt_fixed_one() {
407; CHECK-LABEL: @floatcmp_ogt_fixed_one(
408; CHECK-NEXT:    ret <2 x i1> zeroinitializer
409;
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
412}
413
414define <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
417;
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
420}
421
422define <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>
425;
426  %res = fcmp oge <2 x float> zeroinitializer, zeroinitializer
427  ret <2 x i1> %res
428}
429
430define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
433;
434  %res = fcmp oge <vscale x 2 x float> zeroinitializer, zeroinitializer
435  ret <vscale x 2 x i1> %res
436}
437
438define <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>
441;
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
444}
445
446define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
449;
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
452}
453
454define <2 x i1> @floatcmp_olt_fixed_zero() {
455; CHECK-LABEL: @floatcmp_olt_fixed_zero(
456; CHECK-NEXT:    ret <2 x i1> zeroinitializer
457;
458  %res = fcmp olt <2 x float> zeroinitializer, zeroinitializer
459  ret <2 x i1> %res
460}
461
462define <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
465;
466  %res = fcmp olt <vscale x 2 x float> zeroinitializer, zeroinitializer
467  ret <vscale x 2 x i1> %res
468}
469
470define <2 x i1> @floatcmp_olt_fixed_one() {
471; CHECK-LABEL: @floatcmp_olt_fixed_one(
472; CHECK-NEXT:    ret <2 x i1> zeroinitializer
473;
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
476}
477
478define <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
481;
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
484}
485
486define <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>
489;
490  %res = fcmp ole <2 x float> zeroinitializer, zeroinitializer
491  ret <2 x i1> %res
492}
493
494define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
497;
498  %res = fcmp ole <vscale x 2 x float> zeroinitializer, zeroinitializer
499  ret <vscale x 2 x i1> %res
500}
501
502define <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>
505;
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
508}
509
510define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
513;
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
516}
517
518define <2 x i1> @floatcmp_one_fixed_zero() {
519; CHECK-LABEL: @floatcmp_one_fixed_zero(
520; CHECK-NEXT:    ret <2 x i1> zeroinitializer
521;
522  %res = fcmp one <2 x float> zeroinitializer, zeroinitializer
523  ret <2 x i1> %res
524}
525
526define <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
529;
530  %res = fcmp one <vscale x 2 x float> zeroinitializer, zeroinitializer
531  ret <vscale x 2 x i1> %res
532}
533
534define <2 x i1> @floatcmp_one_fixed_one() {
535; CHECK-LABEL: @floatcmp_one_fixed_one(
536; CHECK-NEXT:    ret <2 x i1> zeroinitializer
537;
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
540}
541
542define <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
545;
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
548}
549
550define <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>
553;
554  %res = fcmp ord <2 x float> zeroinitializer, zeroinitializer
555  ret <2 x i1> %res
556}
557
558define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
561;
562  %res = fcmp ord <vscale x 2 x float> zeroinitializer, zeroinitializer
563  ret <vscale x 2 x i1> %res
564}
565
566define <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>
569;
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
572}
573
574define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
577;
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
580}
581
582define <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>
585;
586  %res = fcmp ueq <2 x float> zeroinitializer, zeroinitializer
587  ret <2 x i1> %res
588}
589
590define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
593;
594  %res = fcmp ueq <vscale x 2 x float> zeroinitializer, zeroinitializer
595  ret <vscale x 2 x i1> %res
596}
597
598define <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>
601;
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
604}
605
606define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
609;
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
612}
613
614define <2 x i1> @floatcmp_ugt_fixed_zero() {
615; CHECK-LABEL: @floatcmp_ugt_fixed_zero(
616; CHECK-NEXT:    ret <2 x i1> zeroinitializer
617;
618  %res = fcmp ugt <2 x float> zeroinitializer, zeroinitializer
619  ret <2 x i1> %res
620}
621
622define <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
625;
626  %res = fcmp ugt <vscale x 2 x float> zeroinitializer, zeroinitializer
627  ret <vscale x 2 x i1> %res
628}
629
630define <2 x i1> @floatcmp_ugt_fixed_one() {
631; CHECK-LABEL: @floatcmp_ugt_fixed_one(
632; CHECK-NEXT:    ret <2 x i1> zeroinitializer
633;
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
636}
637
638define <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
641;
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
644}
645
646define <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>
649;
650  %res = fcmp uge <2 x float> zeroinitializer, zeroinitializer
651  ret <2 x i1> %res
652}
653
654define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
657;
658  %res = fcmp uge <vscale x 2 x float> zeroinitializer, zeroinitializer
659  ret <vscale x 2 x i1> %res
660}
661
662define <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>
665;
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
668}
669
670define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
673;
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
676}
677
678define <2 x i1> @floatcmp_ult_fixed_zero() {
679; CHECK-LABEL: @floatcmp_ult_fixed_zero(
680; CHECK-NEXT:    ret <2 x i1> zeroinitializer
681;
682  %res = fcmp ult <2 x float> zeroinitializer, zeroinitializer
683  ret <2 x i1> %res
684}
685
686define <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
689;
690  %res = fcmp ult <vscale x 2 x float> zeroinitializer, zeroinitializer
691  ret <vscale x 2 x i1> %res
692}
693
694define <2 x i1> @floatcmp_ult_fixed_one() {
695; CHECK-LABEL: @floatcmp_ult_fixed_one(
696; CHECK-NEXT:    ret <2 x i1> zeroinitializer
697;
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
700}
701
702define <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
705;
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
708}
709
710define <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>
713;
714  %res = fcmp ule <2 x float> zeroinitializer, zeroinitializer
715  ret <2 x i1> %res
716}
717
718define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
721;
722  %res = fcmp ule <vscale x 2 x float> zeroinitializer, zeroinitializer
723  ret <vscale x 2 x i1> %res
724}
725
726define <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>
729;
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
732}
733
734define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
737;
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
740}
741
742define <2 x i1> @floatcmp_une_fixed_zero() {
743; CHECK-LABEL: @floatcmp_une_fixed_zero(
744; CHECK-NEXT:    ret <2 x i1> zeroinitializer
745;
746  %res = fcmp une <2 x float> zeroinitializer, zeroinitializer
747  ret <2 x i1> %res
748}
749
750define <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
753;
754  %res = fcmp une <vscale x 2 x float> zeroinitializer, zeroinitializer
755  ret <vscale x 2 x i1> %res
756}
757
758define <2 x i1> @floatcmp_une_fixed_one() {
759; CHECK-LABEL: @floatcmp_une_fixed_one(
760; CHECK-NEXT:    ret <2 x i1> zeroinitializer
761;
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
764}
765
766define <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
769;
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
772}
773
774define <2 x i1> @floatcmp_uno_fixed_zero() {
775; CHECK-LABEL: @floatcmp_uno_fixed_zero(
776; CHECK-NEXT:    ret <2 x i1> zeroinitializer
777;
778  %res = fcmp uno <2 x float> zeroinitializer, zeroinitializer
779  ret <2 x i1> %res
780}
781
782define <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
785;
786  %res = fcmp uno <vscale x 2 x float> zeroinitializer, zeroinitializer
787  ret <vscale x 2 x i1> %res
788}
789
790define <2 x i1> @floatcmp_uno_fixed_one() {
791; CHECK-LABEL: @floatcmp_uno_fixed_one(
792; CHECK-NEXT:    ret <2 x i1> zeroinitializer
793;
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
796}
797
798define <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
801;
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
804}
805
806define <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>
809;
810  %res = fcmp true <2 x float> zeroinitializer, zeroinitializer
811  ret <2 x i1> %res
812}
813
814define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
817;
818  %res = fcmp true <vscale x 2 x float> zeroinitializer, zeroinitializer
819  ret <vscale x 2 x i1> %res
820}
821
822define <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>
825;
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
828}
829
830define <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> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer)
833;
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
836}
837
838