xref: /llvm-project/llvm/test/CodeGen/VE/Vector/vec_fcmp.ll (revision f27423027dc75cd298edfd279e3a627904639a94)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s
3
4
5; <256 x float>
6
7; Function Attrs: nounwind
8define fastcc <256 x i1> @fcmp_false_vv_v256f32(<256 x float> %x, <256 x float> %y) {
9; CHECK-LABEL: fcmp_false_vv_v256f32:
10; CHECK:       # %bb.0:
11; CHECK-NEXT:    xorm %vm1, %vm0, %vm0
12; CHECK-NEXT:    b.l.t (, %s10)
13  %z = fcmp false <256 x float> %x, %y
14  ret <256 x i1> %z
15}
16
17; Function Attrs: nounwind
18define fastcc <256 x i1> @fcmp_false_sv_v256f32(float %x, <256 x float> %y) {
19; CHECK-LABEL: fcmp_false_sv_v256f32:
20; CHECK:       # %bb.0:
21; CHECK-NEXT:    xorm %vm1, %vm0, %vm0
22; CHECK-NEXT:    b.l.t (, %s10)
23  %xins = insertelement <256 x float> undef, float %x, i32 0
24  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
25  %z = fcmp false <256 x float> %vx, %y
26  ret <256 x i1> %z
27}
28
29; Function Attrs: nounwind
30define fastcc <256 x i1> @fcmp_false_vs_v256f32(<256 x float> %x, float %y) {
31; CHECK-LABEL: fcmp_false_vs_v256f32:
32; CHECK:       # %bb.0:
33; CHECK-NEXT:    xorm %vm1, %vm0, %vm0
34; CHECK-NEXT:    b.l.t (, %s10)
35  %yins = insertelement <256 x float> undef, float %y, i32 0
36  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
37  %z = fcmp false <256 x float> %x, %vy
38  ret <256 x i1> %z
39}
40
41; Function Attrs: nounwind
42define fastcc <256 x i1> @fcmp_oeq_vv_v256f32(<256 x float> %x, <256 x float> %y) {
43; CHECK-LABEL: fcmp_oeq_vv_v256f32:
44; CHECK:       # %bb.0:
45; CHECK-NEXT:    lea %s0, 256
46; CHECK-NEXT:    lvl %s0
47; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
48; CHECK-NEXT:    vfmk.s.eq %vm1, %v0
49; CHECK-NEXT:    b.l.t (, %s10)
50  %z = fcmp oeq <256 x float> %x, %y
51  ret <256 x i1> %z
52}
53
54; Function Attrs: nounwind
55define fastcc <256 x i1> @fcmp_oeq_sv_v256f32(float %x, <256 x float> %y) {
56; CHECK-LABEL: fcmp_oeq_sv_v256f32:
57; CHECK:       # %bb.0:
58; CHECK-NEXT:    lea %s1, 256
59; CHECK-NEXT:    lvl %s1
60; CHECK-NEXT:    vbrd %v1, %s0
61; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
62; CHECK-NEXT:    vfmk.s.eq %vm1, %v0
63; CHECK-NEXT:    b.l.t (, %s10)
64  %xins = insertelement <256 x float> undef, float %x, i32 0
65  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
66  %z = fcmp oeq <256 x float> %vx, %y
67  ret <256 x i1> %z
68}
69
70; Function Attrs: nounwind
71define fastcc <256 x i1> @fcmp_oeq_vs_v256f32(<256 x float> %x, float %y) {
72; CHECK-LABEL: fcmp_oeq_vs_v256f32:
73; CHECK:       # %bb.0:
74; CHECK-NEXT:    lea %s1, 256
75; CHECK-NEXT:    lvl %s1
76; CHECK-NEXT:    vbrd %v1, %s0
77; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
78; CHECK-NEXT:    vfmk.s.eq %vm1, %v0
79; CHECK-NEXT:    b.l.t (, %s10)
80  %yins = insertelement <256 x float> undef, float %y, i32 0
81  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
82  %z = fcmp oeq <256 x float> %x, %vy
83  ret <256 x i1> %z
84}
85
86; Function Attrs: nounwind
87define fastcc <256 x i1> @fcmp_ogt_vv_v256f32(<256 x float> %x, <256 x float> %y) {
88; CHECK-LABEL: fcmp_ogt_vv_v256f32:
89; CHECK:       # %bb.0:
90; CHECK-NEXT:    lea %s0, 256
91; CHECK-NEXT:    lvl %s0
92; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
93; CHECK-NEXT:    vfmk.s.gt %vm1, %v0
94; CHECK-NEXT:    b.l.t (, %s10)
95  %z = fcmp ogt <256 x float> %x, %y
96  ret <256 x i1> %z
97}
98
99; Function Attrs: nounwind
100define fastcc <256 x i1> @fcmp_ogt_sv_v256f32(float %x, <256 x float> %y) {
101; CHECK-LABEL: fcmp_ogt_sv_v256f32:
102; CHECK:       # %bb.0:
103; CHECK-NEXT:    lea %s1, 256
104; CHECK-NEXT:    lvl %s1
105; CHECK-NEXT:    vbrd %v1, %s0
106; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
107; CHECK-NEXT:    vfmk.s.gt %vm1, %v0
108; CHECK-NEXT:    b.l.t (, %s10)
109  %xins = insertelement <256 x float> undef, float %x, i32 0
110  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
111  %z = fcmp ogt <256 x float> %vx, %y
112  ret <256 x i1> %z
113}
114
115; Function Attrs: nounwind
116define fastcc <256 x i1> @fcmp_ogt_vs_v256f32(<256 x float> %x, float %y) {
117; CHECK-LABEL: fcmp_ogt_vs_v256f32:
118; CHECK:       # %bb.0:
119; CHECK-NEXT:    lea %s1, 256
120; CHECK-NEXT:    lvl %s1
121; CHECK-NEXT:    vbrd %v1, %s0
122; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
123; CHECK-NEXT:    vfmk.s.gt %vm1, %v0
124; CHECK-NEXT:    b.l.t (, %s10)
125  %yins = insertelement <256 x float> undef, float %y, i32 0
126  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
127  %z = fcmp ogt <256 x float> %x, %vy
128  ret <256 x i1> %z
129}
130
131; Function Attrs: nounwind
132define fastcc <256 x i1> @fcmp_oge_vv_v256f32(<256 x float> %x, <256 x float> %y) {
133; CHECK-LABEL: fcmp_oge_vv_v256f32:
134; CHECK:       # %bb.0:
135; CHECK-NEXT:    lea %s0, 256
136; CHECK-NEXT:    lvl %s0
137; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
138; CHECK-NEXT:    vfmk.s.ge %vm1, %v0
139; CHECK-NEXT:    b.l.t (, %s10)
140  %z = fcmp oge <256 x float> %x, %y
141  ret <256 x i1> %z
142}
143
144; Function Attrs: nounwind
145define fastcc <256 x i1> @fcmp_oge_sv_v256f32(float %x, <256 x float> %y) {
146; CHECK-LABEL: fcmp_oge_sv_v256f32:
147; CHECK:       # %bb.0:
148; CHECK-NEXT:    lea %s1, 256
149; CHECK-NEXT:    lvl %s1
150; CHECK-NEXT:    vbrd %v1, %s0
151; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
152; CHECK-NEXT:    vfmk.s.ge %vm1, %v0
153; CHECK-NEXT:    b.l.t (, %s10)
154  %xins = insertelement <256 x float> undef, float %x, i32 0
155  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
156  %z = fcmp oge <256 x float> %vx, %y
157  ret <256 x i1> %z
158}
159
160; Function Attrs: nounwind
161define fastcc <256 x i1> @fcmp_oge_vs_v256f32(<256 x float> %x, float %y) {
162; CHECK-LABEL: fcmp_oge_vs_v256f32:
163; CHECK:       # %bb.0:
164; CHECK-NEXT:    lea %s1, 256
165; CHECK-NEXT:    lvl %s1
166; CHECK-NEXT:    vbrd %v1, %s0
167; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
168; CHECK-NEXT:    vfmk.s.ge %vm1, %v0
169; CHECK-NEXT:    b.l.t (, %s10)
170  %yins = insertelement <256 x float> undef, float %y, i32 0
171  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
172  %z = fcmp oge <256 x float> %x, %vy
173  ret <256 x i1> %z
174}
175
176; Function Attrs: nounwind
177define fastcc <256 x i1> @fcmp_olt_vv_v256f32(<256 x float> %x, <256 x float> %y) {
178; CHECK-LABEL: fcmp_olt_vv_v256f32:
179; CHECK:       # %bb.0:
180; CHECK-NEXT:    lea %s0, 256
181; CHECK-NEXT:    lvl %s0
182; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
183; CHECK-NEXT:    vfmk.s.lt %vm1, %v0
184; CHECK-NEXT:    b.l.t (, %s10)
185  %z = fcmp olt <256 x float> %x, %y
186  ret <256 x i1> %z
187}
188
189; Function Attrs: nounwind
190define fastcc <256 x i1> @fcmp_olt_sv_v256f32(float %x, <256 x float> %y) {
191; CHECK-LABEL: fcmp_olt_sv_v256f32:
192; CHECK:       # %bb.0:
193; CHECK-NEXT:    lea %s1, 256
194; CHECK-NEXT:    lvl %s1
195; CHECK-NEXT:    vbrd %v1, %s0
196; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
197; CHECK-NEXT:    vfmk.s.lt %vm1, %v0
198; CHECK-NEXT:    b.l.t (, %s10)
199  %xins = insertelement <256 x float> undef, float %x, i32 0
200  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
201  %z = fcmp olt <256 x float> %vx, %y
202  ret <256 x i1> %z
203}
204
205; Function Attrs: nounwind
206define fastcc <256 x i1> @fcmp_olt_vs_v256f32(<256 x float> %x, float %y) {
207; CHECK-LABEL: fcmp_olt_vs_v256f32:
208; CHECK:       # %bb.0:
209; CHECK-NEXT:    lea %s1, 256
210; CHECK-NEXT:    lvl %s1
211; CHECK-NEXT:    vbrd %v1, %s0
212; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
213; CHECK-NEXT:    vfmk.s.lt %vm1, %v0
214; CHECK-NEXT:    b.l.t (, %s10)
215  %yins = insertelement <256 x float> undef, float %y, i32 0
216  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
217  %z = fcmp olt <256 x float> %x, %vy
218  ret <256 x i1> %z
219}
220
221; Function Attrs: nounwind
222define fastcc <256 x i1> @fcmp_ole_vv_v256f32(<256 x float> %x, <256 x float> %y) {
223; CHECK-LABEL: fcmp_ole_vv_v256f32:
224; CHECK:       # %bb.0:
225; CHECK-NEXT:    lea %s0, 256
226; CHECK-NEXT:    lvl %s0
227; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
228; CHECK-NEXT:    vfmk.s.le %vm1, %v0
229; CHECK-NEXT:    b.l.t (, %s10)
230  %z = fcmp ole <256 x float> %x, %y
231  ret <256 x i1> %z
232}
233
234; Function Attrs: nounwind
235define fastcc <256 x i1> @fcmp_ole_sv_v256f32(float %x, <256 x float> %y) {
236; CHECK-LABEL: fcmp_ole_sv_v256f32:
237; CHECK:       # %bb.0:
238; CHECK-NEXT:    lea %s1, 256
239; CHECK-NEXT:    lvl %s1
240; CHECK-NEXT:    vbrd %v1, %s0
241; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
242; CHECK-NEXT:    vfmk.s.le %vm1, %v0
243; CHECK-NEXT:    b.l.t (, %s10)
244  %xins = insertelement <256 x float> undef, float %x, i32 0
245  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
246  %z = fcmp ole <256 x float> %vx, %y
247  ret <256 x i1> %z
248}
249
250; Function Attrs: nounwind
251define fastcc <256 x i1> @fcmp_ole_vs_v256f32(<256 x float> %x, float %y) {
252; CHECK-LABEL: fcmp_ole_vs_v256f32:
253; CHECK:       # %bb.0:
254; CHECK-NEXT:    lea %s1, 256
255; CHECK-NEXT:    lvl %s1
256; CHECK-NEXT:    vbrd %v1, %s0
257; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
258; CHECK-NEXT:    vfmk.s.le %vm1, %v0
259; CHECK-NEXT:    b.l.t (, %s10)
260  %yins = insertelement <256 x float> undef, float %y, i32 0
261  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
262  %z = fcmp ole <256 x float> %x, %vy
263  ret <256 x i1> %z
264}
265
266; Function Attrs: nounwind
267define fastcc <256 x i1> @fcmp_one_vv_v256f32(<256 x float> %x, <256 x float> %y) {
268; CHECK-LABEL: fcmp_one_vv_v256f32:
269; CHECK:       # %bb.0:
270; CHECK-NEXT:    lea %s0, 256
271; CHECK-NEXT:    lvl %s0
272; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
273; CHECK-NEXT:    vfmk.s.ne %vm1, %v0
274; CHECK-NEXT:    b.l.t (, %s10)
275  %z = fcmp one <256 x float> %x, %y
276  ret <256 x i1> %z
277}
278
279; Function Attrs: nounwind
280define fastcc <256 x i1> @fcmp_one_sv_v256f32(float %x, <256 x float> %y) {
281; CHECK-LABEL: fcmp_one_sv_v256f32:
282; CHECK:       # %bb.0:
283; CHECK-NEXT:    lea %s1, 256
284; CHECK-NEXT:    lvl %s1
285; CHECK-NEXT:    vbrd %v1, %s0
286; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
287; CHECK-NEXT:    vfmk.s.ne %vm1, %v0
288; CHECK-NEXT:    b.l.t (, %s10)
289  %xins = insertelement <256 x float> undef, float %x, i32 0
290  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
291  %z = fcmp one <256 x float> %vx, %y
292  ret <256 x i1> %z
293}
294
295; Function Attrs: nounwind
296define fastcc <256 x i1> @fcmp_one_vs_v256f32(<256 x float> %x, float %y) {
297; CHECK-LABEL: fcmp_one_vs_v256f32:
298; CHECK:       # %bb.0:
299; CHECK-NEXT:    lea %s1, 256
300; CHECK-NEXT:    lvl %s1
301; CHECK-NEXT:    vbrd %v1, %s0
302; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
303; CHECK-NEXT:    vfmk.s.ne %vm1, %v0
304; CHECK-NEXT:    b.l.t (, %s10)
305  %yins = insertelement <256 x float> undef, float %y, i32 0
306  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
307  %z = fcmp one <256 x float> %x, %vy
308  ret <256 x i1> %z
309}
310
311; Function Attrs: nounwind
312define fastcc <256 x i1> @fcmp_ord_vv_v256f32(<256 x float> %x, <256 x float> %y) {
313; CHECK-LABEL: fcmp_ord_vv_v256f32:
314; CHECK:       # %bb.0:
315; CHECK-NEXT:    lea %s0, 256
316; CHECK-NEXT:    lvl %s0
317; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
318; CHECK-NEXT:    vfmk.s.num %vm1, %v0
319; CHECK-NEXT:    b.l.t (, %s10)
320  %z = fcmp ord <256 x float> %x, %y
321  ret <256 x i1> %z
322}
323
324; Function Attrs: nounwind
325define fastcc <256 x i1> @fcmp_ord_sv_v256f32(float %x, <256 x float> %y) {
326; CHECK-LABEL: fcmp_ord_sv_v256f32:
327; CHECK:       # %bb.0:
328; CHECK-NEXT:    lea %s1, 256
329; CHECK-NEXT:    lvl %s1
330; CHECK-NEXT:    vbrd %v1, %s0
331; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
332; CHECK-NEXT:    vfmk.s.num %vm1, %v0
333; CHECK-NEXT:    b.l.t (, %s10)
334  %xins = insertelement <256 x float> undef, float %x, i32 0
335  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
336  %z = fcmp ord <256 x float> %vx, %y
337  ret <256 x i1> %z
338}
339
340; Function Attrs: nounwind
341define fastcc <256 x i1> @fcmp_ord_vs_v256f32(<256 x float> %x, float %y) {
342; CHECK-LABEL: fcmp_ord_vs_v256f32:
343; CHECK:       # %bb.0:
344; CHECK-NEXT:    lea %s1, 256
345; CHECK-NEXT:    lvl %s1
346; CHECK-NEXT:    vbrd %v1, %s0
347; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
348; CHECK-NEXT:    vfmk.s.num %vm1, %v0
349; CHECK-NEXT:    b.l.t (, %s10)
350  %yins = insertelement <256 x float> undef, float %y, i32 0
351  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
352  %z = fcmp ord <256 x float> %x, %vy
353  ret <256 x i1> %z
354}
355
356; Function Attrs: nounwind
357define fastcc <256 x i1> @fcmp_uno_vv_v256f32(<256 x float> %x, <256 x float> %y) {
358; CHECK-LABEL: fcmp_uno_vv_v256f32:
359; CHECK:       # %bb.0:
360; CHECK-NEXT:    lea %s0, 256
361; CHECK-NEXT:    lvl %s0
362; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
363; CHECK-NEXT:    vfmk.s.nan %vm1, %v0
364; CHECK-NEXT:    b.l.t (, %s10)
365  %z = fcmp uno <256 x float> %x, %y
366  ret <256 x i1> %z
367}
368
369; Function Attrs: nounwind
370define fastcc <256 x i1> @fcmp_uno_sv_v256f32(float %x, <256 x float> %y) {
371; CHECK-LABEL: fcmp_uno_sv_v256f32:
372; CHECK:       # %bb.0:
373; CHECK-NEXT:    lea %s1, 256
374; CHECK-NEXT:    lvl %s1
375; CHECK-NEXT:    vbrd %v1, %s0
376; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
377; CHECK-NEXT:    vfmk.s.nan %vm1, %v0
378; CHECK-NEXT:    b.l.t (, %s10)
379  %xins = insertelement <256 x float> undef, float %x, i32 0
380  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
381  %z = fcmp uno <256 x float> %vx, %y
382  ret <256 x i1> %z
383}
384
385; Function Attrs: nounwind
386define fastcc <256 x i1> @fcmp_uno_vs_v256f32(<256 x float> %x, float %y) {
387; CHECK-LABEL: fcmp_uno_vs_v256f32:
388; CHECK:       # %bb.0:
389; CHECK-NEXT:    lea %s1, 256
390; CHECK-NEXT:    lvl %s1
391; CHECK-NEXT:    vbrd %v1, %s0
392; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
393; CHECK-NEXT:    vfmk.s.nan %vm1, %v0
394; CHECK-NEXT:    b.l.t (, %s10)
395  %yins = insertelement <256 x float> undef, float %y, i32 0
396  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
397  %z = fcmp uno <256 x float> %x, %vy
398  ret <256 x i1> %z
399}
400
401; Function Attrs: nounwind
402define fastcc <256 x i1> @fcmp_ueq_vv_v256f32(<256 x float> %x, <256 x float> %y) {
403; CHECK-LABEL: fcmp_ueq_vv_v256f32:
404; CHECK:       # %bb.0:
405; CHECK-NEXT:    lea %s0, 256
406; CHECK-NEXT:    lvl %s0
407; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
408; CHECK-NEXT:    vfmk.s.eqnan %vm1, %v0
409; CHECK-NEXT:    b.l.t (, %s10)
410  %z = fcmp ueq <256 x float> %x, %y
411  ret <256 x i1> %z
412}
413
414; Function Attrs: nounwind
415define fastcc <256 x i1> @fcmp_ueq_sv_v256f32(float %x, <256 x float> %y) {
416; CHECK-LABEL: fcmp_ueq_sv_v256f32:
417; CHECK:       # %bb.0:
418; CHECK-NEXT:    lea %s1, 256
419; CHECK-NEXT:    lvl %s1
420; CHECK-NEXT:    vbrd %v1, %s0
421; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
422; CHECK-NEXT:    vfmk.s.eqnan %vm1, %v0
423; CHECK-NEXT:    b.l.t (, %s10)
424  %xins = insertelement <256 x float> undef, float %x, i32 0
425  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
426  %z = fcmp ueq <256 x float> %vx, %y
427  ret <256 x i1> %z
428}
429
430; Function Attrs: nounwind
431define fastcc <256 x i1> @fcmp_ueq_vs_v256f32(<256 x float> %x, float %y) {
432; CHECK-LABEL: fcmp_ueq_vs_v256f32:
433; CHECK:       # %bb.0:
434; CHECK-NEXT:    lea %s1, 256
435; CHECK-NEXT:    lvl %s1
436; CHECK-NEXT:    vbrd %v1, %s0
437; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
438; CHECK-NEXT:    vfmk.s.eqnan %vm1, %v0
439; CHECK-NEXT:    b.l.t (, %s10)
440  %yins = insertelement <256 x float> undef, float %y, i32 0
441  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
442  %z = fcmp ueq <256 x float> %x, %vy
443  ret <256 x i1> %z
444}
445
446; Function Attrs: nounwind
447define fastcc <256 x i1> @fcmp_ugt_vv_v256f32(<256 x float> %x, <256 x float> %y) {
448; CHECK-LABEL: fcmp_ugt_vv_v256f32:
449; CHECK:       # %bb.0:
450; CHECK-NEXT:    lea %s0, 256
451; CHECK-NEXT:    lvl %s0
452; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
453; CHECK-NEXT:    vfmk.s.gtnan %vm1, %v0
454; CHECK-NEXT:    b.l.t (, %s10)
455  %z = fcmp ugt <256 x float> %x, %y
456  ret <256 x i1> %z
457}
458
459; Function Attrs: nounwind
460define fastcc <256 x i1> @fcmp_ugt_sv_v256f32(float %x, <256 x float> %y) {
461; CHECK-LABEL: fcmp_ugt_sv_v256f32:
462; CHECK:       # %bb.0:
463; CHECK-NEXT:    lea %s1, 256
464; CHECK-NEXT:    lvl %s1
465; CHECK-NEXT:    vbrd %v1, %s0
466; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
467; CHECK-NEXT:    vfmk.s.gtnan %vm1, %v0
468; CHECK-NEXT:    b.l.t (, %s10)
469  %xins = insertelement <256 x float> undef, float %x, i32 0
470  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
471  %z = fcmp ugt <256 x float> %vx, %y
472  ret <256 x i1> %z
473}
474
475; Function Attrs: nounwind
476define fastcc <256 x i1> @fcmp_ugt_vs_v256f32(<256 x float> %x, float %y) {
477; CHECK-LABEL: fcmp_ugt_vs_v256f32:
478; CHECK:       # %bb.0:
479; CHECK-NEXT:    lea %s1, 256
480; CHECK-NEXT:    lvl %s1
481; CHECK-NEXT:    vbrd %v1, %s0
482; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
483; CHECK-NEXT:    vfmk.s.gtnan %vm1, %v0
484; CHECK-NEXT:    b.l.t (, %s10)
485  %yins = insertelement <256 x float> undef, float %y, i32 0
486  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
487  %z = fcmp ugt <256 x float> %x, %vy
488  ret <256 x i1> %z
489}
490
491; Function Attrs: nounwind
492define fastcc <256 x i1> @fcmp_uge_vv_v256f32(<256 x float> %x, <256 x float> %y) {
493; CHECK-LABEL: fcmp_uge_vv_v256f32:
494; CHECK:       # %bb.0:
495; CHECK-NEXT:    lea %s0, 256
496; CHECK-NEXT:    lvl %s0
497; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
498; CHECK-NEXT:    vfmk.s.genan %vm1, %v0
499; CHECK-NEXT:    b.l.t (, %s10)
500  %z = fcmp uge <256 x float> %x, %y
501  ret <256 x i1> %z
502}
503
504; Function Attrs: nounwind
505define fastcc <256 x i1> @fcmp_uge_sv_v256f32(float %x, <256 x float> %y) {
506; CHECK-LABEL: fcmp_uge_sv_v256f32:
507; CHECK:       # %bb.0:
508; CHECK-NEXT:    lea %s1, 256
509; CHECK-NEXT:    lvl %s1
510; CHECK-NEXT:    vbrd %v1, %s0
511; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
512; CHECK-NEXT:    vfmk.s.genan %vm1, %v0
513; CHECK-NEXT:    b.l.t (, %s10)
514  %xins = insertelement <256 x float> undef, float %x, i32 0
515  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
516  %z = fcmp uge <256 x float> %vx, %y
517  ret <256 x i1> %z
518}
519
520; Function Attrs: nounwind
521define fastcc <256 x i1> @fcmp_uge_vs_v256f32(<256 x float> %x, float %y) {
522; CHECK-LABEL: fcmp_uge_vs_v256f32:
523; CHECK:       # %bb.0:
524; CHECK-NEXT:    lea %s1, 256
525; CHECK-NEXT:    lvl %s1
526; CHECK-NEXT:    vbrd %v1, %s0
527; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
528; CHECK-NEXT:    vfmk.s.genan %vm1, %v0
529; CHECK-NEXT:    b.l.t (, %s10)
530  %yins = insertelement <256 x float> undef, float %y, i32 0
531  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
532  %z = fcmp uge <256 x float> %x, %vy
533  ret <256 x i1> %z
534}
535
536; Function Attrs: nounwind
537define fastcc <256 x i1> @fcmp_ult_vv_v256f32(<256 x float> %x, <256 x float> %y) {
538; CHECK-LABEL: fcmp_ult_vv_v256f32:
539; CHECK:       # %bb.0:
540; CHECK-NEXT:    lea %s0, 256
541; CHECK-NEXT:    lvl %s0
542; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
543; CHECK-NEXT:    vfmk.s.ltnan %vm1, %v0
544; CHECK-NEXT:    b.l.t (, %s10)
545  %z = fcmp ult <256 x float> %x, %y
546  ret <256 x i1> %z
547}
548
549; Function Attrs: nounwind
550define fastcc <256 x i1> @fcmp_ult_sv_v256f32(float %x, <256 x float> %y) {
551; CHECK-LABEL: fcmp_ult_sv_v256f32:
552; CHECK:       # %bb.0:
553; CHECK-NEXT:    lea %s1, 256
554; CHECK-NEXT:    lvl %s1
555; CHECK-NEXT:    vbrd %v1, %s0
556; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
557; CHECK-NEXT:    vfmk.s.ltnan %vm1, %v0
558; CHECK-NEXT:    b.l.t (, %s10)
559  %xins = insertelement <256 x float> undef, float %x, i32 0
560  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
561  %z = fcmp ult <256 x float> %vx, %y
562  ret <256 x i1> %z
563}
564
565; Function Attrs: nounwind
566define fastcc <256 x i1> @fcmp_ult_vs_v256f32(<256 x float> %x, float %y) {
567; CHECK-LABEL: fcmp_ult_vs_v256f32:
568; CHECK:       # %bb.0:
569; CHECK-NEXT:    lea %s1, 256
570; CHECK-NEXT:    lvl %s1
571; CHECK-NEXT:    vbrd %v1, %s0
572; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
573; CHECK-NEXT:    vfmk.s.ltnan %vm1, %v0
574; CHECK-NEXT:    b.l.t (, %s10)
575  %yins = insertelement <256 x float> undef, float %y, i32 0
576  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
577  %z = fcmp ult <256 x float> %x, %vy
578  ret <256 x i1> %z
579}
580
581; Function Attrs: nounwind
582define fastcc <256 x i1> @fcmp_ule_vv_v256f32(<256 x float> %x, <256 x float> %y) {
583; CHECK-LABEL: fcmp_ule_vv_v256f32:
584; CHECK:       # %bb.0:
585; CHECK-NEXT:    lea %s0, 256
586; CHECK-NEXT:    lvl %s0
587; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
588; CHECK-NEXT:    vfmk.s.lenan %vm1, %v0
589; CHECK-NEXT:    b.l.t (, %s10)
590  %z = fcmp ule <256 x float> %x, %y
591  ret <256 x i1> %z
592}
593
594; Function Attrs: nounwind
595define fastcc <256 x i1> @fcmp_ule_sv_v256f32(float %x, <256 x float> %y) {
596; CHECK-LABEL: fcmp_ule_sv_v256f32:
597; CHECK:       # %bb.0:
598; CHECK-NEXT:    lea %s1, 256
599; CHECK-NEXT:    lvl %s1
600; CHECK-NEXT:    vbrd %v1, %s0
601; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
602; CHECK-NEXT:    vfmk.s.lenan %vm1, %v0
603; CHECK-NEXT:    b.l.t (, %s10)
604  %xins = insertelement <256 x float> undef, float %x, i32 0
605  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
606  %z = fcmp ule <256 x float> %vx, %y
607  ret <256 x i1> %z
608}
609
610; Function Attrs: nounwind
611define fastcc <256 x i1> @fcmp_ule_vs_v256f32(<256 x float> %x, float %y) {
612; CHECK-LABEL: fcmp_ule_vs_v256f32:
613; CHECK:       # %bb.0:
614; CHECK-NEXT:    lea %s1, 256
615; CHECK-NEXT:    lvl %s1
616; CHECK-NEXT:    vbrd %v1, %s0
617; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
618; CHECK-NEXT:    vfmk.s.lenan %vm1, %v0
619; CHECK-NEXT:    b.l.t (, %s10)
620  %yins = insertelement <256 x float> undef, float %y, i32 0
621  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
622  %z = fcmp ule <256 x float> %x, %vy
623  ret <256 x i1> %z
624}
625
626; Function Attrs: nounwind
627define fastcc <256 x i1> @fcmp_une_vv_v256f32(<256 x float> %x, <256 x float> %y) {
628; CHECK-LABEL: fcmp_une_vv_v256f32:
629; CHECK:       # %bb.0:
630; CHECK-NEXT:    lea %s0, 256
631; CHECK-NEXT:    lvl %s0
632; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
633; CHECK-NEXT:    vfmk.s.nenan %vm1, %v0
634; CHECK-NEXT:    b.l.t (, %s10)
635  %z = fcmp une <256 x float> %x, %y
636  ret <256 x i1> %z
637}
638
639; Function Attrs: nounwind
640define fastcc <256 x i1> @fcmp_une_sv_v256f32(float %x, <256 x float> %y) {
641; CHECK-LABEL: fcmp_une_sv_v256f32:
642; CHECK:       # %bb.0:
643; CHECK-NEXT:    lea %s1, 256
644; CHECK-NEXT:    lvl %s1
645; CHECK-NEXT:    vbrd %v1, %s0
646; CHECK-NEXT:    vfcmp.s %v0, %v1, %v0
647; CHECK-NEXT:    vfmk.s.nenan %vm1, %v0
648; CHECK-NEXT:    b.l.t (, %s10)
649  %xins = insertelement <256 x float> undef, float %x, i32 0
650  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
651  %z = fcmp une <256 x float> %vx, %y
652  ret <256 x i1> %z
653}
654
655; Function Attrs: nounwind
656define fastcc <256 x i1> @fcmp_une_vs_v256f32(<256 x float> %x, float %y) {
657; CHECK-LABEL: fcmp_une_vs_v256f32:
658; CHECK:       # %bb.0:
659; CHECK-NEXT:    lea %s1, 256
660; CHECK-NEXT:    lvl %s1
661; CHECK-NEXT:    vbrd %v1, %s0
662; CHECK-NEXT:    vfcmp.s %v0, %v0, %v1
663; CHECK-NEXT:    vfmk.s.nenan %vm1, %v0
664; CHECK-NEXT:    b.l.t (, %s10)
665  %yins = insertelement <256 x float> undef, float %y, i32 0
666  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
667  %z = fcmp une <256 x float> %x, %vy
668  ret <256 x i1> %z
669}
670
671; Function Attrs: nounwind
672define fastcc <256 x i1> @fcmp_true_vv_v256f32(<256 x float> %x, <256 x float> %y) {
673; CHECK-LABEL: fcmp_true_vv_v256f32:
674; CHECK:       # %bb.0:
675; CHECK-NEXT:    andm %vm1, %vm0, %vm0
676; CHECK-NEXT:    b.l.t (, %s10)
677  %z = fcmp true <256 x float> %x, %y
678  ret <256 x i1> %z
679}
680
681; Function Attrs: nounwind
682define fastcc <256 x i1> @fcmp_true_sv_v256f32(float %x, <256 x float> %y) {
683; CHECK-LABEL: fcmp_true_sv_v256f32:
684; CHECK:       # %bb.0:
685; CHECK-NEXT:    andm %vm1, %vm0, %vm0
686; CHECK-NEXT:    b.l.t (, %s10)
687  %xins = insertelement <256 x float> undef, float %x, i32 0
688  %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer
689  %z = fcmp true <256 x float> %vx, %y
690  ret <256 x i1> %z
691}
692
693; Function Attrs: nounwind
694define fastcc <256 x i1> @fcmp_true_vs_v256f32(<256 x float> %x, float %y) {
695; CHECK-LABEL: fcmp_true_vs_v256f32:
696; CHECK:       # %bb.0:
697; CHECK-NEXT:    andm %vm1, %vm0, %vm0
698; CHECK-NEXT:    b.l.t (, %s10)
699  %yins = insertelement <256 x float> undef, float %y, i32 0
700  %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer
701  %z = fcmp true <256 x float> %x, %vy
702  ret <256 x i1> %z
703}
704