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