1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfh,+v -target-abi=ilp32d \
3 ; RUN: -verify-machineinstrs < %s | FileCheck %s
4 ; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfh,+v -target-abi=lp64d \
5 ; RUN: -verify-machineinstrs < %s | FileCheck %s
7 declare <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half>, <vscale x 1 x half>, metadata, metadata)
8 define <vscale x 1 x i1> @fcmp_oeq_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
9 ; CHECK-LABEL: fcmp_oeq_vv_nxv1f16:
11 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
12 ; CHECK-NEXT: vmfeq.vv v0, v8, v9
14 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
15 ret <vscale x 1 x i1> %1
18 define <vscale x 1 x i1> @fcmp_oeq_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
19 ; CHECK-LABEL: fcmp_oeq_vf_nxv1f16:
21 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
22 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
24 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
25 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
26 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
27 ret <vscale x 1 x i1> %1
30 define <vscale x 1 x i1> @fcmp_oeq_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
31 ; CHECK-LABEL: fcmp_oeq_fv_nxv1f16:
33 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
34 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
36 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
37 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
38 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
39 ret <vscale x 1 x i1> %1
42 define <vscale x 1 x i1> @fcmp_ogt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
43 ; CHECK-LABEL: fcmp_ogt_vv_nxv1f16:
45 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
46 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
47 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
48 ; CHECK-NEXT: vmand.mm v0, v11, v10
49 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
51 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
52 ret <vscale x 1 x i1> %1
55 define <vscale x 1 x i1> @fcmp_ogt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
56 ; CHECK-LABEL: fcmp_ogt_vf_nxv1f16:
58 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
59 ; CHECK-NEXT: vfmv.v.f v9, fa0
60 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
61 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
62 ; CHECK-NEXT: vmand.mm v0, v9, v10
63 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
65 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
66 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
67 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
68 ret <vscale x 1 x i1> %1
71 define <vscale x 1 x i1> @fcmp_ogt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
72 ; CHECK-LABEL: fcmp_ogt_fv_nxv1f16:
74 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
75 ; CHECK-NEXT: vfmv.v.f v9, fa0
76 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
77 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
78 ; CHECK-NEXT: vmand.mm v0, v10, v9
79 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
81 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
82 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
83 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
84 ret <vscale x 1 x i1> %1
87 define <vscale x 1 x i1> @fcmp_oge_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
88 ; CHECK-LABEL: fcmp_oge_vv_nxv1f16:
90 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
91 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
92 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
93 ; CHECK-NEXT: vmand.mm v0, v11, v10
94 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
96 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
97 ret <vscale x 1 x i1> %1
100 define <vscale x 1 x i1> @fcmp_oge_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
101 ; CHECK-LABEL: fcmp_oge_vf_nxv1f16:
103 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
104 ; CHECK-NEXT: vfmv.v.f v9, fa0
105 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
106 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
107 ; CHECK-NEXT: vmand.mm v0, v9, v10
108 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
110 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
111 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
112 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
113 ret <vscale x 1 x i1> %1
116 define <vscale x 1 x i1> @fcmp_oge_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
117 ; CHECK-LABEL: fcmp_oge_fv_nxv1f16:
119 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
120 ; CHECK-NEXT: vfmv.v.f v9, fa0
121 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
122 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
123 ; CHECK-NEXT: vmand.mm v0, v10, v9
124 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
126 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
127 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
128 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
129 ret <vscale x 1 x i1> %1
132 define <vscale x 1 x i1> @fcmp_olt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
133 ; CHECK-LABEL: fcmp_olt_vv_nxv1f16:
135 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
136 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
137 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
138 ; CHECK-NEXT: vmand.mm v0, v11, v10
139 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
141 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
142 ret <vscale x 1 x i1> %1
145 define <vscale x 1 x i1> @fcmp_olt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
146 ; CHECK-LABEL: fcmp_olt_vf_nxv1f16:
148 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
149 ; CHECK-NEXT: vfmv.v.f v9, fa0
150 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
151 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
152 ; CHECK-NEXT: vmand.mm v0, v10, v9
153 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
155 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
156 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
157 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
158 ret <vscale x 1 x i1> %1
161 define <vscale x 1 x i1> @fcmp_olt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
162 ; CHECK-LABEL: fcmp_olt_fv_nxv1f16:
164 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
165 ; CHECK-NEXT: vfmv.v.f v9, fa0
166 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
167 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
168 ; CHECK-NEXT: vmand.mm v0, v9, v10
169 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
171 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
172 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
173 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
174 ret <vscale x 1 x i1> %1
177 define <vscale x 1 x i1> @fcmp_ole_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
178 ; CHECK-LABEL: fcmp_ole_vv_nxv1f16:
180 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
181 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
182 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
183 ; CHECK-NEXT: vmand.mm v0, v11, v10
184 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
186 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
187 ret <vscale x 1 x i1> %1
190 define <vscale x 1 x i1> @fcmp_ole_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
191 ; CHECK-LABEL: fcmp_ole_vf_nxv1f16:
193 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
194 ; CHECK-NEXT: vfmv.v.f v9, fa0
195 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
196 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
197 ; CHECK-NEXT: vmand.mm v0, v10, v9
198 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
200 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
201 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
202 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
203 ret <vscale x 1 x i1> %1
206 define <vscale x 1 x i1> @fcmp_ole_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
207 ; CHECK-LABEL: fcmp_ole_fv_nxv1f16:
209 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
210 ; CHECK-NEXT: vfmv.v.f v9, fa0
211 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
212 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
213 ; CHECK-NEXT: vmand.mm v0, v9, v10
214 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
216 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
217 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
218 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
219 ret <vscale x 1 x i1> %1
222 define <vscale x 1 x i1> @fcmp_one_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
223 ; CHECK-LABEL: fcmp_one_vv_nxv1f16:
225 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
226 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
227 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
228 ; CHECK-NEXT: vmand.mm v0, v11, v10
229 ; CHECK-NEXT: vmv1r.v v10, v0
230 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
231 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
232 ; CHECK-NEXT: vmor.mm v0, v0, v10
234 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
235 ret <vscale x 1 x i1> %1
238 define <vscale x 1 x i1> @fcmp_one_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
239 ; CHECK-LABEL: fcmp_one_vf_nxv1f16:
241 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
242 ; CHECK-NEXT: vfmv.v.f v9, fa0
243 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
244 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
245 ; CHECK-NEXT: vmand.mm v0, v10, v9
246 ; CHECK-NEXT: vmv1r.v v9, v0
247 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
248 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
249 ; CHECK-NEXT: vmor.mm v0, v0, v9
251 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
252 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
253 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
254 ret <vscale x 1 x i1> %1
257 define <vscale x 1 x i1> @fcmp_one_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
258 ; CHECK-LABEL: fcmp_one_fv_nxv1f16:
260 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
261 ; CHECK-NEXT: vfmv.v.f v9, fa0
262 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
263 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
264 ; CHECK-NEXT: vmand.mm v0, v9, v10
265 ; CHECK-NEXT: vmv1r.v v9, v0
266 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
267 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
268 ; CHECK-NEXT: vmor.mm v0, v0, v9
270 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
271 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
272 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
273 ret <vscale x 1 x i1> %1
276 define <vscale x 1 x i1> @fcmp_ord_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
277 ; CHECK-LABEL: fcmp_ord_vv_nxv1f16:
279 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
280 ; CHECK-NEXT: vmfeq.vv v9, v9, v9
281 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
282 ; CHECK-NEXT: vmand.mm v0, v8, v9
284 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
285 ret <vscale x 1 x i1> %1
288 define <vscale x 1 x i1> @fcmp_ord_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
289 ; CHECK-LABEL: fcmp_ord_vf_nxv1f16:
291 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
292 ; CHECK-NEXT: vfmv.v.f v9, fa0
293 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
294 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
295 ; CHECK-NEXT: vmand.mm v0, v8, v9
297 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
298 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
299 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
300 ret <vscale x 1 x i1> %1
303 define <vscale x 1 x i1> @fcmp_ord_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
304 ; CHECK-LABEL: fcmp_ord_fv_nxv1f16:
306 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
307 ; CHECK-NEXT: vfmv.v.f v9, fa0
308 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
309 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
310 ; CHECK-NEXT: vmand.mm v0, v9, v8
312 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
313 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
314 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
315 ret <vscale x 1 x i1> %1
318 define <vscale x 1 x i1> @fcmp_ueq_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
319 ; CHECK-LABEL: fcmp_ueq_vv_nxv1f16:
321 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
322 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
323 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
324 ; CHECK-NEXT: vmand.mm v0, v11, v10
325 ; CHECK-NEXT: vmv1r.v v10, v0
326 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
327 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
328 ; CHECK-NEXT: vmnor.mm v0, v0, v10
330 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
331 ret <vscale x 1 x i1> %1
334 define <vscale x 1 x i1> @fcmp_ueq_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
335 ; CHECK-LABEL: fcmp_ueq_vf_nxv1f16:
337 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
338 ; CHECK-NEXT: vfmv.v.f v9, fa0
339 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
340 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
341 ; CHECK-NEXT: vmand.mm v0, v10, v9
342 ; CHECK-NEXT: vmv1r.v v9, v0
343 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
344 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
345 ; CHECK-NEXT: vmnor.mm v0, v0, v9
347 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
348 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
349 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
350 ret <vscale x 1 x i1> %1
353 define <vscale x 1 x i1> @fcmp_ueq_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
354 ; CHECK-LABEL: fcmp_ueq_fv_nxv1f16:
356 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
357 ; CHECK-NEXT: vfmv.v.f v9, fa0
358 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
359 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
360 ; CHECK-NEXT: vmand.mm v0, v9, v10
361 ; CHECK-NEXT: vmv1r.v v9, v0
362 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
363 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
364 ; CHECK-NEXT: vmnor.mm v0, v0, v9
366 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
367 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
368 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
369 ret <vscale x 1 x i1> %1
372 define <vscale x 1 x i1> @fcmp_ugt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
373 ; CHECK-LABEL: fcmp_ugt_vv_nxv1f16:
375 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
376 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
377 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
378 ; CHECK-NEXT: vmand.mm v0, v11, v10
379 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
380 ; CHECK-NEXT: vmnot.m v0, v0
382 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
383 ret <vscale x 1 x i1> %1
386 define <vscale x 1 x i1> @fcmp_ugt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
387 ; CHECK-LABEL: fcmp_ugt_vf_nxv1f16:
389 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
390 ; CHECK-NEXT: vfmv.v.f v9, fa0
391 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
392 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
393 ; CHECK-NEXT: vmand.mm v0, v10, v9
394 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
395 ; CHECK-NEXT: vmnot.m v0, v0
397 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
398 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
399 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
400 ret <vscale x 1 x i1> %1
403 define <vscale x 1 x i1> @fcmp_ugt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
404 ; CHECK-LABEL: fcmp_ugt_fv_nxv1f16:
406 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
407 ; CHECK-NEXT: vfmv.v.f v9, fa0
408 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
409 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
410 ; CHECK-NEXT: vmand.mm v0, v9, v10
411 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
412 ; CHECK-NEXT: vmnot.m v0, v0
414 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
415 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
416 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
417 ret <vscale x 1 x i1> %1
420 define <vscale x 1 x i1> @fcmp_uge_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
421 ; CHECK-LABEL: fcmp_uge_vv_nxv1f16:
423 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
424 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
425 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
426 ; CHECK-NEXT: vmand.mm v0, v11, v10
427 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
428 ; CHECK-NEXT: vmnot.m v0, v0
430 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
431 ret <vscale x 1 x i1> %1
434 define <vscale x 1 x i1> @fcmp_uge_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
435 ; CHECK-LABEL: fcmp_uge_vf_nxv1f16:
437 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
438 ; CHECK-NEXT: vfmv.v.f v9, fa0
439 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
440 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
441 ; CHECK-NEXT: vmand.mm v0, v10, v9
442 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
443 ; CHECK-NEXT: vmnot.m v0, v0
445 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
446 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
447 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
448 ret <vscale x 1 x i1> %1
451 define <vscale x 1 x i1> @fcmp_uge_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
452 ; CHECK-LABEL: fcmp_uge_fv_nxv1f16:
454 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
455 ; CHECK-NEXT: vfmv.v.f v9, fa0
456 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
457 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
458 ; CHECK-NEXT: vmand.mm v0, v9, v10
459 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
460 ; CHECK-NEXT: vmnot.m v0, v0
462 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
463 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
464 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
465 ret <vscale x 1 x i1> %1
468 define <vscale x 1 x i1> @fcmp_ult_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
469 ; CHECK-LABEL: fcmp_ult_vv_nxv1f16:
471 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
472 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
473 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
474 ; CHECK-NEXT: vmand.mm v0, v11, v10
475 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
476 ; CHECK-NEXT: vmnot.m v0, v0
478 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
479 ret <vscale x 1 x i1> %1
482 define <vscale x 1 x i1> @fcmp_ult_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
483 ; CHECK-LABEL: fcmp_ult_vf_nxv1f16:
485 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
486 ; CHECK-NEXT: vfmv.v.f v9, fa0
487 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
488 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
489 ; CHECK-NEXT: vmand.mm v0, v9, v10
490 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
491 ; CHECK-NEXT: vmnot.m v0, v0
493 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
494 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
495 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
496 ret <vscale x 1 x i1> %1
499 define <vscale x 1 x i1> @fcmp_ult_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
500 ; CHECK-LABEL: fcmp_ult_fv_nxv1f16:
502 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
503 ; CHECK-NEXT: vfmv.v.f v9, fa0
504 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
505 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
506 ; CHECK-NEXT: vmand.mm v0, v10, v9
507 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
508 ; CHECK-NEXT: vmnot.m v0, v0
510 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
511 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
512 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
513 ret <vscale x 1 x i1> %1
516 define <vscale x 1 x i1> @fcmp_ule_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
517 ; CHECK-LABEL: fcmp_ule_vv_nxv1f16:
519 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
520 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
521 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
522 ; CHECK-NEXT: vmand.mm v0, v11, v10
523 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
524 ; CHECK-NEXT: vmnot.m v0, v0
526 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
527 ret <vscale x 1 x i1> %1
530 define <vscale x 1 x i1> @fcmp_ule_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
531 ; CHECK-LABEL: fcmp_ule_vf_nxv1f16:
533 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
534 ; CHECK-NEXT: vfmv.v.f v9, fa0
535 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
536 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
537 ; CHECK-NEXT: vmand.mm v0, v9, v10
538 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
539 ; CHECK-NEXT: vmnot.m v0, v0
541 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
542 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
543 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
544 ret <vscale x 1 x i1> %1
547 define <vscale x 1 x i1> @fcmp_ule_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
548 ; CHECK-LABEL: fcmp_ule_fv_nxv1f16:
550 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
551 ; CHECK-NEXT: vfmv.v.f v9, fa0
552 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
553 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
554 ; CHECK-NEXT: vmand.mm v0, v10, v9
555 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
556 ; CHECK-NEXT: vmnot.m v0, v0
558 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
559 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
560 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
561 ret <vscale x 1 x i1> %1
564 define <vscale x 1 x i1> @fcmp_une_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
565 ; CHECK-LABEL: fcmp_une_vv_nxv1f16:
567 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
568 ; CHECK-NEXT: vmfne.vv v0, v8, v9
570 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
571 ret <vscale x 1 x i1> %1
574 define <vscale x 1 x i1> @fcmp_une_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
575 ; CHECK-LABEL: fcmp_une_vf_nxv1f16:
577 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
578 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
580 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
581 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
582 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
583 ret <vscale x 1 x i1> %1
586 define <vscale x 1 x i1> @fcmp_une_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
587 ; CHECK-LABEL: fcmp_une_fv_nxv1f16:
589 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
590 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
592 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
593 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
594 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
595 ret <vscale x 1 x i1> %1
598 define <vscale x 1 x i1> @fcmp_uno_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp {
599 ; CHECK-LABEL: fcmp_uno_vv_nxv1f16:
601 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
602 ; CHECK-NEXT: vmfne.vv v9, v9, v9
603 ; CHECK-NEXT: vmfne.vv v8, v8, v8
604 ; CHECK-NEXT: vmor.mm v0, v8, v9
606 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
607 ret <vscale x 1 x i1> %1
610 define <vscale x 1 x i1> @fcmp_uno_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
611 ; CHECK-LABEL: fcmp_uno_vf_nxv1f16:
613 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
614 ; CHECK-NEXT: vfmv.v.f v9, fa0
615 ; CHECK-NEXT: vmfne.vf v9, v9, fa0
616 ; CHECK-NEXT: vmfne.vv v8, v8, v8
617 ; CHECK-NEXT: vmor.mm v0, v8, v9
619 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
620 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
621 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
622 ret <vscale x 1 x i1> %1
625 define <vscale x 1 x i1> @fcmp_uno_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp {
626 ; CHECK-LABEL: fcmp_uno_fv_nxv1f16:
628 ; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
629 ; CHECK-NEXT: vfmv.v.f v9, fa0
630 ; CHECK-NEXT: vmfne.vf v9, v9, fa0
631 ; CHECK-NEXT: vmfne.vv v8, v8, v8
632 ; CHECK-NEXT: vmor.mm v0, v9, v8
634 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0
635 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
636 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
637 ret <vscale x 1 x i1> %1
640 declare <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>, metadata, metadata)
641 define <vscale x 2 x i1> @fcmp_oeq_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
642 ; CHECK-LABEL: fcmp_oeq_vv_nxv2f16:
644 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
645 ; CHECK-NEXT: vmfeq.vv v0, v8, v9
647 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
648 ret <vscale x 2 x i1> %1
651 define <vscale x 2 x i1> @fcmp_oeq_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
652 ; CHECK-LABEL: fcmp_oeq_vf_nxv2f16:
654 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
655 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
657 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
658 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
659 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
660 ret <vscale x 2 x i1> %1
663 define <vscale x 2 x i1> @fcmp_oeq_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
664 ; CHECK-LABEL: fcmp_oeq_fv_nxv2f16:
666 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
667 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
669 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
670 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
671 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
672 ret <vscale x 2 x i1> %1
675 define <vscale x 2 x i1> @fcmp_ogt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
676 ; CHECK-LABEL: fcmp_ogt_vv_nxv2f16:
678 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
679 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
680 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
681 ; CHECK-NEXT: vmand.mm v0, v11, v10
682 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
684 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
685 ret <vscale x 2 x i1> %1
688 define <vscale x 2 x i1> @fcmp_ogt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
689 ; CHECK-LABEL: fcmp_ogt_vf_nxv2f16:
691 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
692 ; CHECK-NEXT: vfmv.v.f v9, fa0
693 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
694 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
695 ; CHECK-NEXT: vmand.mm v0, v9, v10
696 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
698 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
699 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
700 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
701 ret <vscale x 2 x i1> %1
704 define <vscale x 2 x i1> @fcmp_ogt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
705 ; CHECK-LABEL: fcmp_ogt_fv_nxv2f16:
707 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
708 ; CHECK-NEXT: vfmv.v.f v9, fa0
709 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
710 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
711 ; CHECK-NEXT: vmand.mm v0, v10, v9
712 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
714 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
715 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
716 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
717 ret <vscale x 2 x i1> %1
720 define <vscale x 2 x i1> @fcmp_oge_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
721 ; CHECK-LABEL: fcmp_oge_vv_nxv2f16:
723 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
724 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
725 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
726 ; CHECK-NEXT: vmand.mm v0, v11, v10
727 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
729 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
730 ret <vscale x 2 x i1> %1
733 define <vscale x 2 x i1> @fcmp_oge_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
734 ; CHECK-LABEL: fcmp_oge_vf_nxv2f16:
736 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
737 ; CHECK-NEXT: vfmv.v.f v9, fa0
738 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
739 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
740 ; CHECK-NEXT: vmand.mm v0, v9, v10
741 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
743 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
744 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
745 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
746 ret <vscale x 2 x i1> %1
749 define <vscale x 2 x i1> @fcmp_oge_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
750 ; CHECK-LABEL: fcmp_oge_fv_nxv2f16:
752 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
753 ; CHECK-NEXT: vfmv.v.f v9, fa0
754 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
755 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
756 ; CHECK-NEXT: vmand.mm v0, v10, v9
757 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
759 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
760 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
761 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
762 ret <vscale x 2 x i1> %1
765 define <vscale x 2 x i1> @fcmp_olt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
766 ; CHECK-LABEL: fcmp_olt_vv_nxv2f16:
768 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
769 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
770 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
771 ; CHECK-NEXT: vmand.mm v0, v11, v10
772 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
774 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
775 ret <vscale x 2 x i1> %1
778 define <vscale x 2 x i1> @fcmp_olt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
779 ; CHECK-LABEL: fcmp_olt_vf_nxv2f16:
781 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
782 ; CHECK-NEXT: vfmv.v.f v9, fa0
783 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
784 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
785 ; CHECK-NEXT: vmand.mm v0, v10, v9
786 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
788 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
789 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
790 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
791 ret <vscale x 2 x i1> %1
794 define <vscale x 2 x i1> @fcmp_olt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
795 ; CHECK-LABEL: fcmp_olt_fv_nxv2f16:
797 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
798 ; CHECK-NEXT: vfmv.v.f v9, fa0
799 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
800 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
801 ; CHECK-NEXT: vmand.mm v0, v9, v10
802 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
804 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
805 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
806 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
807 ret <vscale x 2 x i1> %1
810 define <vscale x 2 x i1> @fcmp_ole_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
811 ; CHECK-LABEL: fcmp_ole_vv_nxv2f16:
813 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
814 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
815 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
816 ; CHECK-NEXT: vmand.mm v0, v11, v10
817 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
819 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
820 ret <vscale x 2 x i1> %1
823 define <vscale x 2 x i1> @fcmp_ole_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
824 ; CHECK-LABEL: fcmp_ole_vf_nxv2f16:
826 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
827 ; CHECK-NEXT: vfmv.v.f v9, fa0
828 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
829 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
830 ; CHECK-NEXT: vmand.mm v0, v10, v9
831 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
833 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
834 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
835 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
836 ret <vscale x 2 x i1> %1
839 define <vscale x 2 x i1> @fcmp_ole_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
840 ; CHECK-LABEL: fcmp_ole_fv_nxv2f16:
842 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
843 ; CHECK-NEXT: vfmv.v.f v9, fa0
844 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
845 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
846 ; CHECK-NEXT: vmand.mm v0, v9, v10
847 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
849 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
850 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
851 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
852 ret <vscale x 2 x i1> %1
855 define <vscale x 2 x i1> @fcmp_one_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
856 ; CHECK-LABEL: fcmp_one_vv_nxv2f16:
858 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
859 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
860 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
861 ; CHECK-NEXT: vmand.mm v0, v11, v10
862 ; CHECK-NEXT: vmv1r.v v10, v0
863 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
864 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
865 ; CHECK-NEXT: vmor.mm v0, v0, v10
867 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
868 ret <vscale x 2 x i1> %1
871 define <vscale x 2 x i1> @fcmp_one_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
872 ; CHECK-LABEL: fcmp_one_vf_nxv2f16:
874 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
875 ; CHECK-NEXT: vfmv.v.f v9, fa0
876 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
877 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
878 ; CHECK-NEXT: vmand.mm v0, v10, v9
879 ; CHECK-NEXT: vmv1r.v v9, v0
880 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
881 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
882 ; CHECK-NEXT: vmor.mm v0, v0, v9
884 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
885 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
886 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
887 ret <vscale x 2 x i1> %1
890 define <vscale x 2 x i1> @fcmp_one_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
891 ; CHECK-LABEL: fcmp_one_fv_nxv2f16:
893 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
894 ; CHECK-NEXT: vfmv.v.f v9, fa0
895 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
896 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
897 ; CHECK-NEXT: vmand.mm v0, v9, v10
898 ; CHECK-NEXT: vmv1r.v v9, v0
899 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
900 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
901 ; CHECK-NEXT: vmor.mm v0, v0, v9
903 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
904 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
905 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
906 ret <vscale x 2 x i1> %1
909 define <vscale x 2 x i1> @fcmp_ord_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
910 ; CHECK-LABEL: fcmp_ord_vv_nxv2f16:
912 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
913 ; CHECK-NEXT: vmfeq.vv v9, v9, v9
914 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
915 ; CHECK-NEXT: vmand.mm v0, v8, v9
917 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
918 ret <vscale x 2 x i1> %1
921 define <vscale x 2 x i1> @fcmp_ord_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
922 ; CHECK-LABEL: fcmp_ord_vf_nxv2f16:
924 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
925 ; CHECK-NEXT: vfmv.v.f v9, fa0
926 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
927 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
928 ; CHECK-NEXT: vmand.mm v0, v8, v9
930 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
931 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
932 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
933 ret <vscale x 2 x i1> %1
936 define <vscale x 2 x i1> @fcmp_ord_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
937 ; CHECK-LABEL: fcmp_ord_fv_nxv2f16:
939 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
940 ; CHECK-NEXT: vfmv.v.f v9, fa0
941 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
942 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
943 ; CHECK-NEXT: vmand.mm v0, v9, v8
945 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
946 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
947 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
948 ret <vscale x 2 x i1> %1
951 define <vscale x 2 x i1> @fcmp_ueq_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
952 ; CHECK-LABEL: fcmp_ueq_vv_nxv2f16:
954 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
955 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
956 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
957 ; CHECK-NEXT: vmand.mm v0, v11, v10
958 ; CHECK-NEXT: vmv1r.v v10, v0
959 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
960 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
961 ; CHECK-NEXT: vmnor.mm v0, v0, v10
963 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
964 ret <vscale x 2 x i1> %1
967 define <vscale x 2 x i1> @fcmp_ueq_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
968 ; CHECK-LABEL: fcmp_ueq_vf_nxv2f16:
970 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
971 ; CHECK-NEXT: vfmv.v.f v9, fa0
972 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
973 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
974 ; CHECK-NEXT: vmand.mm v0, v10, v9
975 ; CHECK-NEXT: vmv1r.v v9, v0
976 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
977 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
978 ; CHECK-NEXT: vmnor.mm v0, v0, v9
980 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
981 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
982 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
983 ret <vscale x 2 x i1> %1
986 define <vscale x 2 x i1> @fcmp_ueq_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
987 ; CHECK-LABEL: fcmp_ueq_fv_nxv2f16:
989 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
990 ; CHECK-NEXT: vfmv.v.f v9, fa0
991 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
992 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
993 ; CHECK-NEXT: vmand.mm v0, v9, v10
994 ; CHECK-NEXT: vmv1r.v v9, v0
995 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
996 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
997 ; CHECK-NEXT: vmnor.mm v0, v0, v9
999 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1000 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1001 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1002 ret <vscale x 2 x i1> %1
1005 define <vscale x 2 x i1> @fcmp_ugt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
1006 ; CHECK-LABEL: fcmp_ugt_vv_nxv2f16:
1008 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
1009 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
1010 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
1011 ; CHECK-NEXT: vmand.mm v0, v11, v10
1012 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
1013 ; CHECK-NEXT: vmnot.m v0, v0
1015 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1016 ret <vscale x 2 x i1> %1
1019 define <vscale x 2 x i1> @fcmp_ugt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1020 ; CHECK-LABEL: fcmp_ugt_vf_nxv2f16:
1022 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
1023 ; CHECK-NEXT: vfmv.v.f v9, fa0
1024 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1025 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1026 ; CHECK-NEXT: vmand.mm v0, v10, v9
1027 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
1028 ; CHECK-NEXT: vmnot.m v0, v0
1030 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1031 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1032 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1033 ret <vscale x 2 x i1> %1
1036 define <vscale x 2 x i1> @fcmp_ugt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1037 ; CHECK-LABEL: fcmp_ugt_fv_nxv2f16:
1039 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
1040 ; CHECK-NEXT: vfmv.v.f v9, fa0
1041 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1042 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1043 ; CHECK-NEXT: vmand.mm v0, v9, v10
1044 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
1045 ; CHECK-NEXT: vmnot.m v0, v0
1047 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1048 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1049 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1050 ret <vscale x 2 x i1> %1
1053 define <vscale x 2 x i1> @fcmp_uge_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
1054 ; CHECK-LABEL: fcmp_uge_vv_nxv2f16:
1056 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
1057 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
1058 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
1059 ; CHECK-NEXT: vmand.mm v0, v11, v10
1060 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
1061 ; CHECK-NEXT: vmnot.m v0, v0
1063 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
1064 ret <vscale x 2 x i1> %1
1067 define <vscale x 2 x i1> @fcmp_uge_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1068 ; CHECK-LABEL: fcmp_uge_vf_nxv2f16:
1070 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
1071 ; CHECK-NEXT: vfmv.v.f v9, fa0
1072 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1073 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1074 ; CHECK-NEXT: vmand.mm v0, v10, v9
1075 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
1076 ; CHECK-NEXT: vmnot.m v0, v0
1078 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1079 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1080 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
1081 ret <vscale x 2 x i1> %1
1084 define <vscale x 2 x i1> @fcmp_uge_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1085 ; CHECK-LABEL: fcmp_uge_fv_nxv2f16:
1087 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
1088 ; CHECK-NEXT: vfmv.v.f v9, fa0
1089 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1090 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1091 ; CHECK-NEXT: vmand.mm v0, v9, v10
1092 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
1093 ; CHECK-NEXT: vmnot.m v0, v0
1095 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1096 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1097 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
1098 ret <vscale x 2 x i1> %1
1101 define <vscale x 2 x i1> @fcmp_ult_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
1102 ; CHECK-LABEL: fcmp_ult_vv_nxv2f16:
1104 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
1105 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1106 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
1107 ; CHECK-NEXT: vmand.mm v0, v11, v10
1108 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
1109 ; CHECK-NEXT: vmnot.m v0, v0
1111 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
1112 ret <vscale x 2 x i1> %1
1115 define <vscale x 2 x i1> @fcmp_ult_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1116 ; CHECK-LABEL: fcmp_ult_vf_nxv2f16:
1118 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
1119 ; CHECK-NEXT: vfmv.v.f v9, fa0
1120 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1121 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1122 ; CHECK-NEXT: vmand.mm v0, v9, v10
1123 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
1124 ; CHECK-NEXT: vmnot.m v0, v0
1126 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1127 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1128 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
1129 ret <vscale x 2 x i1> %1
1132 define <vscale x 2 x i1> @fcmp_ult_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1133 ; CHECK-LABEL: fcmp_ult_fv_nxv2f16:
1135 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
1136 ; CHECK-NEXT: vfmv.v.f v9, fa0
1137 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1138 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1139 ; CHECK-NEXT: vmand.mm v0, v10, v9
1140 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
1141 ; CHECK-NEXT: vmnot.m v0, v0
1143 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1144 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1145 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
1146 ret <vscale x 2 x i1> %1
1149 define <vscale x 2 x i1> @fcmp_ule_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
1150 ; CHECK-LABEL: fcmp_ule_vv_nxv2f16:
1152 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
1153 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1154 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
1155 ; CHECK-NEXT: vmand.mm v0, v11, v10
1156 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
1157 ; CHECK-NEXT: vmnot.m v0, v0
1159 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
1160 ret <vscale x 2 x i1> %1
1163 define <vscale x 2 x i1> @fcmp_ule_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1164 ; CHECK-LABEL: fcmp_ule_vf_nxv2f16:
1166 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
1167 ; CHECK-NEXT: vfmv.v.f v9, fa0
1168 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1169 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1170 ; CHECK-NEXT: vmand.mm v0, v9, v10
1171 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
1172 ; CHECK-NEXT: vmnot.m v0, v0
1174 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1175 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1176 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
1177 ret <vscale x 2 x i1> %1
1180 define <vscale x 2 x i1> @fcmp_ule_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1181 ; CHECK-LABEL: fcmp_ule_fv_nxv2f16:
1183 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
1184 ; CHECK-NEXT: vfmv.v.f v9, fa0
1185 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1186 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1187 ; CHECK-NEXT: vmand.mm v0, v10, v9
1188 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
1189 ; CHECK-NEXT: vmnot.m v0, v0
1191 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1192 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1193 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
1194 ret <vscale x 2 x i1> %1
1197 define <vscale x 2 x i1> @fcmp_une_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
1198 ; CHECK-LABEL: fcmp_une_vv_nxv2f16:
1200 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1201 ; CHECK-NEXT: vmfne.vv v0, v8, v9
1203 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
1204 ret <vscale x 2 x i1> %1
1207 define <vscale x 2 x i1> @fcmp_une_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1208 ; CHECK-LABEL: fcmp_une_vf_nxv2f16:
1210 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1211 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
1213 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1214 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1215 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
1216 ret <vscale x 2 x i1> %1
1219 define <vscale x 2 x i1> @fcmp_une_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1220 ; CHECK-LABEL: fcmp_une_fv_nxv2f16:
1222 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1223 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
1225 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1226 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1227 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
1228 ret <vscale x 2 x i1> %1
1231 define <vscale x 2 x i1> @fcmp_uno_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp {
1232 ; CHECK-LABEL: fcmp_uno_vv_nxv2f16:
1234 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1235 ; CHECK-NEXT: vmfne.vv v9, v9, v9
1236 ; CHECK-NEXT: vmfne.vv v8, v8, v8
1237 ; CHECK-NEXT: vmor.mm v0, v8, v9
1239 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
1240 ret <vscale x 2 x i1> %1
1243 define <vscale x 2 x i1> @fcmp_uno_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1244 ; CHECK-LABEL: fcmp_uno_vf_nxv2f16:
1246 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1247 ; CHECK-NEXT: vfmv.v.f v9, fa0
1248 ; CHECK-NEXT: vmfne.vf v9, v9, fa0
1249 ; CHECK-NEXT: vmfne.vv v8, v8, v8
1250 ; CHECK-NEXT: vmor.mm v0, v8, v9
1252 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1253 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1254 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
1255 ret <vscale x 2 x i1> %1
1258 define <vscale x 2 x i1> @fcmp_uno_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp {
1259 ; CHECK-LABEL: fcmp_uno_fv_nxv2f16:
1261 ; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
1262 ; CHECK-NEXT: vfmv.v.f v9, fa0
1263 ; CHECK-NEXT: vmfne.vf v9, v9, fa0
1264 ; CHECK-NEXT: vmfne.vv v8, v8, v8
1265 ; CHECK-NEXT: vmor.mm v0, v9, v8
1267 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0
1268 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
1269 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
1270 ret <vscale x 2 x i1> %1
1273 declare <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>, metadata, metadata)
1274 define <vscale x 4 x i1> @fcmp_oeq_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1275 ; CHECK-LABEL: fcmp_oeq_vv_nxv4f16:
1277 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1278 ; CHECK-NEXT: vmfeq.vv v0, v8, v9
1280 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1281 ret <vscale x 4 x i1> %1
1284 define <vscale x 4 x i1> @fcmp_oeq_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1285 ; CHECK-LABEL: fcmp_oeq_vf_nxv4f16:
1287 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1288 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
1290 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1291 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1292 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1293 ret <vscale x 4 x i1> %1
1296 define <vscale x 4 x i1> @fcmp_oeq_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1297 ; CHECK-LABEL: fcmp_oeq_fv_nxv4f16:
1299 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1300 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
1302 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1303 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1304 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1305 ret <vscale x 4 x i1> %1
1308 define <vscale x 4 x i1> @fcmp_ogt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1309 ; CHECK-LABEL: fcmp_ogt_vv_nxv4f16:
1311 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1312 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1313 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
1314 ; CHECK-NEXT: vmand.mm v0, v11, v10
1315 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
1317 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1318 ret <vscale x 4 x i1> %1
1321 define <vscale x 4 x i1> @fcmp_ogt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1322 ; CHECK-LABEL: fcmp_ogt_vf_nxv4f16:
1324 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1325 ; CHECK-NEXT: vfmv.v.f v9, fa0
1326 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1327 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1328 ; CHECK-NEXT: vmand.mm v0, v9, v10
1329 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
1331 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1332 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1333 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1334 ret <vscale x 4 x i1> %1
1337 define <vscale x 4 x i1> @fcmp_ogt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1338 ; CHECK-LABEL: fcmp_ogt_fv_nxv4f16:
1340 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1341 ; CHECK-NEXT: vfmv.v.f v9, fa0
1342 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1343 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1344 ; CHECK-NEXT: vmand.mm v0, v10, v9
1345 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
1347 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1348 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1349 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1350 ret <vscale x 4 x i1> %1
1353 define <vscale x 4 x i1> @fcmp_oge_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1354 ; CHECK-LABEL: fcmp_oge_vv_nxv4f16:
1356 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1357 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1358 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
1359 ; CHECK-NEXT: vmand.mm v0, v11, v10
1360 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
1362 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
1363 ret <vscale x 4 x i1> %1
1366 define <vscale x 4 x i1> @fcmp_oge_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1367 ; CHECK-LABEL: fcmp_oge_vf_nxv4f16:
1369 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1370 ; CHECK-NEXT: vfmv.v.f v9, fa0
1371 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1372 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1373 ; CHECK-NEXT: vmand.mm v0, v9, v10
1374 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
1376 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1377 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1378 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
1379 ret <vscale x 4 x i1> %1
1382 define <vscale x 4 x i1> @fcmp_oge_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1383 ; CHECK-LABEL: fcmp_oge_fv_nxv4f16:
1385 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1386 ; CHECK-NEXT: vfmv.v.f v9, fa0
1387 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1388 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1389 ; CHECK-NEXT: vmand.mm v0, v10, v9
1390 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
1392 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1393 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1394 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
1395 ret <vscale x 4 x i1> %1
1398 define <vscale x 4 x i1> @fcmp_olt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1399 ; CHECK-LABEL: fcmp_olt_vv_nxv4f16:
1401 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1402 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
1403 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
1404 ; CHECK-NEXT: vmand.mm v0, v11, v10
1405 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
1407 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
1408 ret <vscale x 4 x i1> %1
1411 define <vscale x 4 x i1> @fcmp_olt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1412 ; CHECK-LABEL: fcmp_olt_vf_nxv4f16:
1414 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1415 ; CHECK-NEXT: vfmv.v.f v9, fa0
1416 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1417 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1418 ; CHECK-NEXT: vmand.mm v0, v10, v9
1419 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
1421 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1422 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1423 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
1424 ret <vscale x 4 x i1> %1
1427 define <vscale x 4 x i1> @fcmp_olt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1428 ; CHECK-LABEL: fcmp_olt_fv_nxv4f16:
1430 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1431 ; CHECK-NEXT: vfmv.v.f v9, fa0
1432 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1433 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1434 ; CHECK-NEXT: vmand.mm v0, v9, v10
1435 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
1437 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1438 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1439 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
1440 ret <vscale x 4 x i1> %1
1443 define <vscale x 4 x i1> @fcmp_ole_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1444 ; CHECK-LABEL: fcmp_ole_vv_nxv4f16:
1446 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1447 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
1448 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
1449 ; CHECK-NEXT: vmand.mm v0, v11, v10
1450 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
1452 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
1453 ret <vscale x 4 x i1> %1
1456 define <vscale x 4 x i1> @fcmp_ole_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1457 ; CHECK-LABEL: fcmp_ole_vf_nxv4f16:
1459 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1460 ; CHECK-NEXT: vfmv.v.f v9, fa0
1461 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1462 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1463 ; CHECK-NEXT: vmand.mm v0, v10, v9
1464 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
1466 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1467 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1468 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
1469 ret <vscale x 4 x i1> %1
1472 define <vscale x 4 x i1> @fcmp_ole_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1473 ; CHECK-LABEL: fcmp_ole_fv_nxv4f16:
1475 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1476 ; CHECK-NEXT: vfmv.v.f v9, fa0
1477 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1478 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1479 ; CHECK-NEXT: vmand.mm v0, v9, v10
1480 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
1482 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1483 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1484 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
1485 ret <vscale x 4 x i1> %1
1488 define <vscale x 4 x i1> @fcmp_one_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1489 ; CHECK-LABEL: fcmp_one_vv_nxv4f16:
1491 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1492 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
1493 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
1494 ; CHECK-NEXT: vmand.mm v0, v11, v10
1495 ; CHECK-NEXT: vmv.v.v v10, v0
1496 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
1497 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
1498 ; CHECK-NEXT: vmor.mm v0, v0, v10
1500 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
1501 ret <vscale x 4 x i1> %1
1504 define <vscale x 4 x i1> @fcmp_one_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1505 ; CHECK-LABEL: fcmp_one_vf_nxv4f16:
1507 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1508 ; CHECK-NEXT: vfmv.v.f v9, fa0
1509 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1510 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1511 ; CHECK-NEXT: vmand.mm v0, v10, v9
1512 ; CHECK-NEXT: vmv.v.v v9, v0
1513 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
1514 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
1515 ; CHECK-NEXT: vmor.mm v0, v0, v9
1517 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1518 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1519 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
1520 ret <vscale x 4 x i1> %1
1523 define <vscale x 4 x i1> @fcmp_one_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1524 ; CHECK-LABEL: fcmp_one_fv_nxv4f16:
1526 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1527 ; CHECK-NEXT: vfmv.v.f v9, fa0
1528 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1529 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1530 ; CHECK-NEXT: vmand.mm v0, v9, v10
1531 ; CHECK-NEXT: vmv.v.v v9, v0
1532 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
1533 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
1534 ; CHECK-NEXT: vmor.mm v0, v0, v9
1536 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1537 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1538 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
1539 ret <vscale x 4 x i1> %1
1542 define <vscale x 4 x i1> @fcmp_ord_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1543 ; CHECK-LABEL: fcmp_ord_vv_nxv4f16:
1545 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1546 ; CHECK-NEXT: vmfeq.vv v9, v9, v9
1547 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
1548 ; CHECK-NEXT: vmand.mm v0, v8, v9
1550 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
1551 ret <vscale x 4 x i1> %1
1554 define <vscale x 4 x i1> @fcmp_ord_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1555 ; CHECK-LABEL: fcmp_ord_vf_nxv4f16:
1557 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1558 ; CHECK-NEXT: vfmv.v.f v9, fa0
1559 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1560 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
1561 ; CHECK-NEXT: vmand.mm v0, v8, v9
1563 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1564 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1565 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
1566 ret <vscale x 4 x i1> %1
1569 define <vscale x 4 x i1> @fcmp_ord_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1570 ; CHECK-LABEL: fcmp_ord_fv_nxv4f16:
1572 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1573 ; CHECK-NEXT: vfmv.v.f v9, fa0
1574 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1575 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
1576 ; CHECK-NEXT: vmand.mm v0, v9, v8
1578 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1579 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1580 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
1581 ret <vscale x 4 x i1> %1
1584 define <vscale x 4 x i1> @fcmp_ueq_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1585 ; CHECK-LABEL: fcmp_ueq_vv_nxv4f16:
1587 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1588 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
1589 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
1590 ; CHECK-NEXT: vmand.mm v0, v11, v10
1591 ; CHECK-NEXT: vmv.v.v v10, v0
1592 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
1593 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
1594 ; CHECK-NEXT: vmnor.mm v0, v0, v10
1596 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1597 ret <vscale x 4 x i1> %1
1600 define <vscale x 4 x i1> @fcmp_ueq_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1601 ; CHECK-LABEL: fcmp_ueq_vf_nxv4f16:
1603 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1604 ; CHECK-NEXT: vfmv.v.f v9, fa0
1605 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1606 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1607 ; CHECK-NEXT: vmand.mm v0, v10, v9
1608 ; CHECK-NEXT: vmv.v.v v9, v0
1609 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
1610 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
1611 ; CHECK-NEXT: vmnor.mm v0, v0, v9
1613 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1614 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1615 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1616 ret <vscale x 4 x i1> %1
1619 define <vscale x 4 x i1> @fcmp_ueq_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1620 ; CHECK-LABEL: fcmp_ueq_fv_nxv4f16:
1622 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1623 ; CHECK-NEXT: vfmv.v.f v9, fa0
1624 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1625 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1626 ; CHECK-NEXT: vmand.mm v0, v9, v10
1627 ; CHECK-NEXT: vmv.v.v v9, v0
1628 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
1629 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
1630 ; CHECK-NEXT: vmnor.mm v0, v0, v9
1632 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1633 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1634 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
1635 ret <vscale x 4 x i1> %1
1638 define <vscale x 4 x i1> @fcmp_ugt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1639 ; CHECK-LABEL: fcmp_ugt_vv_nxv4f16:
1641 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1642 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
1643 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
1644 ; CHECK-NEXT: vmand.mm v0, v11, v10
1645 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
1646 ; CHECK-NEXT: vmnot.m v0, v0
1648 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1649 ret <vscale x 4 x i1> %1
1652 define <vscale x 4 x i1> @fcmp_ugt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1653 ; CHECK-LABEL: fcmp_ugt_vf_nxv4f16:
1655 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1656 ; CHECK-NEXT: vfmv.v.f v9, fa0
1657 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1658 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1659 ; CHECK-NEXT: vmand.mm v0, v10, v9
1660 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
1661 ; CHECK-NEXT: vmnot.m v0, v0
1663 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1664 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1665 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1666 ret <vscale x 4 x i1> %1
1669 define <vscale x 4 x i1> @fcmp_ugt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1670 ; CHECK-LABEL: fcmp_ugt_fv_nxv4f16:
1672 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1673 ; CHECK-NEXT: vfmv.v.f v9, fa0
1674 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1675 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1676 ; CHECK-NEXT: vmand.mm v0, v9, v10
1677 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
1678 ; CHECK-NEXT: vmnot.m v0, v0
1680 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1681 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1682 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
1683 ret <vscale x 4 x i1> %1
1686 define <vscale x 4 x i1> @fcmp_uge_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1687 ; CHECK-LABEL: fcmp_uge_vv_nxv4f16:
1689 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1690 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
1691 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
1692 ; CHECK-NEXT: vmand.mm v0, v11, v10
1693 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
1694 ; CHECK-NEXT: vmnot.m v0, v0
1696 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
1697 ret <vscale x 4 x i1> %1
1700 define <vscale x 4 x i1> @fcmp_uge_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1701 ; CHECK-LABEL: fcmp_uge_vf_nxv4f16:
1703 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1704 ; CHECK-NEXT: vfmv.v.f v9, fa0
1705 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1706 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1707 ; CHECK-NEXT: vmand.mm v0, v10, v9
1708 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
1709 ; CHECK-NEXT: vmnot.m v0, v0
1711 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1712 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1713 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
1714 ret <vscale x 4 x i1> %1
1717 define <vscale x 4 x i1> @fcmp_uge_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1718 ; CHECK-LABEL: fcmp_uge_fv_nxv4f16:
1720 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1721 ; CHECK-NEXT: vfmv.v.f v9, fa0
1722 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1723 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1724 ; CHECK-NEXT: vmand.mm v0, v9, v10
1725 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
1726 ; CHECK-NEXT: vmnot.m v0, v0
1728 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1729 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1730 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
1731 ret <vscale x 4 x i1> %1
1734 define <vscale x 4 x i1> @fcmp_ult_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1735 ; CHECK-LABEL: fcmp_ult_vv_nxv4f16:
1737 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1738 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1739 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
1740 ; CHECK-NEXT: vmand.mm v0, v11, v10
1741 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
1742 ; CHECK-NEXT: vmnot.m v0, v0
1744 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
1745 ret <vscale x 4 x i1> %1
1748 define <vscale x 4 x i1> @fcmp_ult_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1749 ; CHECK-LABEL: fcmp_ult_vf_nxv4f16:
1751 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1752 ; CHECK-NEXT: vfmv.v.f v9, fa0
1753 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1754 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1755 ; CHECK-NEXT: vmand.mm v0, v9, v10
1756 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
1757 ; CHECK-NEXT: vmnot.m v0, v0
1759 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1760 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1761 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
1762 ret <vscale x 4 x i1> %1
1765 define <vscale x 4 x i1> @fcmp_ult_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1766 ; CHECK-LABEL: fcmp_ult_fv_nxv4f16:
1768 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1769 ; CHECK-NEXT: vfmv.v.f v9, fa0
1770 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1771 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1772 ; CHECK-NEXT: vmand.mm v0, v10, v9
1773 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
1774 ; CHECK-NEXT: vmnot.m v0, v0
1776 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1777 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1778 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
1779 ret <vscale x 4 x i1> %1
1782 define <vscale x 4 x i1> @fcmp_ule_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1783 ; CHECK-LABEL: fcmp_ule_vv_nxv4f16:
1785 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1786 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1787 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
1788 ; CHECK-NEXT: vmand.mm v0, v11, v10
1789 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
1790 ; CHECK-NEXT: vmnot.m v0, v0
1792 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
1793 ret <vscale x 4 x i1> %1
1796 define <vscale x 4 x i1> @fcmp_ule_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1797 ; CHECK-LABEL: fcmp_ule_vf_nxv4f16:
1799 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1800 ; CHECK-NEXT: vfmv.v.f v9, fa0
1801 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1802 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1803 ; CHECK-NEXT: vmand.mm v0, v9, v10
1804 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
1805 ; CHECK-NEXT: vmnot.m v0, v0
1807 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1808 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1809 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
1810 ret <vscale x 4 x i1> %1
1813 define <vscale x 4 x i1> @fcmp_ule_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1814 ; CHECK-LABEL: fcmp_ule_fv_nxv4f16:
1816 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu
1817 ; CHECK-NEXT: vfmv.v.f v9, fa0
1818 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
1819 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1820 ; CHECK-NEXT: vmand.mm v0, v10, v9
1821 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
1822 ; CHECK-NEXT: vmnot.m v0, v0
1824 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1825 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1826 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
1827 ret <vscale x 4 x i1> %1
1830 define <vscale x 4 x i1> @fcmp_une_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1831 ; CHECK-LABEL: fcmp_une_vv_nxv4f16:
1833 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1834 ; CHECK-NEXT: vmfne.vv v0, v8, v9
1836 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
1837 ret <vscale x 4 x i1> %1
1840 define <vscale x 4 x i1> @fcmp_une_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1841 ; CHECK-LABEL: fcmp_une_vf_nxv4f16:
1843 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1844 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
1846 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1847 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1848 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
1849 ret <vscale x 4 x i1> %1
1852 define <vscale x 4 x i1> @fcmp_une_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1853 ; CHECK-LABEL: fcmp_une_fv_nxv4f16:
1855 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1856 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
1858 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1859 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1860 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
1861 ret <vscale x 4 x i1> %1
1864 define <vscale x 4 x i1> @fcmp_uno_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp {
1865 ; CHECK-LABEL: fcmp_uno_vv_nxv4f16:
1867 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1868 ; CHECK-NEXT: vmfne.vv v9, v9, v9
1869 ; CHECK-NEXT: vmfne.vv v8, v8, v8
1870 ; CHECK-NEXT: vmor.mm v0, v8, v9
1872 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
1873 ret <vscale x 4 x i1> %1
1876 define <vscale x 4 x i1> @fcmp_uno_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1877 ; CHECK-LABEL: fcmp_uno_vf_nxv4f16:
1879 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1880 ; CHECK-NEXT: vfmv.v.f v9, fa0
1881 ; CHECK-NEXT: vmfne.vf v9, v9, fa0
1882 ; CHECK-NEXT: vmfne.vv v8, v8, v8
1883 ; CHECK-NEXT: vmor.mm v0, v8, v9
1885 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1886 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1887 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
1888 ret <vscale x 4 x i1> %1
1891 define <vscale x 4 x i1> @fcmp_uno_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp {
1892 ; CHECK-LABEL: fcmp_uno_fv_nxv4f16:
1894 ; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma
1895 ; CHECK-NEXT: vfmv.v.f v9, fa0
1896 ; CHECK-NEXT: vmfne.vf v9, v9, fa0
1897 ; CHECK-NEXT: vmfne.vv v8, v8, v8
1898 ; CHECK-NEXT: vmor.mm v0, v9, v8
1900 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0
1901 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
1902 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
1903 ret <vscale x 4 x i1> %1
1906 declare <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, metadata, metadata)
1907 define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1908 ; CHECK-LABEL: fcmp_oeq_vv_nxv8f16:
1910 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1911 ; CHECK-NEXT: vmfeq.vv v0, v8, v10
1913 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1914 ret <vscale x 8 x i1> %1
1917 define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1918 ; CHECK-LABEL: fcmp_oeq_vf_nxv8f16:
1920 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1921 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
1923 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1924 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1925 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1926 ret <vscale x 8 x i1> %1
1929 define <vscale x 8 x i1> @fcmp_oeq_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1930 ; CHECK-LABEL: fcmp_oeq_fv_nxv8f16:
1932 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
1933 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
1935 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1936 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1937 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
1938 ret <vscale x 8 x i1> %1
1941 define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1942 ; CHECK-LABEL: fcmp_ogt_vv_nxv8f16:
1944 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
1945 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
1946 ; CHECK-NEXT: vmfeq.vv v13, v10, v10
1947 ; CHECK-NEXT: vmand.mm v12, v13, v12
1948 ; CHECK-NEXT: vmv1r.v v0, v12
1949 ; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t
1950 ; CHECK-NEXT: vmv1r.v v0, v12
1952 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1953 ret <vscale x 8 x i1> %1
1956 define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1957 ; CHECK-LABEL: fcmp_ogt_vf_nxv8f16:
1959 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
1960 ; CHECK-NEXT: vfmv.v.f v10, fa0
1961 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
1962 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1963 ; CHECK-NEXT: vmand.mm v10, v12, v10
1964 ; CHECK-NEXT: vmv1r.v v0, v10
1965 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
1966 ; CHECK-NEXT: vmv1r.v v0, v10
1968 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1969 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1970 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1971 ret <vscale x 8 x i1> %1
1974 define <vscale x 8 x i1> @fcmp_ogt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
1975 ; CHECK-LABEL: fcmp_ogt_fv_nxv8f16:
1977 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
1978 ; CHECK-NEXT: vfmv.v.f v10, fa0
1979 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
1980 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
1981 ; CHECK-NEXT: vmand.mm v10, v10, v12
1982 ; CHECK-NEXT: vmv1r.v v0, v10
1983 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
1984 ; CHECK-NEXT: vmv1r.v v0, v10
1986 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1987 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1988 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
1989 ret <vscale x 8 x i1> %1
1992 define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
1993 ; CHECK-LABEL: fcmp_oge_vv_nxv8f16:
1995 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
1996 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
1997 ; CHECK-NEXT: vmfeq.vv v13, v10, v10
1998 ; CHECK-NEXT: vmand.mm v12, v13, v12
1999 ; CHECK-NEXT: vmv1r.v v0, v12
2000 ; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t
2001 ; CHECK-NEXT: vmv1r.v v0, v12
2003 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
2004 ret <vscale x 8 x i1> %1
2007 define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2008 ; CHECK-LABEL: fcmp_oge_vf_nxv8f16:
2010 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2011 ; CHECK-NEXT: vfmv.v.f v10, fa0
2012 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2013 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2014 ; CHECK-NEXT: vmand.mm v10, v12, v10
2015 ; CHECK-NEXT: vmv1r.v v0, v10
2016 ; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t
2017 ; CHECK-NEXT: vmv1r.v v0, v10
2019 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2020 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2021 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
2022 ret <vscale x 8 x i1> %1
2025 define <vscale x 8 x i1> @fcmp_oge_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2026 ; CHECK-LABEL: fcmp_oge_fv_nxv8f16:
2028 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2029 ; CHECK-NEXT: vfmv.v.f v10, fa0
2030 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2031 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2032 ; CHECK-NEXT: vmand.mm v10, v10, v12
2033 ; CHECK-NEXT: vmv1r.v v0, v10
2034 ; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t
2035 ; CHECK-NEXT: vmv1r.v v0, v10
2037 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2038 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2039 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
2040 ret <vscale x 8 x i1> %1
2043 define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2044 ; CHECK-LABEL: fcmp_olt_vv_nxv8f16:
2046 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2047 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
2048 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
2049 ; CHECK-NEXT: vmand.mm v12, v13, v12
2050 ; CHECK-NEXT: vmv1r.v v0, v12
2051 ; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t
2052 ; CHECK-NEXT: vmv1r.v v0, v12
2054 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
2055 ret <vscale x 8 x i1> %1
2058 define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2059 ; CHECK-LABEL: fcmp_olt_vf_nxv8f16:
2061 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2062 ; CHECK-NEXT: vfmv.v.f v10, fa0
2063 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2064 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2065 ; CHECK-NEXT: vmand.mm v10, v10, v12
2066 ; CHECK-NEXT: vmv1r.v v0, v10
2067 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
2068 ; CHECK-NEXT: vmv1r.v v0, v10
2070 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2071 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2072 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
2073 ret <vscale x 8 x i1> %1
2076 define <vscale x 8 x i1> @fcmp_olt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2077 ; CHECK-LABEL: fcmp_olt_fv_nxv8f16:
2079 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2080 ; CHECK-NEXT: vfmv.v.f v10, fa0
2081 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2082 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2083 ; CHECK-NEXT: vmand.mm v10, v12, v10
2084 ; CHECK-NEXT: vmv1r.v v0, v10
2085 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
2086 ; CHECK-NEXT: vmv1r.v v0, v10
2088 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2089 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2090 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
2091 ret <vscale x 8 x i1> %1
2094 define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2095 ; CHECK-LABEL: fcmp_ole_vv_nxv8f16:
2097 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2098 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
2099 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
2100 ; CHECK-NEXT: vmand.mm v12, v13, v12
2101 ; CHECK-NEXT: vmv1r.v v0, v12
2102 ; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t
2103 ; CHECK-NEXT: vmv1r.v v0, v12
2105 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
2106 ret <vscale x 8 x i1> %1
2109 define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2110 ; CHECK-LABEL: fcmp_ole_vf_nxv8f16:
2112 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2113 ; CHECK-NEXT: vfmv.v.f v10, fa0
2114 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2115 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2116 ; CHECK-NEXT: vmand.mm v10, v10, v12
2117 ; CHECK-NEXT: vmv1r.v v0, v10
2118 ; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t
2119 ; CHECK-NEXT: vmv1r.v v0, v10
2121 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2122 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2123 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
2124 ret <vscale x 8 x i1> %1
2127 define <vscale x 8 x i1> @fcmp_ole_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2128 ; CHECK-LABEL: fcmp_ole_fv_nxv8f16:
2130 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2131 ; CHECK-NEXT: vfmv.v.f v10, fa0
2132 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2133 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2134 ; CHECK-NEXT: vmand.mm v10, v12, v10
2135 ; CHECK-NEXT: vmv1r.v v0, v10
2136 ; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t
2137 ; CHECK-NEXT: vmv1r.v v0, v10
2139 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2140 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2141 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
2142 ret <vscale x 8 x i1> %1
2145 define <vscale x 8 x i1> @fcmp_one_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2146 ; CHECK-LABEL: fcmp_one_vv_nxv8f16:
2148 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2149 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
2150 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
2151 ; CHECK-NEXT: vmand.mm v12, v13, v12
2152 ; CHECK-NEXT: vmv1r.v v13, v12
2153 ; CHECK-NEXT: vmv1r.v v0, v12
2154 ; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t
2155 ; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t
2156 ; CHECK-NEXT: vmor.mm v0, v12, v13
2158 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
2159 ret <vscale x 8 x i1> %1
2162 define <vscale x 8 x i1> @fcmp_one_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2163 ; CHECK-LABEL: fcmp_one_vf_nxv8f16:
2165 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2166 ; CHECK-NEXT: vfmv.v.f v10, fa0
2167 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2168 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2169 ; CHECK-NEXT: vmand.mm v10, v10, v12
2170 ; CHECK-NEXT: vmv1r.v v11, v10
2171 ; CHECK-NEXT: vmv1r.v v0, v10
2172 ; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t
2173 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
2174 ; CHECK-NEXT: vmor.mm v0, v10, v11
2176 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2177 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2178 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
2179 ret <vscale x 8 x i1> %1
2182 define <vscale x 8 x i1> @fcmp_one_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2183 ; CHECK-LABEL: fcmp_one_fv_nxv8f16:
2185 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2186 ; CHECK-NEXT: vfmv.v.f v10, fa0
2187 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2188 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2189 ; CHECK-NEXT: vmand.mm v10, v12, v10
2190 ; CHECK-NEXT: vmv1r.v v11, v10
2191 ; CHECK-NEXT: vmv1r.v v0, v10
2192 ; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t
2193 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
2194 ; CHECK-NEXT: vmor.mm v0, v10, v11
2196 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2197 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2198 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
2199 ret <vscale x 8 x i1> %1
2202 define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2203 ; CHECK-LABEL: fcmp_ord_vv_nxv8f16:
2205 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2206 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
2207 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2208 ; CHECK-NEXT: vmand.mm v0, v10, v12
2210 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
2211 ret <vscale x 8 x i1> %1
2214 define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2215 ; CHECK-LABEL: fcmp_ord_vf_nxv8f16:
2217 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2218 ; CHECK-NEXT: vfmv.v.f v10, fa0
2219 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2220 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2221 ; CHECK-NEXT: vmand.mm v0, v10, v12
2223 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2224 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2225 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
2226 ret <vscale x 8 x i1> %1
2229 define <vscale x 8 x i1> @fcmp_ord_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2230 ; CHECK-LABEL: fcmp_ord_fv_nxv8f16:
2232 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2233 ; CHECK-NEXT: vfmv.v.f v10, fa0
2234 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2235 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2236 ; CHECK-NEXT: vmand.mm v0, v12, v10
2238 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2239 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2240 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
2241 ret <vscale x 8 x i1> %1
2244 define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2245 ; CHECK-LABEL: fcmp_ueq_vv_nxv8f16:
2247 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2248 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
2249 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
2250 ; CHECK-NEXT: vmand.mm v12, v13, v12
2251 ; CHECK-NEXT: vmv1r.v v13, v12
2252 ; CHECK-NEXT: vmv1r.v v0, v12
2253 ; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t
2254 ; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t
2255 ; CHECK-NEXT: vmnor.mm v0, v12, v13
2257 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2258 ret <vscale x 8 x i1> %1
2261 define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2262 ; CHECK-LABEL: fcmp_ueq_vf_nxv8f16:
2264 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2265 ; CHECK-NEXT: vfmv.v.f v10, fa0
2266 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2267 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2268 ; CHECK-NEXT: vmand.mm v10, v10, v12
2269 ; CHECK-NEXT: vmv1r.v v11, v10
2270 ; CHECK-NEXT: vmv1r.v v0, v10
2271 ; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t
2272 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
2273 ; CHECK-NEXT: vmnor.mm v0, v10, v11
2275 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2276 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2277 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2278 ret <vscale x 8 x i1> %1
2281 define <vscale x 8 x i1> @fcmp_ueq_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2282 ; CHECK-LABEL: fcmp_ueq_fv_nxv8f16:
2284 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2285 ; CHECK-NEXT: vfmv.v.f v10, fa0
2286 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2287 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2288 ; CHECK-NEXT: vmand.mm v10, v12, v10
2289 ; CHECK-NEXT: vmv1r.v v11, v10
2290 ; CHECK-NEXT: vmv1r.v v0, v10
2291 ; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t
2292 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
2293 ; CHECK-NEXT: vmnor.mm v0, v10, v11
2295 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2296 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2297 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2298 ret <vscale x 8 x i1> %1
2301 define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2302 ; CHECK-LABEL: fcmp_ugt_vv_nxv8f16:
2304 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2305 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
2306 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
2307 ; CHECK-NEXT: vmand.mm v12, v13, v12
2308 ; CHECK-NEXT: vmv1r.v v0, v12
2309 ; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t
2310 ; CHECK-NEXT: vmnot.m v0, v12
2312 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
2313 ret <vscale x 8 x i1> %1
2316 define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2317 ; CHECK-LABEL: fcmp_ugt_vf_nxv8f16:
2319 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2320 ; CHECK-NEXT: vfmv.v.f v10, fa0
2321 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2322 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2323 ; CHECK-NEXT: vmand.mm v10, v10, v12
2324 ; CHECK-NEXT: vmv1r.v v0, v10
2325 ; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t
2326 ; CHECK-NEXT: vmnot.m v0, v10
2328 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2329 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2330 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
2331 ret <vscale x 8 x i1> %1
2334 define <vscale x 8 x i1> @fcmp_ugt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2335 ; CHECK-LABEL: fcmp_ugt_fv_nxv8f16:
2337 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2338 ; CHECK-NEXT: vfmv.v.f v10, fa0
2339 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2340 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2341 ; CHECK-NEXT: vmand.mm v10, v12, v10
2342 ; CHECK-NEXT: vmv1r.v v0, v10
2343 ; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t
2344 ; CHECK-NEXT: vmnot.m v0, v10
2346 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2347 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2348 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
2349 ret <vscale x 8 x i1> %1
2352 define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2353 ; CHECK-LABEL: fcmp_uge_vv_nxv8f16:
2355 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2356 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
2357 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
2358 ; CHECK-NEXT: vmand.mm v12, v13, v12
2359 ; CHECK-NEXT: vmv1r.v v0, v12
2360 ; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t
2361 ; CHECK-NEXT: vmnot.m v0, v12
2363 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
2364 ret <vscale x 8 x i1> %1
2367 define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2368 ; CHECK-LABEL: fcmp_uge_vf_nxv8f16:
2370 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2371 ; CHECK-NEXT: vfmv.v.f v10, fa0
2372 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2373 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2374 ; CHECK-NEXT: vmand.mm v10, v10, v12
2375 ; CHECK-NEXT: vmv1r.v v0, v10
2376 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
2377 ; CHECK-NEXT: vmnot.m v0, v10
2379 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2380 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2381 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
2382 ret <vscale x 8 x i1> %1
2385 define <vscale x 8 x i1> @fcmp_uge_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2386 ; CHECK-LABEL: fcmp_uge_fv_nxv8f16:
2388 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2389 ; CHECK-NEXT: vfmv.v.f v10, fa0
2390 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2391 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2392 ; CHECK-NEXT: vmand.mm v10, v12, v10
2393 ; CHECK-NEXT: vmv1r.v v0, v10
2394 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
2395 ; CHECK-NEXT: vmnot.m v0, v10
2397 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2398 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2399 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
2400 ret <vscale x 8 x i1> %1
2403 define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2404 ; CHECK-LABEL: fcmp_ult_vv_nxv8f16:
2406 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2407 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2408 ; CHECK-NEXT: vmfeq.vv v13, v10, v10
2409 ; CHECK-NEXT: vmand.mm v12, v13, v12
2410 ; CHECK-NEXT: vmv1r.v v0, v12
2411 ; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t
2412 ; CHECK-NEXT: vmnot.m v0, v12
2414 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
2415 ret <vscale x 8 x i1> %1
2418 define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2419 ; CHECK-LABEL: fcmp_ult_vf_nxv8f16:
2421 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2422 ; CHECK-NEXT: vfmv.v.f v10, fa0
2423 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2424 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2425 ; CHECK-NEXT: vmand.mm v10, v12, v10
2426 ; CHECK-NEXT: vmv1r.v v0, v10
2427 ; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t
2428 ; CHECK-NEXT: vmnot.m v0, v10
2430 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2431 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2432 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
2433 ret <vscale x 8 x i1> %1
2436 define <vscale x 8 x i1> @fcmp_ult_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2437 ; CHECK-LABEL: fcmp_ult_fv_nxv8f16:
2439 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2440 ; CHECK-NEXT: vfmv.v.f v10, fa0
2441 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2442 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2443 ; CHECK-NEXT: vmand.mm v10, v10, v12
2444 ; CHECK-NEXT: vmv1r.v v0, v10
2445 ; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t
2446 ; CHECK-NEXT: vmnot.m v0, v10
2448 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2449 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2450 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
2451 ret <vscale x 8 x i1> %1
2454 define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2455 ; CHECK-LABEL: fcmp_ule_vv_nxv8f16:
2457 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2458 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2459 ; CHECK-NEXT: vmfeq.vv v13, v10, v10
2460 ; CHECK-NEXT: vmand.mm v12, v13, v12
2461 ; CHECK-NEXT: vmv1r.v v0, v12
2462 ; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t
2463 ; CHECK-NEXT: vmnot.m v0, v12
2465 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
2466 ret <vscale x 8 x i1> %1
2469 define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2470 ; CHECK-LABEL: fcmp_ule_vf_nxv8f16:
2472 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2473 ; CHECK-NEXT: vfmv.v.f v10, fa0
2474 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2475 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2476 ; CHECK-NEXT: vmand.mm v10, v12, v10
2477 ; CHECK-NEXT: vmv1r.v v0, v10
2478 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
2479 ; CHECK-NEXT: vmnot.m v0, v10
2481 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2482 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2483 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
2484 ret <vscale x 8 x i1> %1
2487 define <vscale x 8 x i1> @fcmp_ule_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2488 ; CHECK-LABEL: fcmp_ule_fv_nxv8f16:
2490 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu
2491 ; CHECK-NEXT: vfmv.v.f v10, fa0
2492 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
2493 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
2494 ; CHECK-NEXT: vmand.mm v10, v10, v12
2495 ; CHECK-NEXT: vmv1r.v v0, v10
2496 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
2497 ; CHECK-NEXT: vmnot.m v0, v10
2499 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2500 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2501 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
2502 ret <vscale x 8 x i1> %1
2505 define <vscale x 8 x i1> @fcmp_une_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2506 ; CHECK-LABEL: fcmp_une_vv_nxv8f16:
2508 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2509 ; CHECK-NEXT: vmfne.vv v0, v8, v10
2511 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
2512 ret <vscale x 8 x i1> %1
2515 define <vscale x 8 x i1> @fcmp_une_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2516 ; CHECK-LABEL: fcmp_une_vf_nxv8f16:
2518 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2519 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
2521 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2522 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2523 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
2524 ret <vscale x 8 x i1> %1
2527 define <vscale x 8 x i1> @fcmp_une_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2528 ; CHECK-LABEL: fcmp_une_fv_nxv8f16:
2530 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2531 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
2533 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2534 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2535 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
2536 ret <vscale x 8 x i1> %1
2539 define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp {
2540 ; CHECK-LABEL: fcmp_uno_vv_nxv8f16:
2542 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2543 ; CHECK-NEXT: vmfne.vv v12, v10, v10
2544 ; CHECK-NEXT: vmfne.vv v10, v8, v8
2545 ; CHECK-NEXT: vmor.mm v0, v10, v12
2547 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
2548 ret <vscale x 8 x i1> %1
2551 define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2552 ; CHECK-LABEL: fcmp_uno_vf_nxv8f16:
2554 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2555 ; CHECK-NEXT: vfmv.v.f v10, fa0
2556 ; CHECK-NEXT: vmfne.vf v12, v10, fa0
2557 ; CHECK-NEXT: vmfne.vv v10, v8, v8
2558 ; CHECK-NEXT: vmor.mm v0, v10, v12
2560 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2561 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2562 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
2563 ret <vscale x 8 x i1> %1
2566 define <vscale x 8 x i1> @fcmp_uno_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp {
2567 ; CHECK-LABEL: fcmp_uno_fv_nxv8f16:
2569 ; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma
2570 ; CHECK-NEXT: vfmv.v.f v10, fa0
2571 ; CHECK-NEXT: vmfne.vf v12, v10, fa0
2572 ; CHECK-NEXT: vmfne.vv v10, v8, v8
2573 ; CHECK-NEXT: vmor.mm v0, v12, v10
2575 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2576 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2577 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
2578 ret <vscale x 8 x i1> %1
2581 declare <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half>, <vscale x 16 x half>, metadata, metadata)
2582 define <vscale x 16 x i1> @fcmp_oeq_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2583 ; CHECK-LABEL: fcmp_oeq_vv_nxv16f16:
2585 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2586 ; CHECK-NEXT: vmfeq.vv v0, v8, v12
2588 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2589 ret <vscale x 16 x i1> %1
2592 define <vscale x 16 x i1> @fcmp_oeq_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2593 ; CHECK-LABEL: fcmp_oeq_vf_nxv16f16:
2595 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2596 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
2598 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2599 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2600 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2601 ret <vscale x 16 x i1> %1
2604 define <vscale x 16 x i1> @fcmp_oeq_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2605 ; CHECK-LABEL: fcmp_oeq_fv_nxv16f16:
2607 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2608 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
2610 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2611 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2612 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
2613 ret <vscale x 16 x i1> %1
2616 define <vscale x 16 x i1> @fcmp_ogt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2617 ; CHECK-LABEL: fcmp_ogt_vv_nxv16f16:
2619 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2620 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
2621 ; CHECK-NEXT: vmfeq.vv v17, v12, v12
2622 ; CHECK-NEXT: vmand.mm v16, v17, v16
2623 ; CHECK-NEXT: vmv1r.v v0, v16
2624 ; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t
2625 ; CHECK-NEXT: vmv1r.v v0, v16
2627 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2628 ret <vscale x 16 x i1> %1
2631 define <vscale x 16 x i1> @fcmp_ogt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2632 ; CHECK-LABEL: fcmp_ogt_vf_nxv16f16:
2634 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2635 ; CHECK-NEXT: vfmv.v.f v12, fa0
2636 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2637 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2638 ; CHECK-NEXT: vmand.mm v12, v16, v12
2639 ; CHECK-NEXT: vmv1r.v v0, v12
2640 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
2641 ; CHECK-NEXT: vmv1r.v v0, v12
2643 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2644 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2645 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2646 ret <vscale x 16 x i1> %1
2649 define <vscale x 16 x i1> @fcmp_ogt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2650 ; CHECK-LABEL: fcmp_ogt_fv_nxv16f16:
2652 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2653 ; CHECK-NEXT: vfmv.v.f v12, fa0
2654 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2655 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2656 ; CHECK-NEXT: vmand.mm v12, v12, v16
2657 ; CHECK-NEXT: vmv1r.v v0, v12
2658 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
2659 ; CHECK-NEXT: vmv1r.v v0, v12
2661 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2662 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2663 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
2664 ret <vscale x 16 x i1> %1
2667 define <vscale x 16 x i1> @fcmp_oge_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2668 ; CHECK-LABEL: fcmp_oge_vv_nxv16f16:
2670 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2671 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
2672 ; CHECK-NEXT: vmfeq.vv v17, v12, v12
2673 ; CHECK-NEXT: vmand.mm v16, v17, v16
2674 ; CHECK-NEXT: vmv1r.v v0, v16
2675 ; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t
2676 ; CHECK-NEXT: vmv1r.v v0, v16
2678 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
2679 ret <vscale x 16 x i1> %1
2682 define <vscale x 16 x i1> @fcmp_oge_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2683 ; CHECK-LABEL: fcmp_oge_vf_nxv16f16:
2685 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2686 ; CHECK-NEXT: vfmv.v.f v12, fa0
2687 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2688 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2689 ; CHECK-NEXT: vmand.mm v12, v16, v12
2690 ; CHECK-NEXT: vmv1r.v v0, v12
2691 ; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t
2692 ; CHECK-NEXT: vmv1r.v v0, v12
2694 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2695 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2696 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
2697 ret <vscale x 16 x i1> %1
2700 define <vscale x 16 x i1> @fcmp_oge_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2701 ; CHECK-LABEL: fcmp_oge_fv_nxv16f16:
2703 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2704 ; CHECK-NEXT: vfmv.v.f v12, fa0
2705 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2706 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2707 ; CHECK-NEXT: vmand.mm v12, v12, v16
2708 ; CHECK-NEXT: vmv1r.v v0, v12
2709 ; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t
2710 ; CHECK-NEXT: vmv1r.v v0, v12
2712 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2713 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2714 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
2715 ret <vscale x 16 x i1> %1
2718 define <vscale x 16 x i1> @fcmp_olt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2719 ; CHECK-LABEL: fcmp_olt_vv_nxv16f16:
2721 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2722 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
2723 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
2724 ; CHECK-NEXT: vmand.mm v16, v17, v16
2725 ; CHECK-NEXT: vmv1r.v v0, v16
2726 ; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t
2727 ; CHECK-NEXT: vmv1r.v v0, v16
2729 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
2730 ret <vscale x 16 x i1> %1
2733 define <vscale x 16 x i1> @fcmp_olt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2734 ; CHECK-LABEL: fcmp_olt_vf_nxv16f16:
2736 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2737 ; CHECK-NEXT: vfmv.v.f v12, fa0
2738 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2739 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2740 ; CHECK-NEXT: vmand.mm v12, v12, v16
2741 ; CHECK-NEXT: vmv1r.v v0, v12
2742 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
2743 ; CHECK-NEXT: vmv1r.v v0, v12
2745 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2746 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2747 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
2748 ret <vscale x 16 x i1> %1
2751 define <vscale x 16 x i1> @fcmp_olt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2752 ; CHECK-LABEL: fcmp_olt_fv_nxv16f16:
2754 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2755 ; CHECK-NEXT: vfmv.v.f v12, fa0
2756 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2757 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2758 ; CHECK-NEXT: vmand.mm v12, v16, v12
2759 ; CHECK-NEXT: vmv1r.v v0, v12
2760 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
2761 ; CHECK-NEXT: vmv1r.v v0, v12
2763 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2764 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2765 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
2766 ret <vscale x 16 x i1> %1
2769 define <vscale x 16 x i1> @fcmp_ole_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2770 ; CHECK-LABEL: fcmp_ole_vv_nxv16f16:
2772 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2773 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
2774 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
2775 ; CHECK-NEXT: vmand.mm v16, v17, v16
2776 ; CHECK-NEXT: vmv1r.v v0, v16
2777 ; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t
2778 ; CHECK-NEXT: vmv1r.v v0, v16
2780 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
2781 ret <vscale x 16 x i1> %1
2784 define <vscale x 16 x i1> @fcmp_ole_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2785 ; CHECK-LABEL: fcmp_ole_vf_nxv16f16:
2787 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2788 ; CHECK-NEXT: vfmv.v.f v12, fa0
2789 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2790 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2791 ; CHECK-NEXT: vmand.mm v12, v12, v16
2792 ; CHECK-NEXT: vmv1r.v v0, v12
2793 ; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t
2794 ; CHECK-NEXT: vmv1r.v v0, v12
2796 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2797 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2798 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
2799 ret <vscale x 16 x i1> %1
2802 define <vscale x 16 x i1> @fcmp_ole_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2803 ; CHECK-LABEL: fcmp_ole_fv_nxv16f16:
2805 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2806 ; CHECK-NEXT: vfmv.v.f v12, fa0
2807 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2808 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2809 ; CHECK-NEXT: vmand.mm v12, v16, v12
2810 ; CHECK-NEXT: vmv1r.v v0, v12
2811 ; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t
2812 ; CHECK-NEXT: vmv1r.v v0, v12
2814 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2815 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2816 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
2817 ret <vscale x 16 x i1> %1
2820 define <vscale x 16 x i1> @fcmp_one_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2821 ; CHECK-LABEL: fcmp_one_vv_nxv16f16:
2823 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2824 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
2825 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
2826 ; CHECK-NEXT: vmand.mm v16, v17, v16
2827 ; CHECK-NEXT: vmv1r.v v17, v16
2828 ; CHECK-NEXT: vmv1r.v v0, v16
2829 ; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t
2830 ; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t
2831 ; CHECK-NEXT: vmor.mm v0, v16, v17
2833 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
2834 ret <vscale x 16 x i1> %1
2837 define <vscale x 16 x i1> @fcmp_one_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2838 ; CHECK-LABEL: fcmp_one_vf_nxv16f16:
2840 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2841 ; CHECK-NEXT: vfmv.v.f v12, fa0
2842 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2843 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2844 ; CHECK-NEXT: vmand.mm v12, v12, v16
2845 ; CHECK-NEXT: vmv1r.v v13, v12
2846 ; CHECK-NEXT: vmv1r.v v0, v12
2847 ; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t
2848 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
2849 ; CHECK-NEXT: vmor.mm v0, v12, v13
2851 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2852 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2853 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
2854 ret <vscale x 16 x i1> %1
2857 define <vscale x 16 x i1> @fcmp_one_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2858 ; CHECK-LABEL: fcmp_one_fv_nxv16f16:
2860 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2861 ; CHECK-NEXT: vfmv.v.f v12, fa0
2862 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2863 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2864 ; CHECK-NEXT: vmand.mm v12, v16, v12
2865 ; CHECK-NEXT: vmv1r.v v13, v12
2866 ; CHECK-NEXT: vmv1r.v v0, v12
2867 ; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t
2868 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
2869 ; CHECK-NEXT: vmor.mm v0, v12, v13
2871 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2872 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2873 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
2874 ret <vscale x 16 x i1> %1
2877 define <vscale x 16 x i1> @fcmp_ord_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2878 ; CHECK-LABEL: fcmp_ord_vv_nxv16f16:
2880 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2881 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
2882 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2883 ; CHECK-NEXT: vmand.mm v0, v12, v16
2885 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
2886 ret <vscale x 16 x i1> %1
2889 define <vscale x 16 x i1> @fcmp_ord_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2890 ; CHECK-LABEL: fcmp_ord_vf_nxv16f16:
2892 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2893 ; CHECK-NEXT: vfmv.v.f v12, fa0
2894 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2895 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2896 ; CHECK-NEXT: vmand.mm v0, v12, v16
2898 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2899 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2900 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
2901 ret <vscale x 16 x i1> %1
2904 define <vscale x 16 x i1> @fcmp_ord_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2905 ; CHECK-LABEL: fcmp_ord_fv_nxv16f16:
2907 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2908 ; CHECK-NEXT: vfmv.v.f v12, fa0
2909 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2910 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2911 ; CHECK-NEXT: vmand.mm v0, v16, v12
2913 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2914 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2915 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
2916 ret <vscale x 16 x i1> %1
2919 define <vscale x 16 x i1> @fcmp_ueq_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2920 ; CHECK-LABEL: fcmp_ueq_vv_nxv16f16:
2922 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2923 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
2924 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
2925 ; CHECK-NEXT: vmand.mm v16, v17, v16
2926 ; CHECK-NEXT: vmv1r.v v17, v16
2927 ; CHECK-NEXT: vmv1r.v v0, v16
2928 ; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t
2929 ; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t
2930 ; CHECK-NEXT: vmnor.mm v0, v16, v17
2932 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2933 ret <vscale x 16 x i1> %1
2936 define <vscale x 16 x i1> @fcmp_ueq_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2937 ; CHECK-LABEL: fcmp_ueq_vf_nxv16f16:
2939 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2940 ; CHECK-NEXT: vfmv.v.f v12, fa0
2941 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2942 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2943 ; CHECK-NEXT: vmand.mm v12, v12, v16
2944 ; CHECK-NEXT: vmv1r.v v13, v12
2945 ; CHECK-NEXT: vmv1r.v v0, v12
2946 ; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t
2947 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
2948 ; CHECK-NEXT: vmnor.mm v0, v12, v13
2950 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2951 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2952 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2953 ret <vscale x 16 x i1> %1
2956 define <vscale x 16 x i1> @fcmp_ueq_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2957 ; CHECK-LABEL: fcmp_ueq_fv_nxv16f16:
2959 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2960 ; CHECK-NEXT: vfmv.v.f v12, fa0
2961 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2962 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2963 ; CHECK-NEXT: vmand.mm v12, v16, v12
2964 ; CHECK-NEXT: vmv1r.v v13, v12
2965 ; CHECK-NEXT: vmv1r.v v0, v12
2966 ; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t
2967 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
2968 ; CHECK-NEXT: vmnor.mm v0, v12, v13
2970 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
2971 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
2972 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
2973 ret <vscale x 16 x i1> %1
2976 define <vscale x 16 x i1> @fcmp_ugt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
2977 ; CHECK-LABEL: fcmp_ugt_vv_nxv16f16:
2979 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2980 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
2981 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
2982 ; CHECK-NEXT: vmand.mm v16, v17, v16
2983 ; CHECK-NEXT: vmv1r.v v0, v16
2984 ; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t
2985 ; CHECK-NEXT: vmnot.m v0, v16
2987 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
2988 ret <vscale x 16 x i1> %1
2991 define <vscale x 16 x i1> @fcmp_ugt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
2992 ; CHECK-LABEL: fcmp_ugt_vf_nxv16f16:
2994 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
2995 ; CHECK-NEXT: vfmv.v.f v12, fa0
2996 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
2997 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
2998 ; CHECK-NEXT: vmand.mm v12, v12, v16
2999 ; CHECK-NEXT: vmv1r.v v0, v12
3000 ; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t
3001 ; CHECK-NEXT: vmnot.m v0, v12
3003 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3004 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3005 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3006 ret <vscale x 16 x i1> %1
3009 define <vscale x 16 x i1> @fcmp_ugt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
3010 ; CHECK-LABEL: fcmp_ugt_fv_nxv16f16:
3012 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
3013 ; CHECK-NEXT: vfmv.v.f v12, fa0
3014 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
3015 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
3016 ; CHECK-NEXT: vmand.mm v12, v16, v12
3017 ; CHECK-NEXT: vmv1r.v v0, v12
3018 ; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t
3019 ; CHECK-NEXT: vmnot.m v0, v12
3021 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3022 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3023 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3024 ret <vscale x 16 x i1> %1
3027 define <vscale x 16 x i1> @fcmp_uge_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
3028 ; CHECK-LABEL: fcmp_uge_vv_nxv16f16:
3030 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
3031 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
3032 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
3033 ; CHECK-NEXT: vmand.mm v16, v17, v16
3034 ; CHECK-NEXT: vmv1r.v v0, v16
3035 ; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t
3036 ; CHECK-NEXT: vmnot.m v0, v16
3038 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
3039 ret <vscale x 16 x i1> %1
3042 define <vscale x 16 x i1> @fcmp_uge_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
3043 ; CHECK-LABEL: fcmp_uge_vf_nxv16f16:
3045 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
3046 ; CHECK-NEXT: vfmv.v.f v12, fa0
3047 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
3048 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
3049 ; CHECK-NEXT: vmand.mm v12, v12, v16
3050 ; CHECK-NEXT: vmv1r.v v0, v12
3051 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
3052 ; CHECK-NEXT: vmnot.m v0, v12
3054 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3055 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3056 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
3057 ret <vscale x 16 x i1> %1
3060 define <vscale x 16 x i1> @fcmp_uge_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
3061 ; CHECK-LABEL: fcmp_uge_fv_nxv16f16:
3063 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
3064 ; CHECK-NEXT: vfmv.v.f v12, fa0
3065 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
3066 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
3067 ; CHECK-NEXT: vmand.mm v12, v16, v12
3068 ; CHECK-NEXT: vmv1r.v v0, v12
3069 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
3070 ; CHECK-NEXT: vmnot.m v0, v12
3072 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3073 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3074 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
3075 ret <vscale x 16 x i1> %1
3078 define <vscale x 16 x i1> @fcmp_ult_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
3079 ; CHECK-LABEL: fcmp_ult_vv_nxv16f16:
3081 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
3082 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3083 ; CHECK-NEXT: vmfeq.vv v17, v12, v12
3084 ; CHECK-NEXT: vmand.mm v16, v17, v16
3085 ; CHECK-NEXT: vmv1r.v v0, v16
3086 ; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t
3087 ; CHECK-NEXT: vmnot.m v0, v16
3089 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
3090 ret <vscale x 16 x i1> %1
3093 define <vscale x 16 x i1> @fcmp_ult_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
3094 ; CHECK-LABEL: fcmp_ult_vf_nxv16f16:
3096 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
3097 ; CHECK-NEXT: vfmv.v.f v12, fa0
3098 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
3099 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
3100 ; CHECK-NEXT: vmand.mm v12, v16, v12
3101 ; CHECK-NEXT: vmv1r.v v0, v12
3102 ; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t
3103 ; CHECK-NEXT: vmnot.m v0, v12
3105 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3106 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3107 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
3108 ret <vscale x 16 x i1> %1
3111 define <vscale x 16 x i1> @fcmp_ult_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
3112 ; CHECK-LABEL: fcmp_ult_fv_nxv16f16:
3114 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
3115 ; CHECK-NEXT: vfmv.v.f v12, fa0
3116 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
3117 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
3118 ; CHECK-NEXT: vmand.mm v12, v12, v16
3119 ; CHECK-NEXT: vmv1r.v v0, v12
3120 ; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t
3121 ; CHECK-NEXT: vmnot.m v0, v12
3123 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3124 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3125 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
3126 ret <vscale x 16 x i1> %1
3129 define <vscale x 16 x i1> @fcmp_ule_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
3130 ; CHECK-LABEL: fcmp_ule_vv_nxv16f16:
3132 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
3133 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3134 ; CHECK-NEXT: vmfeq.vv v17, v12, v12
3135 ; CHECK-NEXT: vmand.mm v16, v17, v16
3136 ; CHECK-NEXT: vmv1r.v v0, v16
3137 ; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t
3138 ; CHECK-NEXT: vmnot.m v0, v16
3140 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
3141 ret <vscale x 16 x i1> %1
3144 define <vscale x 16 x i1> @fcmp_ule_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
3145 ; CHECK-LABEL: fcmp_ule_vf_nxv16f16:
3147 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
3148 ; CHECK-NEXT: vfmv.v.f v12, fa0
3149 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
3150 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
3151 ; CHECK-NEXT: vmand.mm v12, v16, v12
3152 ; CHECK-NEXT: vmv1r.v v0, v12
3153 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
3154 ; CHECK-NEXT: vmnot.m v0, v12
3156 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3157 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3158 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
3159 ret <vscale x 16 x i1> %1
3162 define <vscale x 16 x i1> @fcmp_ule_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
3163 ; CHECK-LABEL: fcmp_ule_fv_nxv16f16:
3165 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu
3166 ; CHECK-NEXT: vfmv.v.f v12, fa0
3167 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
3168 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
3169 ; CHECK-NEXT: vmand.mm v12, v12, v16
3170 ; CHECK-NEXT: vmv1r.v v0, v12
3171 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
3172 ; CHECK-NEXT: vmnot.m v0, v12
3174 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3175 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3176 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
3177 ret <vscale x 16 x i1> %1
3180 define <vscale x 16 x i1> @fcmp_une_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
3181 ; CHECK-LABEL: fcmp_une_vv_nxv16f16:
3183 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
3184 ; CHECK-NEXT: vmfne.vv v0, v8, v12
3186 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
3187 ret <vscale x 16 x i1> %1
3190 define <vscale x 16 x i1> @fcmp_une_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
3191 ; CHECK-LABEL: fcmp_une_vf_nxv16f16:
3193 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
3194 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
3196 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3197 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3198 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
3199 ret <vscale x 16 x i1> %1
3202 define <vscale x 16 x i1> @fcmp_une_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
3203 ; CHECK-LABEL: fcmp_une_fv_nxv16f16:
3205 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
3206 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
3208 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3209 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3210 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
3211 ret <vscale x 16 x i1> %1
3214 define <vscale x 16 x i1> @fcmp_uno_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp {
3215 ; CHECK-LABEL: fcmp_uno_vv_nxv16f16:
3217 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
3218 ; CHECK-NEXT: vmfne.vv v16, v12, v12
3219 ; CHECK-NEXT: vmfne.vv v12, v8, v8
3220 ; CHECK-NEXT: vmor.mm v0, v12, v16
3222 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
3223 ret <vscale x 16 x i1> %1
3226 define <vscale x 16 x i1> @fcmp_uno_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
3227 ; CHECK-LABEL: fcmp_uno_vf_nxv16f16:
3229 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
3230 ; CHECK-NEXT: vfmv.v.f v12, fa0
3231 ; CHECK-NEXT: vmfne.vf v16, v12, fa0
3232 ; CHECK-NEXT: vmfne.vv v12, v8, v8
3233 ; CHECK-NEXT: vmor.mm v0, v12, v16
3235 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3236 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3237 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
3238 ret <vscale x 16 x i1> %1
3241 define <vscale x 16 x i1> @fcmp_uno_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp {
3242 ; CHECK-LABEL: fcmp_uno_fv_nxv16f16:
3244 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
3245 ; CHECK-NEXT: vfmv.v.f v12, fa0
3246 ; CHECK-NEXT: vmfne.vf v16, v12, fa0
3247 ; CHECK-NEXT: vmfne.vv v12, v8, v8
3248 ; CHECK-NEXT: vmor.mm v0, v16, v12
3250 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0
3251 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
3252 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
3253 ret <vscale x 16 x i1> %1
3256 declare <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half>, <vscale x 32 x half>, metadata, metadata)
3257 define <vscale x 32 x i1> @fcmp_oeq_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3258 ; CHECK-LABEL: fcmp_oeq_vv_nxv32f16:
3260 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3261 ; CHECK-NEXT: vmfeq.vv v0, v8, v16
3263 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3264 ret <vscale x 32 x i1> %1
3267 define <vscale x 32 x i1> @fcmp_oeq_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3268 ; CHECK-LABEL: fcmp_oeq_vf_nxv32f16:
3270 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3271 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
3273 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3274 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3275 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3276 ret <vscale x 32 x i1> %1
3279 define <vscale x 32 x i1> @fcmp_oeq_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3280 ; CHECK-LABEL: fcmp_oeq_fv_nxv32f16:
3282 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3283 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
3285 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3286 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3287 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3288 ret <vscale x 32 x i1> %1
3291 define <vscale x 32 x i1> @fcmp_ogt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3292 ; CHECK-LABEL: fcmp_ogt_vv_nxv32f16:
3294 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3295 ; CHECK-NEXT: vmfeq.vv v24, v8, v8
3296 ; CHECK-NEXT: vmfeq.vv v25, v16, v16
3297 ; CHECK-NEXT: vmand.mm v24, v25, v24
3298 ; CHECK-NEXT: vmv1r.v v0, v24
3299 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
3300 ; CHECK-NEXT: vmv1r.v v0, v24
3302 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3303 ret <vscale x 32 x i1> %1
3306 define <vscale x 32 x i1> @fcmp_ogt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3307 ; CHECK-LABEL: fcmp_ogt_vf_nxv32f16:
3309 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3310 ; CHECK-NEXT: vfmv.v.f v16, fa0
3311 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3312 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3313 ; CHECK-NEXT: vmand.mm v16, v24, v16
3314 ; CHECK-NEXT: vmv1r.v v0, v16
3315 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
3316 ; CHECK-NEXT: vmv1r.v v0, v16
3318 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3319 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3320 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3321 ret <vscale x 32 x i1> %1
3324 define <vscale x 32 x i1> @fcmp_ogt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3325 ; CHECK-LABEL: fcmp_ogt_fv_nxv32f16:
3327 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3328 ; CHECK-NEXT: vfmv.v.f v16, fa0
3329 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3330 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3331 ; CHECK-NEXT: vmand.mm v16, v16, v24
3332 ; CHECK-NEXT: vmv1r.v v0, v16
3333 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
3334 ; CHECK-NEXT: vmv1r.v v0, v16
3336 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3337 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3338 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3339 ret <vscale x 32 x i1> %1
3342 define <vscale x 32 x i1> @fcmp_oge_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3343 ; CHECK-LABEL: fcmp_oge_vv_nxv32f16:
3345 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3346 ; CHECK-NEXT: vmfeq.vv v24, v8, v8
3347 ; CHECK-NEXT: vmfeq.vv v25, v16, v16
3348 ; CHECK-NEXT: vmand.mm v24, v25, v24
3349 ; CHECK-NEXT: vmv1r.v v0, v24
3350 ; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t
3351 ; CHECK-NEXT: vmv1r.v v0, v24
3353 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
3354 ret <vscale x 32 x i1> %1
3357 define <vscale x 32 x i1> @fcmp_oge_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3358 ; CHECK-LABEL: fcmp_oge_vf_nxv32f16:
3360 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3361 ; CHECK-NEXT: vfmv.v.f v16, fa0
3362 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3363 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3364 ; CHECK-NEXT: vmand.mm v16, v24, v16
3365 ; CHECK-NEXT: vmv1r.v v0, v16
3366 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
3367 ; CHECK-NEXT: vmv1r.v v0, v16
3369 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3370 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3371 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
3372 ret <vscale x 32 x i1> %1
3375 define <vscale x 32 x i1> @fcmp_oge_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3376 ; CHECK-LABEL: fcmp_oge_fv_nxv32f16:
3378 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3379 ; CHECK-NEXT: vfmv.v.f v16, fa0
3380 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3381 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3382 ; CHECK-NEXT: vmand.mm v16, v16, v24
3383 ; CHECK-NEXT: vmv1r.v v0, v16
3384 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
3385 ; CHECK-NEXT: vmv1r.v v0, v16
3387 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3388 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3389 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
3390 ret <vscale x 32 x i1> %1
3393 define <vscale x 32 x i1> @fcmp_olt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3394 ; CHECK-LABEL: fcmp_olt_vv_nxv32f16:
3396 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3397 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
3398 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
3399 ; CHECK-NEXT: vmand.mm v24, v25, v24
3400 ; CHECK-NEXT: vmv1r.v v0, v24
3401 ; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t
3402 ; CHECK-NEXT: vmv1r.v v0, v24
3404 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
3405 ret <vscale x 32 x i1> %1
3408 define <vscale x 32 x i1> @fcmp_olt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3409 ; CHECK-LABEL: fcmp_olt_vf_nxv32f16:
3411 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3412 ; CHECK-NEXT: vfmv.v.f v16, fa0
3413 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3414 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3415 ; CHECK-NEXT: vmand.mm v16, v16, v24
3416 ; CHECK-NEXT: vmv1r.v v0, v16
3417 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
3418 ; CHECK-NEXT: vmv1r.v v0, v16
3420 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3421 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3422 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
3423 ret <vscale x 32 x i1> %1
3426 define <vscale x 32 x i1> @fcmp_olt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3427 ; CHECK-LABEL: fcmp_olt_fv_nxv32f16:
3429 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3430 ; CHECK-NEXT: vfmv.v.f v16, fa0
3431 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3432 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3433 ; CHECK-NEXT: vmand.mm v16, v24, v16
3434 ; CHECK-NEXT: vmv1r.v v0, v16
3435 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
3436 ; CHECK-NEXT: vmv1r.v v0, v16
3438 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3439 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3440 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
3441 ret <vscale x 32 x i1> %1
3444 define <vscale x 32 x i1> @fcmp_ole_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3445 ; CHECK-LABEL: fcmp_ole_vv_nxv32f16:
3447 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3448 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
3449 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
3450 ; CHECK-NEXT: vmand.mm v24, v25, v24
3451 ; CHECK-NEXT: vmv1r.v v0, v24
3452 ; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t
3453 ; CHECK-NEXT: vmv1r.v v0, v24
3455 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
3456 ret <vscale x 32 x i1> %1
3459 define <vscale x 32 x i1> @fcmp_ole_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3460 ; CHECK-LABEL: fcmp_ole_vf_nxv32f16:
3462 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3463 ; CHECK-NEXT: vfmv.v.f v16, fa0
3464 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3465 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3466 ; CHECK-NEXT: vmand.mm v16, v16, v24
3467 ; CHECK-NEXT: vmv1r.v v0, v16
3468 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
3469 ; CHECK-NEXT: vmv1r.v v0, v16
3471 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3472 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3473 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
3474 ret <vscale x 32 x i1> %1
3477 define <vscale x 32 x i1> @fcmp_ole_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3478 ; CHECK-LABEL: fcmp_ole_fv_nxv32f16:
3480 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3481 ; CHECK-NEXT: vfmv.v.f v16, fa0
3482 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3483 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3484 ; CHECK-NEXT: vmand.mm v16, v24, v16
3485 ; CHECK-NEXT: vmv1r.v v0, v16
3486 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
3487 ; CHECK-NEXT: vmv1r.v v0, v16
3489 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3490 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3491 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
3492 ret <vscale x 32 x i1> %1
3495 define <vscale x 32 x i1> @fcmp_one_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3496 ; CHECK-LABEL: fcmp_one_vv_nxv32f16:
3498 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3499 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
3500 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
3501 ; CHECK-NEXT: vmand.mm v24, v25, v24
3502 ; CHECK-NEXT: vmv1r.v v25, v24
3503 ; CHECK-NEXT: vmv1r.v v0, v24
3504 ; CHECK-NEXT: vmflt.vv v25, v8, v16, v0.t
3505 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
3506 ; CHECK-NEXT: vmor.mm v0, v24, v25
3508 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
3509 ret <vscale x 32 x i1> %1
3512 define <vscale x 32 x i1> @fcmp_one_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3513 ; CHECK-LABEL: fcmp_one_vf_nxv32f16:
3515 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3516 ; CHECK-NEXT: vfmv.v.f v16, fa0
3517 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3518 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3519 ; CHECK-NEXT: vmand.mm v16, v16, v24
3520 ; CHECK-NEXT: vmv1r.v v17, v16
3521 ; CHECK-NEXT: vmv1r.v v0, v16
3522 ; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t
3523 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
3524 ; CHECK-NEXT: vmor.mm v0, v16, v17
3526 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3527 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3528 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
3529 ret <vscale x 32 x i1> %1
3532 define <vscale x 32 x i1> @fcmp_one_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3533 ; CHECK-LABEL: fcmp_one_fv_nxv32f16:
3535 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3536 ; CHECK-NEXT: vfmv.v.f v16, fa0
3537 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3538 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3539 ; CHECK-NEXT: vmand.mm v16, v24, v16
3540 ; CHECK-NEXT: vmv1r.v v17, v16
3541 ; CHECK-NEXT: vmv1r.v v0, v16
3542 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t
3543 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
3544 ; CHECK-NEXT: vmor.mm v0, v16, v17
3546 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3547 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3548 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
3549 ret <vscale x 32 x i1> %1
3552 define <vscale x 32 x i1> @fcmp_ord_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3553 ; CHECK-LABEL: fcmp_ord_vv_nxv32f16:
3555 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3556 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
3557 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3558 ; CHECK-NEXT: vmand.mm v0, v16, v24
3560 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
3561 ret <vscale x 32 x i1> %1
3564 define <vscale x 32 x i1> @fcmp_ord_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3565 ; CHECK-LABEL: fcmp_ord_vf_nxv32f16:
3567 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3568 ; CHECK-NEXT: vfmv.v.f v16, fa0
3569 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3570 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3571 ; CHECK-NEXT: vmand.mm v0, v16, v24
3573 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3574 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3575 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
3576 ret <vscale x 32 x i1> %1
3579 define <vscale x 32 x i1> @fcmp_ord_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3580 ; CHECK-LABEL: fcmp_ord_fv_nxv32f16:
3582 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3583 ; CHECK-NEXT: vfmv.v.f v16, fa0
3584 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3585 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3586 ; CHECK-NEXT: vmand.mm v0, v24, v16
3588 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3589 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3590 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
3591 ret <vscale x 32 x i1> %1
3594 define <vscale x 32 x i1> @fcmp_ueq_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3595 ; CHECK-LABEL: fcmp_ueq_vv_nxv32f16:
3597 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3598 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
3599 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
3600 ; CHECK-NEXT: vmand.mm v24, v25, v24
3601 ; CHECK-NEXT: vmv1r.v v25, v24
3602 ; CHECK-NEXT: vmv1r.v v0, v24
3603 ; CHECK-NEXT: vmflt.vv v25, v8, v16, v0.t
3604 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
3605 ; CHECK-NEXT: vmnor.mm v0, v24, v25
3607 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
3608 ret <vscale x 32 x i1> %1
3611 define <vscale x 32 x i1> @fcmp_ueq_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3612 ; CHECK-LABEL: fcmp_ueq_vf_nxv32f16:
3614 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3615 ; CHECK-NEXT: vfmv.v.f v16, fa0
3616 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3617 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3618 ; CHECK-NEXT: vmand.mm v16, v16, v24
3619 ; CHECK-NEXT: vmv1r.v v17, v16
3620 ; CHECK-NEXT: vmv1r.v v0, v16
3621 ; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t
3622 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
3623 ; CHECK-NEXT: vmnor.mm v0, v16, v17
3625 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3626 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3627 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
3628 ret <vscale x 32 x i1> %1
3631 define <vscale x 32 x i1> @fcmp_ueq_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3632 ; CHECK-LABEL: fcmp_ueq_fv_nxv32f16:
3634 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3635 ; CHECK-NEXT: vfmv.v.f v16, fa0
3636 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3637 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3638 ; CHECK-NEXT: vmand.mm v16, v24, v16
3639 ; CHECK-NEXT: vmv1r.v v17, v16
3640 ; CHECK-NEXT: vmv1r.v v0, v16
3641 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t
3642 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
3643 ; CHECK-NEXT: vmnor.mm v0, v16, v17
3645 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3646 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3647 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
3648 ret <vscale x 32 x i1> %1
3651 define <vscale x 32 x i1> @fcmp_ugt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3652 ; CHECK-LABEL: fcmp_ugt_vv_nxv32f16:
3654 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3655 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
3656 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
3657 ; CHECK-NEXT: vmand.mm v24, v25, v24
3658 ; CHECK-NEXT: vmv1r.v v0, v24
3659 ; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t
3660 ; CHECK-NEXT: vmnot.m v0, v24
3662 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3663 ret <vscale x 32 x i1> %1
3666 define <vscale x 32 x i1> @fcmp_ugt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3667 ; CHECK-LABEL: fcmp_ugt_vf_nxv32f16:
3669 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3670 ; CHECK-NEXT: vfmv.v.f v16, fa0
3671 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3672 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3673 ; CHECK-NEXT: vmand.mm v16, v16, v24
3674 ; CHECK-NEXT: vmv1r.v v0, v16
3675 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
3676 ; CHECK-NEXT: vmnot.m v0, v16
3678 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3679 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3680 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3681 ret <vscale x 32 x i1> %1
3684 define <vscale x 32 x i1> @fcmp_ugt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3685 ; CHECK-LABEL: fcmp_ugt_fv_nxv32f16:
3687 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3688 ; CHECK-NEXT: vfmv.v.f v16, fa0
3689 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3690 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3691 ; CHECK-NEXT: vmand.mm v16, v24, v16
3692 ; CHECK-NEXT: vmv1r.v v0, v16
3693 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
3694 ; CHECK-NEXT: vmnot.m v0, v16
3696 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3697 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3698 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
3699 ret <vscale x 32 x i1> %1
3702 define <vscale x 32 x i1> @fcmp_uge_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3703 ; CHECK-LABEL: fcmp_uge_vv_nxv32f16:
3705 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3706 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
3707 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
3708 ; CHECK-NEXT: vmand.mm v24, v25, v24
3709 ; CHECK-NEXT: vmv1r.v v0, v24
3710 ; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t
3711 ; CHECK-NEXT: vmnot.m v0, v24
3713 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
3714 ret <vscale x 32 x i1> %1
3717 define <vscale x 32 x i1> @fcmp_uge_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3718 ; CHECK-LABEL: fcmp_uge_vf_nxv32f16:
3720 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3721 ; CHECK-NEXT: vfmv.v.f v16, fa0
3722 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3723 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3724 ; CHECK-NEXT: vmand.mm v16, v16, v24
3725 ; CHECK-NEXT: vmv1r.v v0, v16
3726 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
3727 ; CHECK-NEXT: vmnot.m v0, v16
3729 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3730 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3731 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
3732 ret <vscale x 32 x i1> %1
3735 define <vscale x 32 x i1> @fcmp_uge_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3736 ; CHECK-LABEL: fcmp_uge_fv_nxv32f16:
3738 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3739 ; CHECK-NEXT: vfmv.v.f v16, fa0
3740 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3741 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3742 ; CHECK-NEXT: vmand.mm v16, v24, v16
3743 ; CHECK-NEXT: vmv1r.v v0, v16
3744 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
3745 ; CHECK-NEXT: vmnot.m v0, v16
3747 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3748 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3749 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
3750 ret <vscale x 32 x i1> %1
3753 define <vscale x 32 x i1> @fcmp_ult_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3754 ; CHECK-LABEL: fcmp_ult_vv_nxv32f16:
3756 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3757 ; CHECK-NEXT: vmfeq.vv v24, v8, v8
3758 ; CHECK-NEXT: vmfeq.vv v25, v16, v16
3759 ; CHECK-NEXT: vmand.mm v24, v25, v24
3760 ; CHECK-NEXT: vmv1r.v v0, v24
3761 ; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t
3762 ; CHECK-NEXT: vmnot.m v0, v24
3764 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
3765 ret <vscale x 32 x i1> %1
3768 define <vscale x 32 x i1> @fcmp_ult_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3769 ; CHECK-LABEL: fcmp_ult_vf_nxv32f16:
3771 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3772 ; CHECK-NEXT: vfmv.v.f v16, fa0
3773 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3774 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3775 ; CHECK-NEXT: vmand.mm v16, v24, v16
3776 ; CHECK-NEXT: vmv1r.v v0, v16
3777 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
3778 ; CHECK-NEXT: vmnot.m v0, v16
3780 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3781 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3782 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
3783 ret <vscale x 32 x i1> %1
3786 define <vscale x 32 x i1> @fcmp_ult_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3787 ; CHECK-LABEL: fcmp_ult_fv_nxv32f16:
3789 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3790 ; CHECK-NEXT: vfmv.v.f v16, fa0
3791 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3792 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3793 ; CHECK-NEXT: vmand.mm v16, v16, v24
3794 ; CHECK-NEXT: vmv1r.v v0, v16
3795 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
3796 ; CHECK-NEXT: vmnot.m v0, v16
3798 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3799 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3800 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
3801 ret <vscale x 32 x i1> %1
3804 define <vscale x 32 x i1> @fcmp_ule_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3805 ; CHECK-LABEL: fcmp_ule_vv_nxv32f16:
3807 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3808 ; CHECK-NEXT: vmfeq.vv v24, v8, v8
3809 ; CHECK-NEXT: vmfeq.vv v25, v16, v16
3810 ; CHECK-NEXT: vmand.mm v24, v25, v24
3811 ; CHECK-NEXT: vmv1r.v v0, v24
3812 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
3813 ; CHECK-NEXT: vmnot.m v0, v24
3815 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
3816 ret <vscale x 32 x i1> %1
3819 define <vscale x 32 x i1> @fcmp_ule_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3820 ; CHECK-LABEL: fcmp_ule_vf_nxv32f16:
3822 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3823 ; CHECK-NEXT: vfmv.v.f v16, fa0
3824 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3825 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3826 ; CHECK-NEXT: vmand.mm v16, v24, v16
3827 ; CHECK-NEXT: vmv1r.v v0, v16
3828 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
3829 ; CHECK-NEXT: vmnot.m v0, v16
3831 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3832 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3833 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
3834 ret <vscale x 32 x i1> %1
3837 define <vscale x 32 x i1> @fcmp_ule_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3838 ; CHECK-LABEL: fcmp_ule_fv_nxv32f16:
3840 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu
3841 ; CHECK-NEXT: vfmv.v.f v16, fa0
3842 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
3843 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
3844 ; CHECK-NEXT: vmand.mm v16, v16, v24
3845 ; CHECK-NEXT: vmv1r.v v0, v16
3846 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
3847 ; CHECK-NEXT: vmnot.m v0, v16
3849 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3850 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3851 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
3852 ret <vscale x 32 x i1> %1
3855 define <vscale x 32 x i1> @fcmp_une_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3856 ; CHECK-LABEL: fcmp_une_vv_nxv32f16:
3858 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3859 ; CHECK-NEXT: vmfne.vv v0, v8, v16
3861 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
3862 ret <vscale x 32 x i1> %1
3865 define <vscale x 32 x i1> @fcmp_une_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3866 ; CHECK-LABEL: fcmp_une_vf_nxv32f16:
3868 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3869 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
3871 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3872 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3873 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
3874 ret <vscale x 32 x i1> %1
3877 define <vscale x 32 x i1> @fcmp_une_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3878 ; CHECK-LABEL: fcmp_une_fv_nxv32f16:
3880 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3881 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
3883 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3884 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3885 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
3886 ret <vscale x 32 x i1> %1
3889 define <vscale x 32 x i1> @fcmp_uno_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp {
3890 ; CHECK-LABEL: fcmp_uno_vv_nxv32f16:
3892 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3893 ; CHECK-NEXT: vmfne.vv v24, v16, v16
3894 ; CHECK-NEXT: vmfne.vv v16, v8, v8
3895 ; CHECK-NEXT: vmor.mm v0, v16, v24
3897 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
3898 ret <vscale x 32 x i1> %1
3901 define <vscale x 32 x i1> @fcmp_uno_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3902 ; CHECK-LABEL: fcmp_uno_vf_nxv32f16:
3904 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3905 ; CHECK-NEXT: vfmv.v.f v16, fa0
3906 ; CHECK-NEXT: vmfne.vf v24, v16, fa0
3907 ; CHECK-NEXT: vmfne.vv v16, v8, v8
3908 ; CHECK-NEXT: vmor.mm v0, v16, v24
3910 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3911 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3912 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
3913 ret <vscale x 32 x i1> %1
3916 define <vscale x 32 x i1> @fcmp_uno_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp {
3917 ; CHECK-LABEL: fcmp_uno_fv_nxv32f16:
3919 ; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma
3920 ; CHECK-NEXT: vfmv.v.f v16, fa0
3921 ; CHECK-NEXT: vmfne.vf v24, v16, fa0
3922 ; CHECK-NEXT: vmfne.vv v16, v8, v8
3923 ; CHECK-NEXT: vmor.mm v0, v24, v16
3925 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0
3926 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer
3927 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmp.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
3928 ret <vscale x 32 x i1> %1
3931 declare <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float>, <vscale x 1 x float>, metadata, metadata)
3932 define <vscale x 1 x i1> @fcmp_oeq_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3933 ; CHECK-LABEL: fcmp_oeq_vv_nxv1f32:
3935 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3936 ; CHECK-NEXT: vmfeq.vv v0, v8, v9
3938 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3939 ret <vscale x 1 x i1> %1
3942 define <vscale x 1 x i1> @fcmp_oeq_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3943 ; CHECK-LABEL: fcmp_oeq_vf_nxv1f32:
3945 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3946 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
3948 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3949 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3950 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3951 ret <vscale x 1 x i1> %1
3954 define <vscale x 1 x i1> @fcmp_oeq_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3955 ; CHECK-LABEL: fcmp_oeq_fv_nxv1f32:
3957 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
3958 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
3960 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3961 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3962 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
3963 ret <vscale x 1 x i1> %1
3966 define <vscale x 1 x i1> @fcmp_ogt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
3967 ; CHECK-LABEL: fcmp_ogt_vv_nxv1f32:
3969 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
3970 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
3971 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
3972 ; CHECK-NEXT: vmand.mm v0, v11, v10
3973 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
3975 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3976 ret <vscale x 1 x i1> %1
3979 define <vscale x 1 x i1> @fcmp_ogt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3980 ; CHECK-LABEL: fcmp_ogt_vf_nxv1f32:
3982 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
3983 ; CHECK-NEXT: vfmv.v.f v9, fa0
3984 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
3985 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
3986 ; CHECK-NEXT: vmand.mm v0, v9, v10
3987 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
3989 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
3990 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
3991 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
3992 ret <vscale x 1 x i1> %1
3995 define <vscale x 1 x i1> @fcmp_ogt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
3996 ; CHECK-LABEL: fcmp_ogt_fv_nxv1f32:
3998 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
3999 ; CHECK-NEXT: vfmv.v.f v9, fa0
4000 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4001 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4002 ; CHECK-NEXT: vmand.mm v0, v10, v9
4003 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
4005 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4006 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4007 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4008 ret <vscale x 1 x i1> %1
4011 define <vscale x 1 x i1> @fcmp_oge_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
4012 ; CHECK-LABEL: fcmp_oge_vv_nxv1f32:
4014 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4015 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4016 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
4017 ; CHECK-NEXT: vmand.mm v0, v11, v10
4018 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
4020 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
4021 ret <vscale x 1 x i1> %1
4024 define <vscale x 1 x i1> @fcmp_oge_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4025 ; CHECK-LABEL: fcmp_oge_vf_nxv1f32:
4027 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4028 ; CHECK-NEXT: vfmv.v.f v9, fa0
4029 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4030 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4031 ; CHECK-NEXT: vmand.mm v0, v9, v10
4032 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
4034 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4035 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4036 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
4037 ret <vscale x 1 x i1> %1
4040 define <vscale x 1 x i1> @fcmp_oge_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4041 ; CHECK-LABEL: fcmp_oge_fv_nxv1f32:
4043 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4044 ; CHECK-NEXT: vfmv.v.f v9, fa0
4045 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4046 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4047 ; CHECK-NEXT: vmand.mm v0, v10, v9
4048 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
4050 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4051 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4052 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
4053 ret <vscale x 1 x i1> %1
4056 define <vscale x 1 x i1> @fcmp_olt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
4057 ; CHECK-LABEL: fcmp_olt_vv_nxv1f32:
4059 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4060 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
4061 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
4062 ; CHECK-NEXT: vmand.mm v0, v11, v10
4063 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
4065 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
4066 ret <vscale x 1 x i1> %1
4069 define <vscale x 1 x i1> @fcmp_olt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4070 ; CHECK-LABEL: fcmp_olt_vf_nxv1f32:
4072 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4073 ; CHECK-NEXT: vfmv.v.f v9, fa0
4074 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4075 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4076 ; CHECK-NEXT: vmand.mm v0, v10, v9
4077 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
4079 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4080 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4081 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
4082 ret <vscale x 1 x i1> %1
4085 define <vscale x 1 x i1> @fcmp_olt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4086 ; CHECK-LABEL: fcmp_olt_fv_nxv1f32:
4088 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4089 ; CHECK-NEXT: vfmv.v.f v9, fa0
4090 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4091 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4092 ; CHECK-NEXT: vmand.mm v0, v9, v10
4093 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
4095 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4096 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4097 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
4098 ret <vscale x 1 x i1> %1
4101 define <vscale x 1 x i1> @fcmp_ole_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
4102 ; CHECK-LABEL: fcmp_ole_vv_nxv1f32:
4104 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4105 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
4106 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
4107 ; CHECK-NEXT: vmand.mm v0, v11, v10
4108 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
4110 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
4111 ret <vscale x 1 x i1> %1
4114 define <vscale x 1 x i1> @fcmp_ole_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4115 ; CHECK-LABEL: fcmp_ole_vf_nxv1f32:
4117 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4118 ; CHECK-NEXT: vfmv.v.f v9, fa0
4119 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4120 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4121 ; CHECK-NEXT: vmand.mm v0, v10, v9
4122 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
4124 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4125 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4126 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
4127 ret <vscale x 1 x i1> %1
4130 define <vscale x 1 x i1> @fcmp_ole_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4131 ; CHECK-LABEL: fcmp_ole_fv_nxv1f32:
4133 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4134 ; CHECK-NEXT: vfmv.v.f v9, fa0
4135 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4136 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4137 ; CHECK-NEXT: vmand.mm v0, v9, v10
4138 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
4140 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4141 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4142 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
4143 ret <vscale x 1 x i1> %1
4146 define <vscale x 1 x i1> @fcmp_one_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
4147 ; CHECK-LABEL: fcmp_one_vv_nxv1f32:
4149 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4150 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
4151 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
4152 ; CHECK-NEXT: vmand.mm v0, v11, v10
4153 ; CHECK-NEXT: vmv1r.v v10, v0
4154 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
4155 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
4156 ; CHECK-NEXT: vmor.mm v0, v0, v10
4158 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
4159 ret <vscale x 1 x i1> %1
4162 define <vscale x 1 x i1> @fcmp_one_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4163 ; CHECK-LABEL: fcmp_one_vf_nxv1f32:
4165 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4166 ; CHECK-NEXT: vfmv.v.f v9, fa0
4167 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4168 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4169 ; CHECK-NEXT: vmand.mm v0, v10, v9
4170 ; CHECK-NEXT: vmv1r.v v9, v0
4171 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
4172 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
4173 ; CHECK-NEXT: vmor.mm v0, v0, v9
4175 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4176 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4177 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
4178 ret <vscale x 1 x i1> %1
4181 define <vscale x 1 x i1> @fcmp_one_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4182 ; CHECK-LABEL: fcmp_one_fv_nxv1f32:
4184 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4185 ; CHECK-NEXT: vfmv.v.f v9, fa0
4186 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4187 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4188 ; CHECK-NEXT: vmand.mm v0, v9, v10
4189 ; CHECK-NEXT: vmv1r.v v9, v0
4190 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
4191 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
4192 ; CHECK-NEXT: vmor.mm v0, v0, v9
4194 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4195 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4196 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
4197 ret <vscale x 1 x i1> %1
4200 define <vscale x 1 x i1> @fcmp_ord_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
4201 ; CHECK-LABEL: fcmp_ord_vv_nxv1f32:
4203 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
4204 ; CHECK-NEXT: vmfeq.vv v9, v9, v9
4205 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
4206 ; CHECK-NEXT: vmand.mm v0, v8, v9
4208 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
4209 ret <vscale x 1 x i1> %1
4212 define <vscale x 1 x i1> @fcmp_ord_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4213 ; CHECK-LABEL: fcmp_ord_vf_nxv1f32:
4215 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
4216 ; CHECK-NEXT: vfmv.v.f v9, fa0
4217 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4218 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
4219 ; CHECK-NEXT: vmand.mm v0, v8, v9
4221 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4222 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4223 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
4224 ret <vscale x 1 x i1> %1
4227 define <vscale x 1 x i1> @fcmp_ord_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4228 ; CHECK-LABEL: fcmp_ord_fv_nxv1f32:
4230 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
4231 ; CHECK-NEXT: vfmv.v.f v9, fa0
4232 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4233 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
4234 ; CHECK-NEXT: vmand.mm v0, v9, v8
4236 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4237 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4238 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
4239 ret <vscale x 1 x i1> %1
4242 define <vscale x 1 x i1> @fcmp_ueq_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
4243 ; CHECK-LABEL: fcmp_ueq_vv_nxv1f32:
4245 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4246 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
4247 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
4248 ; CHECK-NEXT: vmand.mm v0, v11, v10
4249 ; CHECK-NEXT: vmv1r.v v10, v0
4250 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
4251 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
4252 ; CHECK-NEXT: vmnor.mm v0, v0, v10
4254 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4255 ret <vscale x 1 x i1> %1
4258 define <vscale x 1 x i1> @fcmp_ueq_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4259 ; CHECK-LABEL: fcmp_ueq_vf_nxv1f32:
4261 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4262 ; CHECK-NEXT: vfmv.v.f v9, fa0
4263 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4264 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4265 ; CHECK-NEXT: vmand.mm v0, v10, v9
4266 ; CHECK-NEXT: vmv1r.v v9, v0
4267 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
4268 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
4269 ; CHECK-NEXT: vmnor.mm v0, v0, v9
4271 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4272 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4273 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4274 ret <vscale x 1 x i1> %1
4277 define <vscale x 1 x i1> @fcmp_ueq_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4278 ; CHECK-LABEL: fcmp_ueq_fv_nxv1f32:
4280 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4281 ; CHECK-NEXT: vfmv.v.f v9, fa0
4282 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4283 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4284 ; CHECK-NEXT: vmand.mm v0, v9, v10
4285 ; CHECK-NEXT: vmv1r.v v9, v0
4286 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
4287 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
4288 ; CHECK-NEXT: vmnor.mm v0, v0, v9
4290 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4291 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4292 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4293 ret <vscale x 1 x i1> %1
4296 define <vscale x 1 x i1> @fcmp_ugt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
4297 ; CHECK-LABEL: fcmp_ugt_vv_nxv1f32:
4299 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4300 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
4301 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
4302 ; CHECK-NEXT: vmand.mm v0, v11, v10
4303 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
4304 ; CHECK-NEXT: vmnot.m v0, v0
4306 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4307 ret <vscale x 1 x i1> %1
4310 define <vscale x 1 x i1> @fcmp_ugt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4311 ; CHECK-LABEL: fcmp_ugt_vf_nxv1f32:
4313 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4314 ; CHECK-NEXT: vfmv.v.f v9, fa0
4315 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4316 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4317 ; CHECK-NEXT: vmand.mm v0, v10, v9
4318 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
4319 ; CHECK-NEXT: vmnot.m v0, v0
4321 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4322 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4323 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4324 ret <vscale x 1 x i1> %1
4327 define <vscale x 1 x i1> @fcmp_ugt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4328 ; CHECK-LABEL: fcmp_ugt_fv_nxv1f32:
4330 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4331 ; CHECK-NEXT: vfmv.v.f v9, fa0
4332 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4333 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4334 ; CHECK-NEXT: vmand.mm v0, v9, v10
4335 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
4336 ; CHECK-NEXT: vmnot.m v0, v0
4338 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4339 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4340 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4341 ret <vscale x 1 x i1> %1
4344 define <vscale x 1 x i1> @fcmp_uge_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
4345 ; CHECK-LABEL: fcmp_uge_vv_nxv1f32:
4347 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4348 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
4349 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
4350 ; CHECK-NEXT: vmand.mm v0, v11, v10
4351 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
4352 ; CHECK-NEXT: vmnot.m v0, v0
4354 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
4355 ret <vscale x 1 x i1> %1
4358 define <vscale x 1 x i1> @fcmp_uge_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4359 ; CHECK-LABEL: fcmp_uge_vf_nxv1f32:
4361 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4362 ; CHECK-NEXT: vfmv.v.f v9, fa0
4363 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4364 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4365 ; CHECK-NEXT: vmand.mm v0, v10, v9
4366 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
4367 ; CHECK-NEXT: vmnot.m v0, v0
4369 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4370 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4371 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
4372 ret <vscale x 1 x i1> %1
4375 define <vscale x 1 x i1> @fcmp_uge_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4376 ; CHECK-LABEL: fcmp_uge_fv_nxv1f32:
4378 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4379 ; CHECK-NEXT: vfmv.v.f v9, fa0
4380 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4381 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4382 ; CHECK-NEXT: vmand.mm v0, v9, v10
4383 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
4384 ; CHECK-NEXT: vmnot.m v0, v0
4386 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4387 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4388 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
4389 ret <vscale x 1 x i1> %1
4392 define <vscale x 1 x i1> @fcmp_ult_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
4393 ; CHECK-LABEL: fcmp_ult_vv_nxv1f32:
4395 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4396 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4397 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
4398 ; CHECK-NEXT: vmand.mm v0, v11, v10
4399 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
4400 ; CHECK-NEXT: vmnot.m v0, v0
4402 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
4403 ret <vscale x 1 x i1> %1
4406 define <vscale x 1 x i1> @fcmp_ult_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4407 ; CHECK-LABEL: fcmp_ult_vf_nxv1f32:
4409 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4410 ; CHECK-NEXT: vfmv.v.f v9, fa0
4411 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4412 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4413 ; CHECK-NEXT: vmand.mm v0, v9, v10
4414 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
4415 ; CHECK-NEXT: vmnot.m v0, v0
4417 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4418 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4419 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
4420 ret <vscale x 1 x i1> %1
4423 define <vscale x 1 x i1> @fcmp_ult_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4424 ; CHECK-LABEL: fcmp_ult_fv_nxv1f32:
4426 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4427 ; CHECK-NEXT: vfmv.v.f v9, fa0
4428 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4429 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4430 ; CHECK-NEXT: vmand.mm v0, v10, v9
4431 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
4432 ; CHECK-NEXT: vmnot.m v0, v0
4434 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4435 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4436 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
4437 ret <vscale x 1 x i1> %1
4440 define <vscale x 1 x i1> @fcmp_ule_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
4441 ; CHECK-LABEL: fcmp_ule_vv_nxv1f32:
4443 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4444 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4445 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
4446 ; CHECK-NEXT: vmand.mm v0, v11, v10
4447 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
4448 ; CHECK-NEXT: vmnot.m v0, v0
4450 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
4451 ret <vscale x 1 x i1> %1
4454 define <vscale x 1 x i1> @fcmp_ule_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4455 ; CHECK-LABEL: fcmp_ule_vf_nxv1f32:
4457 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4458 ; CHECK-NEXT: vfmv.v.f v9, fa0
4459 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4460 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4461 ; CHECK-NEXT: vmand.mm v0, v9, v10
4462 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
4463 ; CHECK-NEXT: vmnot.m v0, v0
4465 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4466 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4467 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
4468 ret <vscale x 1 x i1> %1
4471 define <vscale x 1 x i1> @fcmp_ule_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4472 ; CHECK-LABEL: fcmp_ule_fv_nxv1f32:
4474 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
4475 ; CHECK-NEXT: vfmv.v.f v9, fa0
4476 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4477 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4478 ; CHECK-NEXT: vmand.mm v0, v10, v9
4479 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
4480 ; CHECK-NEXT: vmnot.m v0, v0
4482 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4483 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4484 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
4485 ret <vscale x 1 x i1> %1
4488 define <vscale x 1 x i1> @fcmp_une_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
4489 ; CHECK-LABEL: fcmp_une_vv_nxv1f32:
4491 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
4492 ; CHECK-NEXT: vmfne.vv v0, v8, v9
4494 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
4495 ret <vscale x 1 x i1> %1
4498 define <vscale x 1 x i1> @fcmp_une_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4499 ; CHECK-LABEL: fcmp_une_vf_nxv1f32:
4501 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
4502 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
4504 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4505 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4506 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
4507 ret <vscale x 1 x i1> %1
4510 define <vscale x 1 x i1> @fcmp_une_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4511 ; CHECK-LABEL: fcmp_une_fv_nxv1f32:
4513 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
4514 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
4516 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4517 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4518 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
4519 ret <vscale x 1 x i1> %1
4522 define <vscale x 1 x i1> @fcmp_uno_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp {
4523 ; CHECK-LABEL: fcmp_uno_vv_nxv1f32:
4525 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
4526 ; CHECK-NEXT: vmfne.vv v9, v9, v9
4527 ; CHECK-NEXT: vmfne.vv v8, v8, v8
4528 ; CHECK-NEXT: vmor.mm v0, v8, v9
4530 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
4531 ret <vscale x 1 x i1> %1
4534 define <vscale x 1 x i1> @fcmp_uno_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4535 ; CHECK-LABEL: fcmp_uno_vf_nxv1f32:
4537 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
4538 ; CHECK-NEXT: vfmv.v.f v9, fa0
4539 ; CHECK-NEXT: vmfne.vf v9, v9, fa0
4540 ; CHECK-NEXT: vmfne.vv v8, v8, v8
4541 ; CHECK-NEXT: vmor.mm v0, v8, v9
4543 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4544 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4545 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
4546 ret <vscale x 1 x i1> %1
4549 define <vscale x 1 x i1> @fcmp_uno_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp {
4550 ; CHECK-LABEL: fcmp_uno_fv_nxv1f32:
4552 ; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma
4553 ; CHECK-NEXT: vfmv.v.f v9, fa0
4554 ; CHECK-NEXT: vmfne.vf v9, v9, fa0
4555 ; CHECK-NEXT: vmfne.vv v8, v8, v8
4556 ; CHECK-NEXT: vmor.mm v0, v9, v8
4558 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0
4559 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer
4560 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
4561 ret <vscale x 1 x i1> %1
4564 declare <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>, metadata, metadata)
4565 define <vscale x 2 x i1> @fcmp_oeq_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4566 ; CHECK-LABEL: fcmp_oeq_vv_nxv2f32:
4568 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4569 ; CHECK-NEXT: vmfeq.vv v0, v8, v9
4571 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4572 ret <vscale x 2 x i1> %1
4575 define <vscale x 2 x i1> @fcmp_oeq_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4576 ; CHECK-LABEL: fcmp_oeq_vf_nxv2f32:
4578 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4579 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
4581 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4582 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4583 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4584 ret <vscale x 2 x i1> %1
4587 define <vscale x 2 x i1> @fcmp_oeq_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4588 ; CHECK-LABEL: fcmp_oeq_fv_nxv2f32:
4590 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4591 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
4593 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4594 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4595 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
4596 ret <vscale x 2 x i1> %1
4599 define <vscale x 2 x i1> @fcmp_ogt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4600 ; CHECK-LABEL: fcmp_ogt_vv_nxv2f32:
4602 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4603 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4604 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
4605 ; CHECK-NEXT: vmand.mm v0, v11, v10
4606 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
4608 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4609 ret <vscale x 2 x i1> %1
4612 define <vscale x 2 x i1> @fcmp_ogt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4613 ; CHECK-LABEL: fcmp_ogt_vf_nxv2f32:
4615 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4616 ; CHECK-NEXT: vfmv.v.f v9, fa0
4617 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4618 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4619 ; CHECK-NEXT: vmand.mm v0, v9, v10
4620 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
4622 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4623 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4624 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4625 ret <vscale x 2 x i1> %1
4628 define <vscale x 2 x i1> @fcmp_ogt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4629 ; CHECK-LABEL: fcmp_ogt_fv_nxv2f32:
4631 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4632 ; CHECK-NEXT: vfmv.v.f v9, fa0
4633 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4634 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4635 ; CHECK-NEXT: vmand.mm v0, v10, v9
4636 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
4638 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4639 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4640 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
4641 ret <vscale x 2 x i1> %1
4644 define <vscale x 2 x i1> @fcmp_oge_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4645 ; CHECK-LABEL: fcmp_oge_vv_nxv2f32:
4647 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4648 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4649 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
4650 ; CHECK-NEXT: vmand.mm v0, v11, v10
4651 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
4653 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
4654 ret <vscale x 2 x i1> %1
4657 define <vscale x 2 x i1> @fcmp_oge_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4658 ; CHECK-LABEL: fcmp_oge_vf_nxv2f32:
4660 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4661 ; CHECK-NEXT: vfmv.v.f v9, fa0
4662 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4663 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4664 ; CHECK-NEXT: vmand.mm v0, v9, v10
4665 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
4667 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4668 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4669 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
4670 ret <vscale x 2 x i1> %1
4673 define <vscale x 2 x i1> @fcmp_oge_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4674 ; CHECK-LABEL: fcmp_oge_fv_nxv2f32:
4676 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4677 ; CHECK-NEXT: vfmv.v.f v9, fa0
4678 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4679 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4680 ; CHECK-NEXT: vmand.mm v0, v10, v9
4681 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
4683 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4684 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4685 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
4686 ret <vscale x 2 x i1> %1
4689 define <vscale x 2 x i1> @fcmp_olt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4690 ; CHECK-LABEL: fcmp_olt_vv_nxv2f32:
4692 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4693 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
4694 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
4695 ; CHECK-NEXT: vmand.mm v0, v11, v10
4696 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
4698 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
4699 ret <vscale x 2 x i1> %1
4702 define <vscale x 2 x i1> @fcmp_olt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4703 ; CHECK-LABEL: fcmp_olt_vf_nxv2f32:
4705 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4706 ; CHECK-NEXT: vfmv.v.f v9, fa0
4707 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4708 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4709 ; CHECK-NEXT: vmand.mm v0, v10, v9
4710 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
4712 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4713 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4714 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
4715 ret <vscale x 2 x i1> %1
4718 define <vscale x 2 x i1> @fcmp_olt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4719 ; CHECK-LABEL: fcmp_olt_fv_nxv2f32:
4721 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4722 ; CHECK-NEXT: vfmv.v.f v9, fa0
4723 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4724 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4725 ; CHECK-NEXT: vmand.mm v0, v9, v10
4726 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
4728 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4729 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4730 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
4731 ret <vscale x 2 x i1> %1
4734 define <vscale x 2 x i1> @fcmp_ole_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4735 ; CHECK-LABEL: fcmp_ole_vv_nxv2f32:
4737 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4738 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
4739 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
4740 ; CHECK-NEXT: vmand.mm v0, v11, v10
4741 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
4743 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
4744 ret <vscale x 2 x i1> %1
4747 define <vscale x 2 x i1> @fcmp_ole_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4748 ; CHECK-LABEL: fcmp_ole_vf_nxv2f32:
4750 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4751 ; CHECK-NEXT: vfmv.v.f v9, fa0
4752 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4753 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4754 ; CHECK-NEXT: vmand.mm v0, v10, v9
4755 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
4757 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4758 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4759 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
4760 ret <vscale x 2 x i1> %1
4763 define <vscale x 2 x i1> @fcmp_ole_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4764 ; CHECK-LABEL: fcmp_ole_fv_nxv2f32:
4766 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4767 ; CHECK-NEXT: vfmv.v.f v9, fa0
4768 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4769 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4770 ; CHECK-NEXT: vmand.mm v0, v9, v10
4771 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
4773 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4774 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4775 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
4776 ret <vscale x 2 x i1> %1
4779 define <vscale x 2 x i1> @fcmp_one_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4780 ; CHECK-LABEL: fcmp_one_vv_nxv2f32:
4782 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4783 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
4784 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
4785 ; CHECK-NEXT: vmand.mm v0, v11, v10
4786 ; CHECK-NEXT: vmv.v.v v10, v0
4787 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
4788 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
4789 ; CHECK-NEXT: vmor.mm v0, v0, v10
4791 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
4792 ret <vscale x 2 x i1> %1
4795 define <vscale x 2 x i1> @fcmp_one_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4796 ; CHECK-LABEL: fcmp_one_vf_nxv2f32:
4798 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4799 ; CHECK-NEXT: vfmv.v.f v9, fa0
4800 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4801 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4802 ; CHECK-NEXT: vmand.mm v0, v10, v9
4803 ; CHECK-NEXT: vmv.v.v v9, v0
4804 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
4805 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
4806 ; CHECK-NEXT: vmor.mm v0, v0, v9
4808 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4809 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4810 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
4811 ret <vscale x 2 x i1> %1
4814 define <vscale x 2 x i1> @fcmp_one_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4815 ; CHECK-LABEL: fcmp_one_fv_nxv2f32:
4817 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4818 ; CHECK-NEXT: vfmv.v.f v9, fa0
4819 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4820 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4821 ; CHECK-NEXT: vmand.mm v0, v9, v10
4822 ; CHECK-NEXT: vmv.v.v v9, v0
4823 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
4824 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
4825 ; CHECK-NEXT: vmor.mm v0, v0, v9
4827 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4828 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4829 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
4830 ret <vscale x 2 x i1> %1
4833 define <vscale x 2 x i1> @fcmp_ord_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4834 ; CHECK-LABEL: fcmp_ord_vv_nxv2f32:
4836 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4837 ; CHECK-NEXT: vmfeq.vv v9, v9, v9
4838 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
4839 ; CHECK-NEXT: vmand.mm v0, v8, v9
4841 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
4842 ret <vscale x 2 x i1> %1
4845 define <vscale x 2 x i1> @fcmp_ord_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4846 ; CHECK-LABEL: fcmp_ord_vf_nxv2f32:
4848 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4849 ; CHECK-NEXT: vfmv.v.f v9, fa0
4850 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4851 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
4852 ; CHECK-NEXT: vmand.mm v0, v8, v9
4854 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4855 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4856 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
4857 ret <vscale x 2 x i1> %1
4860 define <vscale x 2 x i1> @fcmp_ord_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4861 ; CHECK-LABEL: fcmp_ord_fv_nxv2f32:
4863 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
4864 ; CHECK-NEXT: vfmv.v.f v9, fa0
4865 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4866 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
4867 ; CHECK-NEXT: vmand.mm v0, v9, v8
4869 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4870 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4871 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
4872 ret <vscale x 2 x i1> %1
4875 define <vscale x 2 x i1> @fcmp_ueq_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4876 ; CHECK-LABEL: fcmp_ueq_vv_nxv2f32:
4878 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4879 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
4880 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
4881 ; CHECK-NEXT: vmand.mm v0, v11, v10
4882 ; CHECK-NEXT: vmv.v.v v10, v0
4883 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
4884 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
4885 ; CHECK-NEXT: vmnor.mm v0, v0, v10
4887 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4888 ret <vscale x 2 x i1> %1
4891 define <vscale x 2 x i1> @fcmp_ueq_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4892 ; CHECK-LABEL: fcmp_ueq_vf_nxv2f32:
4894 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4895 ; CHECK-NEXT: vfmv.v.f v9, fa0
4896 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4897 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4898 ; CHECK-NEXT: vmand.mm v0, v10, v9
4899 ; CHECK-NEXT: vmv.v.v v9, v0
4900 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
4901 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
4902 ; CHECK-NEXT: vmnor.mm v0, v0, v9
4904 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4905 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4906 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4907 ret <vscale x 2 x i1> %1
4910 define <vscale x 2 x i1> @fcmp_ueq_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4911 ; CHECK-LABEL: fcmp_ueq_fv_nxv2f32:
4913 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4914 ; CHECK-NEXT: vfmv.v.f v9, fa0
4915 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4916 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4917 ; CHECK-NEXT: vmand.mm v0, v9, v10
4918 ; CHECK-NEXT: vmv.v.v v9, v0
4919 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
4920 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
4921 ; CHECK-NEXT: vmnor.mm v0, v0, v9
4923 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4924 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4925 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
4926 ret <vscale x 2 x i1> %1
4929 define <vscale x 2 x i1> @fcmp_ugt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4930 ; CHECK-LABEL: fcmp_ugt_vv_nxv2f32:
4932 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4933 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
4934 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
4935 ; CHECK-NEXT: vmand.mm v0, v11, v10
4936 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
4937 ; CHECK-NEXT: vmnot.m v0, v0
4939 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4940 ret <vscale x 2 x i1> %1
4943 define <vscale x 2 x i1> @fcmp_ugt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4944 ; CHECK-LABEL: fcmp_ugt_vf_nxv2f32:
4946 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4947 ; CHECK-NEXT: vfmv.v.f v9, fa0
4948 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4949 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4950 ; CHECK-NEXT: vmand.mm v0, v10, v9
4951 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
4952 ; CHECK-NEXT: vmnot.m v0, v0
4954 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4955 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4956 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4957 ret <vscale x 2 x i1> %1
4960 define <vscale x 2 x i1> @fcmp_ugt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4961 ; CHECK-LABEL: fcmp_ugt_fv_nxv2f32:
4963 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4964 ; CHECK-NEXT: vfmv.v.f v9, fa0
4965 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4966 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4967 ; CHECK-NEXT: vmand.mm v0, v9, v10
4968 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
4969 ; CHECK-NEXT: vmnot.m v0, v0
4971 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
4972 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
4973 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
4974 ret <vscale x 2 x i1> %1
4977 define <vscale x 2 x i1> @fcmp_uge_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
4978 ; CHECK-LABEL: fcmp_uge_vv_nxv2f32:
4980 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4981 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
4982 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
4983 ; CHECK-NEXT: vmand.mm v0, v11, v10
4984 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
4985 ; CHECK-NEXT: vmnot.m v0, v0
4987 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
4988 ret <vscale x 2 x i1> %1
4991 define <vscale x 2 x i1> @fcmp_uge_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
4992 ; CHECK-LABEL: fcmp_uge_vf_nxv2f32:
4994 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
4995 ; CHECK-NEXT: vfmv.v.f v9, fa0
4996 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
4997 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
4998 ; CHECK-NEXT: vmand.mm v0, v10, v9
4999 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
5000 ; CHECK-NEXT: vmnot.m v0, v0
5002 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
5003 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
5004 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
5005 ret <vscale x 2 x i1> %1
5008 define <vscale x 2 x i1> @fcmp_uge_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
5009 ; CHECK-LABEL: fcmp_uge_fv_nxv2f32:
5011 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
5012 ; CHECK-NEXT: vfmv.v.f v9, fa0
5013 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
5014 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5015 ; CHECK-NEXT: vmand.mm v0, v9, v10
5016 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
5017 ; CHECK-NEXT: vmnot.m v0, v0
5019 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
5020 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
5021 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
5022 ret <vscale x 2 x i1> %1
5025 define <vscale x 2 x i1> @fcmp_ult_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
5026 ; CHECK-LABEL: fcmp_ult_vv_nxv2f32:
5028 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
5029 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5030 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
5031 ; CHECK-NEXT: vmand.mm v0, v11, v10
5032 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
5033 ; CHECK-NEXT: vmnot.m v0, v0
5035 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
5036 ret <vscale x 2 x i1> %1
5039 define <vscale x 2 x i1> @fcmp_ult_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
5040 ; CHECK-LABEL: fcmp_ult_vf_nxv2f32:
5042 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
5043 ; CHECK-NEXT: vfmv.v.f v9, fa0
5044 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
5045 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5046 ; CHECK-NEXT: vmand.mm v0, v9, v10
5047 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
5048 ; CHECK-NEXT: vmnot.m v0, v0
5050 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
5051 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
5052 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
5053 ret <vscale x 2 x i1> %1
5056 define <vscale x 2 x i1> @fcmp_ult_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
5057 ; CHECK-LABEL: fcmp_ult_fv_nxv2f32:
5059 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
5060 ; CHECK-NEXT: vfmv.v.f v9, fa0
5061 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
5062 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5063 ; CHECK-NEXT: vmand.mm v0, v10, v9
5064 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
5065 ; CHECK-NEXT: vmnot.m v0, v0
5067 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
5068 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
5069 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
5070 ret <vscale x 2 x i1> %1
5073 define <vscale x 2 x i1> @fcmp_ule_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
5074 ; CHECK-LABEL: fcmp_ule_vv_nxv2f32:
5076 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
5077 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5078 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
5079 ; CHECK-NEXT: vmand.mm v0, v11, v10
5080 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
5081 ; CHECK-NEXT: vmnot.m v0, v0
5083 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
5084 ret <vscale x 2 x i1> %1
5087 define <vscale x 2 x i1> @fcmp_ule_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
5088 ; CHECK-LABEL: fcmp_ule_vf_nxv2f32:
5090 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
5091 ; CHECK-NEXT: vfmv.v.f v9, fa0
5092 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
5093 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5094 ; CHECK-NEXT: vmand.mm v0, v9, v10
5095 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
5096 ; CHECK-NEXT: vmnot.m v0, v0
5098 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
5099 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
5100 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
5101 ret <vscale x 2 x i1> %1
5104 define <vscale x 2 x i1> @fcmp_ule_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
5105 ; CHECK-LABEL: fcmp_ule_fv_nxv2f32:
5107 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu
5108 ; CHECK-NEXT: vfmv.v.f v9, fa0
5109 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
5110 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5111 ; CHECK-NEXT: vmand.mm v0, v10, v9
5112 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
5113 ; CHECK-NEXT: vmnot.m v0, v0
5115 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
5116 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
5117 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
5118 ret <vscale x 2 x i1> %1
5121 define <vscale x 2 x i1> @fcmp_une_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
5122 ; CHECK-LABEL: fcmp_une_vv_nxv2f32:
5124 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
5125 ; CHECK-NEXT: vmfne.vv v0, v8, v9
5127 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
5128 ret <vscale x 2 x i1> %1
5131 define <vscale x 2 x i1> @fcmp_une_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
5132 ; CHECK-LABEL: fcmp_une_vf_nxv2f32:
5134 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
5135 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
5137 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
5138 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
5139 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
5140 ret <vscale x 2 x i1> %1
5143 define <vscale x 2 x i1> @fcmp_une_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
5144 ; CHECK-LABEL: fcmp_une_fv_nxv2f32:
5146 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
5147 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
5149 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
5150 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
5151 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
5152 ret <vscale x 2 x i1> %1
5155 define <vscale x 2 x i1> @fcmp_uno_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp {
5156 ; CHECK-LABEL: fcmp_uno_vv_nxv2f32:
5158 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
5159 ; CHECK-NEXT: vmfne.vv v9, v9, v9
5160 ; CHECK-NEXT: vmfne.vv v8, v8, v8
5161 ; CHECK-NEXT: vmor.mm v0, v8, v9
5163 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
5164 ret <vscale x 2 x i1> %1
5167 define <vscale x 2 x i1> @fcmp_uno_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
5168 ; CHECK-LABEL: fcmp_uno_vf_nxv2f32:
5170 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
5171 ; CHECK-NEXT: vfmv.v.f v9, fa0
5172 ; CHECK-NEXT: vmfne.vf v9, v9, fa0
5173 ; CHECK-NEXT: vmfne.vv v8, v8, v8
5174 ; CHECK-NEXT: vmor.mm v0, v8, v9
5176 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
5177 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
5178 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
5179 ret <vscale x 2 x i1> %1
5182 define <vscale x 2 x i1> @fcmp_uno_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp {
5183 ; CHECK-LABEL: fcmp_uno_fv_nxv2f32:
5185 ; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma
5186 ; CHECK-NEXT: vfmv.v.f v9, fa0
5187 ; CHECK-NEXT: vmfne.vf v9, v9, fa0
5188 ; CHECK-NEXT: vmfne.vv v8, v8, v8
5189 ; CHECK-NEXT: vmor.mm v0, v9, v8
5191 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0
5192 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer
5193 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
5194 ret <vscale x 2 x i1> %1
5197 declare <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, metadata, metadata)
5198 define <vscale x 4 x i1> @fcmp_oeq_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5199 ; CHECK-LABEL: fcmp_oeq_vv_nxv4f32:
5201 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
5202 ; CHECK-NEXT: vmfeq.vv v0, v8, v10
5204 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5205 ret <vscale x 4 x i1> %1
5208 define <vscale x 4 x i1> @fcmp_oeq_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5209 ; CHECK-LABEL: fcmp_oeq_vf_nxv4f32:
5211 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
5212 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
5214 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5215 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5216 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5217 ret <vscale x 4 x i1> %1
5220 define <vscale x 4 x i1> @fcmp_oeq_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5221 ; CHECK-LABEL: fcmp_oeq_fv_nxv4f32:
5223 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
5224 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
5226 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5227 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5228 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5229 ret <vscale x 4 x i1> %1
5232 define <vscale x 4 x i1> @fcmp_ogt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5233 ; CHECK-LABEL: fcmp_ogt_vv_nxv4f32:
5235 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5236 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
5237 ; CHECK-NEXT: vmfeq.vv v13, v10, v10
5238 ; CHECK-NEXT: vmand.mm v12, v13, v12
5239 ; CHECK-NEXT: vmv1r.v v0, v12
5240 ; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t
5241 ; CHECK-NEXT: vmv1r.v v0, v12
5243 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5244 ret <vscale x 4 x i1> %1
5247 define <vscale x 4 x i1> @fcmp_ogt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5248 ; CHECK-LABEL: fcmp_ogt_vf_nxv4f32:
5250 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5251 ; CHECK-NEXT: vfmv.v.f v10, fa0
5252 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5253 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5254 ; CHECK-NEXT: vmand.mm v10, v12, v10
5255 ; CHECK-NEXT: vmv1r.v v0, v10
5256 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
5257 ; CHECK-NEXT: vmv1r.v v0, v10
5259 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5260 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5261 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5262 ret <vscale x 4 x i1> %1
5265 define <vscale x 4 x i1> @fcmp_ogt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5266 ; CHECK-LABEL: fcmp_ogt_fv_nxv4f32:
5268 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5269 ; CHECK-NEXT: vfmv.v.f v10, fa0
5270 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5271 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5272 ; CHECK-NEXT: vmand.mm v10, v10, v12
5273 ; CHECK-NEXT: vmv1r.v v0, v10
5274 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
5275 ; CHECK-NEXT: vmv1r.v v0, v10
5277 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5278 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5279 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5280 ret <vscale x 4 x i1> %1
5283 define <vscale x 4 x i1> @fcmp_oge_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5284 ; CHECK-LABEL: fcmp_oge_vv_nxv4f32:
5286 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5287 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
5288 ; CHECK-NEXT: vmfeq.vv v13, v10, v10
5289 ; CHECK-NEXT: vmand.mm v12, v13, v12
5290 ; CHECK-NEXT: vmv1r.v v0, v12
5291 ; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t
5292 ; CHECK-NEXT: vmv1r.v v0, v12
5294 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
5295 ret <vscale x 4 x i1> %1
5298 define <vscale x 4 x i1> @fcmp_oge_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5299 ; CHECK-LABEL: fcmp_oge_vf_nxv4f32:
5301 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5302 ; CHECK-NEXT: vfmv.v.f v10, fa0
5303 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5304 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5305 ; CHECK-NEXT: vmand.mm v10, v12, v10
5306 ; CHECK-NEXT: vmv1r.v v0, v10
5307 ; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t
5308 ; CHECK-NEXT: vmv1r.v v0, v10
5310 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5311 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5312 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
5313 ret <vscale x 4 x i1> %1
5316 define <vscale x 4 x i1> @fcmp_oge_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5317 ; CHECK-LABEL: fcmp_oge_fv_nxv4f32:
5319 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5320 ; CHECK-NEXT: vfmv.v.f v10, fa0
5321 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5322 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5323 ; CHECK-NEXT: vmand.mm v10, v10, v12
5324 ; CHECK-NEXT: vmv1r.v v0, v10
5325 ; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t
5326 ; CHECK-NEXT: vmv1r.v v0, v10
5328 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5329 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5330 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
5331 ret <vscale x 4 x i1> %1
5334 define <vscale x 4 x i1> @fcmp_olt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5335 ; CHECK-LABEL: fcmp_olt_vv_nxv4f32:
5337 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5338 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
5339 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
5340 ; CHECK-NEXT: vmand.mm v12, v13, v12
5341 ; CHECK-NEXT: vmv1r.v v0, v12
5342 ; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t
5343 ; CHECK-NEXT: vmv1r.v v0, v12
5345 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
5346 ret <vscale x 4 x i1> %1
5349 define <vscale x 4 x i1> @fcmp_olt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5350 ; CHECK-LABEL: fcmp_olt_vf_nxv4f32:
5352 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5353 ; CHECK-NEXT: vfmv.v.f v10, fa0
5354 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5355 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5356 ; CHECK-NEXT: vmand.mm v10, v10, v12
5357 ; CHECK-NEXT: vmv1r.v v0, v10
5358 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
5359 ; CHECK-NEXT: vmv1r.v v0, v10
5361 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5362 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5363 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
5364 ret <vscale x 4 x i1> %1
5367 define <vscale x 4 x i1> @fcmp_olt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5368 ; CHECK-LABEL: fcmp_olt_fv_nxv4f32:
5370 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5371 ; CHECK-NEXT: vfmv.v.f v10, fa0
5372 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5373 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5374 ; CHECK-NEXT: vmand.mm v10, v12, v10
5375 ; CHECK-NEXT: vmv1r.v v0, v10
5376 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
5377 ; CHECK-NEXT: vmv1r.v v0, v10
5379 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5380 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5381 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
5382 ret <vscale x 4 x i1> %1
5385 define <vscale x 4 x i1> @fcmp_ole_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5386 ; CHECK-LABEL: fcmp_ole_vv_nxv4f32:
5388 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5389 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
5390 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
5391 ; CHECK-NEXT: vmand.mm v12, v13, v12
5392 ; CHECK-NEXT: vmv1r.v v0, v12
5393 ; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t
5394 ; CHECK-NEXT: vmv1r.v v0, v12
5396 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
5397 ret <vscale x 4 x i1> %1
5400 define <vscale x 4 x i1> @fcmp_ole_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5401 ; CHECK-LABEL: fcmp_ole_vf_nxv4f32:
5403 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5404 ; CHECK-NEXT: vfmv.v.f v10, fa0
5405 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5406 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5407 ; CHECK-NEXT: vmand.mm v10, v10, v12
5408 ; CHECK-NEXT: vmv1r.v v0, v10
5409 ; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t
5410 ; CHECK-NEXT: vmv1r.v v0, v10
5412 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5413 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5414 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
5415 ret <vscale x 4 x i1> %1
5418 define <vscale x 4 x i1> @fcmp_ole_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5419 ; CHECK-LABEL: fcmp_ole_fv_nxv4f32:
5421 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5422 ; CHECK-NEXT: vfmv.v.f v10, fa0
5423 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5424 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5425 ; CHECK-NEXT: vmand.mm v10, v12, v10
5426 ; CHECK-NEXT: vmv1r.v v0, v10
5427 ; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t
5428 ; CHECK-NEXT: vmv1r.v v0, v10
5430 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5431 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5432 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
5433 ret <vscale x 4 x i1> %1
5436 define <vscale x 4 x i1> @fcmp_one_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5437 ; CHECK-LABEL: fcmp_one_vv_nxv4f32:
5439 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5440 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
5441 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
5442 ; CHECK-NEXT: vmand.mm v12, v13, v12
5443 ; CHECK-NEXT: vmv1r.v v13, v12
5444 ; CHECK-NEXT: vmv1r.v v0, v12
5445 ; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t
5446 ; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t
5447 ; CHECK-NEXT: vmor.mm v0, v12, v13
5449 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
5450 ret <vscale x 4 x i1> %1
5453 define <vscale x 4 x i1> @fcmp_one_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5454 ; CHECK-LABEL: fcmp_one_vf_nxv4f32:
5456 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5457 ; CHECK-NEXT: vfmv.v.f v10, fa0
5458 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5459 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5460 ; CHECK-NEXT: vmand.mm v10, v10, v12
5461 ; CHECK-NEXT: vmv1r.v v11, v10
5462 ; CHECK-NEXT: vmv1r.v v0, v10
5463 ; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t
5464 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
5465 ; CHECK-NEXT: vmor.mm v0, v10, v11
5467 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5468 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5469 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
5470 ret <vscale x 4 x i1> %1
5473 define <vscale x 4 x i1> @fcmp_one_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5474 ; CHECK-LABEL: fcmp_one_fv_nxv4f32:
5476 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5477 ; CHECK-NEXT: vfmv.v.f v10, fa0
5478 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5479 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5480 ; CHECK-NEXT: vmand.mm v10, v12, v10
5481 ; CHECK-NEXT: vmv1r.v v11, v10
5482 ; CHECK-NEXT: vmv1r.v v0, v10
5483 ; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t
5484 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
5485 ; CHECK-NEXT: vmor.mm v0, v10, v11
5487 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5488 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5489 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
5490 ret <vscale x 4 x i1> %1
5493 define <vscale x 4 x i1> @fcmp_ord_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5494 ; CHECK-LABEL: fcmp_ord_vv_nxv4f32:
5496 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
5497 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
5498 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5499 ; CHECK-NEXT: vmand.mm v0, v10, v12
5501 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
5502 ret <vscale x 4 x i1> %1
5505 define <vscale x 4 x i1> @fcmp_ord_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5506 ; CHECK-LABEL: fcmp_ord_vf_nxv4f32:
5508 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
5509 ; CHECK-NEXT: vfmv.v.f v10, fa0
5510 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5511 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5512 ; CHECK-NEXT: vmand.mm v0, v10, v12
5514 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5515 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5516 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
5517 ret <vscale x 4 x i1> %1
5520 define <vscale x 4 x i1> @fcmp_ord_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5521 ; CHECK-LABEL: fcmp_ord_fv_nxv4f32:
5523 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
5524 ; CHECK-NEXT: vfmv.v.f v10, fa0
5525 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5526 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5527 ; CHECK-NEXT: vmand.mm v0, v12, v10
5529 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5530 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5531 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
5532 ret <vscale x 4 x i1> %1
5535 define <vscale x 4 x i1> @fcmp_ueq_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5536 ; CHECK-LABEL: fcmp_ueq_vv_nxv4f32:
5538 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5539 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
5540 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
5541 ; CHECK-NEXT: vmand.mm v12, v13, v12
5542 ; CHECK-NEXT: vmv1r.v v13, v12
5543 ; CHECK-NEXT: vmv1r.v v0, v12
5544 ; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t
5545 ; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t
5546 ; CHECK-NEXT: vmnor.mm v0, v12, v13
5548 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5549 ret <vscale x 4 x i1> %1
5552 define <vscale x 4 x i1> @fcmp_ueq_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5553 ; CHECK-LABEL: fcmp_ueq_vf_nxv4f32:
5555 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5556 ; CHECK-NEXT: vfmv.v.f v10, fa0
5557 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5558 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5559 ; CHECK-NEXT: vmand.mm v10, v10, v12
5560 ; CHECK-NEXT: vmv1r.v v11, v10
5561 ; CHECK-NEXT: vmv1r.v v0, v10
5562 ; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t
5563 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
5564 ; CHECK-NEXT: vmnor.mm v0, v10, v11
5566 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5567 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5568 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5569 ret <vscale x 4 x i1> %1
5572 define <vscale x 4 x i1> @fcmp_ueq_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5573 ; CHECK-LABEL: fcmp_ueq_fv_nxv4f32:
5575 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5576 ; CHECK-NEXT: vfmv.v.f v10, fa0
5577 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5578 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5579 ; CHECK-NEXT: vmand.mm v10, v12, v10
5580 ; CHECK-NEXT: vmv1r.v v11, v10
5581 ; CHECK-NEXT: vmv1r.v v0, v10
5582 ; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t
5583 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
5584 ; CHECK-NEXT: vmnor.mm v0, v10, v11
5586 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5587 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5588 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
5589 ret <vscale x 4 x i1> %1
5592 define <vscale x 4 x i1> @fcmp_ugt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5593 ; CHECK-LABEL: fcmp_ugt_vv_nxv4f32:
5595 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5596 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
5597 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
5598 ; CHECK-NEXT: vmand.mm v12, v13, v12
5599 ; CHECK-NEXT: vmv1r.v v0, v12
5600 ; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t
5601 ; CHECK-NEXT: vmnot.m v0, v12
5603 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5604 ret <vscale x 4 x i1> %1
5607 define <vscale x 4 x i1> @fcmp_ugt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5608 ; CHECK-LABEL: fcmp_ugt_vf_nxv4f32:
5610 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5611 ; CHECK-NEXT: vfmv.v.f v10, fa0
5612 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5613 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5614 ; CHECK-NEXT: vmand.mm v10, v10, v12
5615 ; CHECK-NEXT: vmv1r.v v0, v10
5616 ; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t
5617 ; CHECK-NEXT: vmnot.m v0, v10
5619 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5620 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5621 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5622 ret <vscale x 4 x i1> %1
5625 define <vscale x 4 x i1> @fcmp_ugt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5626 ; CHECK-LABEL: fcmp_ugt_fv_nxv4f32:
5628 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5629 ; CHECK-NEXT: vfmv.v.f v10, fa0
5630 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5631 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5632 ; CHECK-NEXT: vmand.mm v10, v12, v10
5633 ; CHECK-NEXT: vmv1r.v v0, v10
5634 ; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t
5635 ; CHECK-NEXT: vmnot.m v0, v10
5637 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5638 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5639 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
5640 ret <vscale x 4 x i1> %1
5643 define <vscale x 4 x i1> @fcmp_uge_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5644 ; CHECK-LABEL: fcmp_uge_vv_nxv4f32:
5646 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5647 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
5648 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
5649 ; CHECK-NEXT: vmand.mm v12, v13, v12
5650 ; CHECK-NEXT: vmv1r.v v0, v12
5651 ; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t
5652 ; CHECK-NEXT: vmnot.m v0, v12
5654 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
5655 ret <vscale x 4 x i1> %1
5658 define <vscale x 4 x i1> @fcmp_uge_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5659 ; CHECK-LABEL: fcmp_uge_vf_nxv4f32:
5661 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5662 ; CHECK-NEXT: vfmv.v.f v10, fa0
5663 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5664 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5665 ; CHECK-NEXT: vmand.mm v10, v10, v12
5666 ; CHECK-NEXT: vmv1r.v v0, v10
5667 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
5668 ; CHECK-NEXT: vmnot.m v0, v10
5670 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5671 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5672 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
5673 ret <vscale x 4 x i1> %1
5676 define <vscale x 4 x i1> @fcmp_uge_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5677 ; CHECK-LABEL: fcmp_uge_fv_nxv4f32:
5679 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5680 ; CHECK-NEXT: vfmv.v.f v10, fa0
5681 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5682 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5683 ; CHECK-NEXT: vmand.mm v10, v12, v10
5684 ; CHECK-NEXT: vmv1r.v v0, v10
5685 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
5686 ; CHECK-NEXT: vmnot.m v0, v10
5688 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5689 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5690 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
5691 ret <vscale x 4 x i1> %1
5694 define <vscale x 4 x i1> @fcmp_ult_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5695 ; CHECK-LABEL: fcmp_ult_vv_nxv4f32:
5697 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5698 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
5699 ; CHECK-NEXT: vmfeq.vv v13, v10, v10
5700 ; CHECK-NEXT: vmand.mm v12, v13, v12
5701 ; CHECK-NEXT: vmv1r.v v0, v12
5702 ; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t
5703 ; CHECK-NEXT: vmnot.m v0, v12
5705 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
5706 ret <vscale x 4 x i1> %1
5709 define <vscale x 4 x i1> @fcmp_ult_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5710 ; CHECK-LABEL: fcmp_ult_vf_nxv4f32:
5712 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5713 ; CHECK-NEXT: vfmv.v.f v10, fa0
5714 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5715 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5716 ; CHECK-NEXT: vmand.mm v10, v12, v10
5717 ; CHECK-NEXT: vmv1r.v v0, v10
5718 ; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t
5719 ; CHECK-NEXT: vmnot.m v0, v10
5721 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5722 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5723 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
5724 ret <vscale x 4 x i1> %1
5727 define <vscale x 4 x i1> @fcmp_ult_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5728 ; CHECK-LABEL: fcmp_ult_fv_nxv4f32:
5730 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5731 ; CHECK-NEXT: vfmv.v.f v10, fa0
5732 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5733 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5734 ; CHECK-NEXT: vmand.mm v10, v10, v12
5735 ; CHECK-NEXT: vmv1r.v v0, v10
5736 ; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t
5737 ; CHECK-NEXT: vmnot.m v0, v10
5739 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5740 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5741 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
5742 ret <vscale x 4 x i1> %1
5745 define <vscale x 4 x i1> @fcmp_ule_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5746 ; CHECK-LABEL: fcmp_ule_vv_nxv4f32:
5748 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5749 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
5750 ; CHECK-NEXT: vmfeq.vv v13, v10, v10
5751 ; CHECK-NEXT: vmand.mm v12, v13, v12
5752 ; CHECK-NEXT: vmv1r.v v0, v12
5753 ; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t
5754 ; CHECK-NEXT: vmnot.m v0, v12
5756 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
5757 ret <vscale x 4 x i1> %1
5760 define <vscale x 4 x i1> @fcmp_ule_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5761 ; CHECK-LABEL: fcmp_ule_vf_nxv4f32:
5763 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5764 ; CHECK-NEXT: vfmv.v.f v10, fa0
5765 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5766 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5767 ; CHECK-NEXT: vmand.mm v10, v12, v10
5768 ; CHECK-NEXT: vmv1r.v v0, v10
5769 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
5770 ; CHECK-NEXT: vmnot.m v0, v10
5772 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5773 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5774 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
5775 ret <vscale x 4 x i1> %1
5778 define <vscale x 4 x i1> @fcmp_ule_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5779 ; CHECK-LABEL: fcmp_ule_fv_nxv4f32:
5781 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu
5782 ; CHECK-NEXT: vfmv.v.f v10, fa0
5783 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
5784 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
5785 ; CHECK-NEXT: vmand.mm v10, v10, v12
5786 ; CHECK-NEXT: vmv1r.v v0, v10
5787 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
5788 ; CHECK-NEXT: vmnot.m v0, v10
5790 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5791 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5792 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
5793 ret <vscale x 4 x i1> %1
5796 define <vscale x 4 x i1> @fcmp_une_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5797 ; CHECK-LABEL: fcmp_une_vv_nxv4f32:
5799 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
5800 ; CHECK-NEXT: vmfne.vv v0, v8, v10
5802 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
5803 ret <vscale x 4 x i1> %1
5806 define <vscale x 4 x i1> @fcmp_une_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5807 ; CHECK-LABEL: fcmp_une_vf_nxv4f32:
5809 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
5810 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
5812 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5813 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5814 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
5815 ret <vscale x 4 x i1> %1
5818 define <vscale x 4 x i1> @fcmp_une_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5819 ; CHECK-LABEL: fcmp_une_fv_nxv4f32:
5821 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
5822 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
5824 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5825 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5826 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
5827 ret <vscale x 4 x i1> %1
5830 define <vscale x 4 x i1> @fcmp_uno_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp {
5831 ; CHECK-LABEL: fcmp_uno_vv_nxv4f32:
5833 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
5834 ; CHECK-NEXT: vmfne.vv v12, v10, v10
5835 ; CHECK-NEXT: vmfne.vv v10, v8, v8
5836 ; CHECK-NEXT: vmor.mm v0, v10, v12
5838 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
5839 ret <vscale x 4 x i1> %1
5842 define <vscale x 4 x i1> @fcmp_uno_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5843 ; CHECK-LABEL: fcmp_uno_vf_nxv4f32:
5845 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
5846 ; CHECK-NEXT: vfmv.v.f v10, fa0
5847 ; CHECK-NEXT: vmfne.vf v12, v10, fa0
5848 ; CHECK-NEXT: vmfne.vv v10, v8, v8
5849 ; CHECK-NEXT: vmor.mm v0, v10, v12
5851 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5852 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5853 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
5854 ret <vscale x 4 x i1> %1
5857 define <vscale x 4 x i1> @fcmp_uno_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp {
5858 ; CHECK-LABEL: fcmp_uno_fv_nxv4f32:
5860 ; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma
5861 ; CHECK-NEXT: vfmv.v.f v10, fa0
5862 ; CHECK-NEXT: vmfne.vf v12, v10, fa0
5863 ; CHECK-NEXT: vmfne.vv v10, v8, v8
5864 ; CHECK-NEXT: vmor.mm v0, v12, v10
5866 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0
5867 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer
5868 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
5869 ret <vscale x 4 x i1> %1
5872 declare <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float>, <vscale x 8 x float>, metadata, metadata)
5873 define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
5874 ; CHECK-LABEL: fcmp_oeq_vv_nxv8f32:
5876 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5877 ; CHECK-NEXT: vmfeq.vv v0, v8, v12
5879 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5880 ret <vscale x 8 x i1> %1
5883 define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5884 ; CHECK-LABEL: fcmp_oeq_vf_nxv8f32:
5886 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5887 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
5889 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5890 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5891 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5892 ret <vscale x 8 x i1> %1
5895 define <vscale x 8 x i1> @fcmp_oeq_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5896 ; CHECK-LABEL: fcmp_oeq_fv_nxv8f32:
5898 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
5899 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
5901 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5902 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5903 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
5904 ret <vscale x 8 x i1> %1
5907 define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
5908 ; CHECK-LABEL: fcmp_ogt_vv_nxv8f32:
5910 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
5911 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
5912 ; CHECK-NEXT: vmfeq.vv v17, v12, v12
5913 ; CHECK-NEXT: vmand.mm v16, v17, v16
5914 ; CHECK-NEXT: vmv1r.v v0, v16
5915 ; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t
5916 ; CHECK-NEXT: vmv1r.v v0, v16
5918 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5919 ret <vscale x 8 x i1> %1
5922 define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5923 ; CHECK-LABEL: fcmp_ogt_vf_nxv8f32:
5925 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
5926 ; CHECK-NEXT: vfmv.v.f v12, fa0
5927 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
5928 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
5929 ; CHECK-NEXT: vmand.mm v12, v16, v12
5930 ; CHECK-NEXT: vmv1r.v v0, v12
5931 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
5932 ; CHECK-NEXT: vmv1r.v v0, v12
5934 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5935 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5936 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5937 ret <vscale x 8 x i1> %1
5940 define <vscale x 8 x i1> @fcmp_ogt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5941 ; CHECK-LABEL: fcmp_ogt_fv_nxv8f32:
5943 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
5944 ; CHECK-NEXT: vfmv.v.f v12, fa0
5945 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
5946 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
5947 ; CHECK-NEXT: vmand.mm v12, v12, v16
5948 ; CHECK-NEXT: vmv1r.v v0, v12
5949 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
5950 ; CHECK-NEXT: vmv1r.v v0, v12
5952 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5953 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5954 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
5955 ret <vscale x 8 x i1> %1
5958 define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
5959 ; CHECK-LABEL: fcmp_oge_vv_nxv8f32:
5961 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
5962 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
5963 ; CHECK-NEXT: vmfeq.vv v17, v12, v12
5964 ; CHECK-NEXT: vmand.mm v16, v17, v16
5965 ; CHECK-NEXT: vmv1r.v v0, v16
5966 ; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t
5967 ; CHECK-NEXT: vmv1r.v v0, v16
5969 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
5970 ret <vscale x 8 x i1> %1
5973 define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5974 ; CHECK-LABEL: fcmp_oge_vf_nxv8f32:
5976 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
5977 ; CHECK-NEXT: vfmv.v.f v12, fa0
5978 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
5979 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
5980 ; CHECK-NEXT: vmand.mm v12, v16, v12
5981 ; CHECK-NEXT: vmv1r.v v0, v12
5982 ; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t
5983 ; CHECK-NEXT: vmv1r.v v0, v12
5985 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
5986 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
5987 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
5988 ret <vscale x 8 x i1> %1
5991 define <vscale x 8 x i1> @fcmp_oge_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
5992 ; CHECK-LABEL: fcmp_oge_fv_nxv8f32:
5994 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
5995 ; CHECK-NEXT: vfmv.v.f v12, fa0
5996 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
5997 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
5998 ; CHECK-NEXT: vmand.mm v12, v12, v16
5999 ; CHECK-NEXT: vmv1r.v v0, v12
6000 ; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t
6001 ; CHECK-NEXT: vmv1r.v v0, v12
6003 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6004 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6005 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
6006 ret <vscale x 8 x i1> %1
6009 define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
6010 ; CHECK-LABEL: fcmp_olt_vv_nxv8f32:
6012 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6013 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
6014 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
6015 ; CHECK-NEXT: vmand.mm v16, v17, v16
6016 ; CHECK-NEXT: vmv1r.v v0, v16
6017 ; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t
6018 ; CHECK-NEXT: vmv1r.v v0, v16
6020 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
6021 ret <vscale x 8 x i1> %1
6024 define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6025 ; CHECK-LABEL: fcmp_olt_vf_nxv8f32:
6027 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6028 ; CHECK-NEXT: vfmv.v.f v12, fa0
6029 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6030 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6031 ; CHECK-NEXT: vmand.mm v12, v12, v16
6032 ; CHECK-NEXT: vmv1r.v v0, v12
6033 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
6034 ; CHECK-NEXT: vmv1r.v v0, v12
6036 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6037 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6038 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
6039 ret <vscale x 8 x i1> %1
6042 define <vscale x 8 x i1> @fcmp_olt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6043 ; CHECK-LABEL: fcmp_olt_fv_nxv8f32:
6045 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6046 ; CHECK-NEXT: vfmv.v.f v12, fa0
6047 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6048 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6049 ; CHECK-NEXT: vmand.mm v12, v16, v12
6050 ; CHECK-NEXT: vmv1r.v v0, v12
6051 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
6052 ; CHECK-NEXT: vmv1r.v v0, v12
6054 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6055 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6056 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
6057 ret <vscale x 8 x i1> %1
6060 define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
6061 ; CHECK-LABEL: fcmp_ole_vv_nxv8f32:
6063 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6064 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
6065 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
6066 ; CHECK-NEXT: vmand.mm v16, v17, v16
6067 ; CHECK-NEXT: vmv1r.v v0, v16
6068 ; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t
6069 ; CHECK-NEXT: vmv1r.v v0, v16
6071 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
6072 ret <vscale x 8 x i1> %1
6075 define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6076 ; CHECK-LABEL: fcmp_ole_vf_nxv8f32:
6078 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6079 ; CHECK-NEXT: vfmv.v.f v12, fa0
6080 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6081 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6082 ; CHECK-NEXT: vmand.mm v12, v12, v16
6083 ; CHECK-NEXT: vmv1r.v v0, v12
6084 ; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t
6085 ; CHECK-NEXT: vmv1r.v v0, v12
6087 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6088 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6089 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
6090 ret <vscale x 8 x i1> %1
6093 define <vscale x 8 x i1> @fcmp_ole_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6094 ; CHECK-LABEL: fcmp_ole_fv_nxv8f32:
6096 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6097 ; CHECK-NEXT: vfmv.v.f v12, fa0
6098 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6099 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6100 ; CHECK-NEXT: vmand.mm v12, v16, v12
6101 ; CHECK-NEXT: vmv1r.v v0, v12
6102 ; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t
6103 ; CHECK-NEXT: vmv1r.v v0, v12
6105 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6106 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6107 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
6108 ret <vscale x 8 x i1> %1
6111 define <vscale x 8 x i1> @fcmp_one_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
6112 ; CHECK-LABEL: fcmp_one_vv_nxv8f32:
6114 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6115 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
6116 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
6117 ; CHECK-NEXT: vmand.mm v16, v17, v16
6118 ; CHECK-NEXT: vmv1r.v v17, v16
6119 ; CHECK-NEXT: vmv1r.v v0, v16
6120 ; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t
6121 ; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t
6122 ; CHECK-NEXT: vmor.mm v0, v16, v17
6124 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
6125 ret <vscale x 8 x i1> %1
6128 define <vscale x 8 x i1> @fcmp_one_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6129 ; CHECK-LABEL: fcmp_one_vf_nxv8f32:
6131 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6132 ; CHECK-NEXT: vfmv.v.f v12, fa0
6133 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6134 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6135 ; CHECK-NEXT: vmand.mm v12, v12, v16
6136 ; CHECK-NEXT: vmv1r.v v13, v12
6137 ; CHECK-NEXT: vmv1r.v v0, v12
6138 ; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t
6139 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
6140 ; CHECK-NEXT: vmor.mm v0, v12, v13
6142 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6143 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6144 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
6145 ret <vscale x 8 x i1> %1
6148 define <vscale x 8 x i1> @fcmp_one_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6149 ; CHECK-LABEL: fcmp_one_fv_nxv8f32:
6151 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6152 ; CHECK-NEXT: vfmv.v.f v12, fa0
6153 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6154 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6155 ; CHECK-NEXT: vmand.mm v12, v16, v12
6156 ; CHECK-NEXT: vmv1r.v v13, v12
6157 ; CHECK-NEXT: vmv1r.v v0, v12
6158 ; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t
6159 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
6160 ; CHECK-NEXT: vmor.mm v0, v12, v13
6162 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6163 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6164 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
6165 ret <vscale x 8 x i1> %1
6168 define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
6169 ; CHECK-LABEL: fcmp_ord_vv_nxv8f32:
6171 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
6172 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
6173 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6174 ; CHECK-NEXT: vmand.mm v0, v12, v16
6176 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
6177 ret <vscale x 8 x i1> %1
6180 define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6181 ; CHECK-LABEL: fcmp_ord_vf_nxv8f32:
6183 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
6184 ; CHECK-NEXT: vfmv.v.f v12, fa0
6185 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6186 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6187 ; CHECK-NEXT: vmand.mm v0, v12, v16
6189 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6190 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6191 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
6192 ret <vscale x 8 x i1> %1
6195 define <vscale x 8 x i1> @fcmp_ord_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6196 ; CHECK-LABEL: fcmp_ord_fv_nxv8f32:
6198 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
6199 ; CHECK-NEXT: vfmv.v.f v12, fa0
6200 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6201 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6202 ; CHECK-NEXT: vmand.mm v0, v16, v12
6204 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6205 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6206 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
6207 ret <vscale x 8 x i1> %1
6210 define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
6211 ; CHECK-LABEL: fcmp_ueq_vv_nxv8f32:
6213 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6214 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
6215 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
6216 ; CHECK-NEXT: vmand.mm v16, v17, v16
6217 ; CHECK-NEXT: vmv1r.v v17, v16
6218 ; CHECK-NEXT: vmv1r.v v0, v16
6219 ; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t
6220 ; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t
6221 ; CHECK-NEXT: vmnor.mm v0, v16, v17
6223 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6224 ret <vscale x 8 x i1> %1
6227 define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6228 ; CHECK-LABEL: fcmp_ueq_vf_nxv8f32:
6230 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6231 ; CHECK-NEXT: vfmv.v.f v12, fa0
6232 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6233 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6234 ; CHECK-NEXT: vmand.mm v12, v12, v16
6235 ; CHECK-NEXT: vmv1r.v v13, v12
6236 ; CHECK-NEXT: vmv1r.v v0, v12
6237 ; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t
6238 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
6239 ; CHECK-NEXT: vmnor.mm v0, v12, v13
6241 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6242 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6243 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6244 ret <vscale x 8 x i1> %1
6247 define <vscale x 8 x i1> @fcmp_ueq_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6248 ; CHECK-LABEL: fcmp_ueq_fv_nxv8f32:
6250 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6251 ; CHECK-NEXT: vfmv.v.f v12, fa0
6252 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6253 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6254 ; CHECK-NEXT: vmand.mm v12, v16, v12
6255 ; CHECK-NEXT: vmv1r.v v13, v12
6256 ; CHECK-NEXT: vmv1r.v v0, v12
6257 ; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t
6258 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
6259 ; CHECK-NEXT: vmnor.mm v0, v12, v13
6261 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6262 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6263 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6264 ret <vscale x 8 x i1> %1
6267 define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
6268 ; CHECK-LABEL: fcmp_ugt_vv_nxv8f32:
6270 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6271 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
6272 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
6273 ; CHECK-NEXT: vmand.mm v16, v17, v16
6274 ; CHECK-NEXT: vmv1r.v v0, v16
6275 ; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t
6276 ; CHECK-NEXT: vmnot.m v0, v16
6278 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6279 ret <vscale x 8 x i1> %1
6282 define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6283 ; CHECK-LABEL: fcmp_ugt_vf_nxv8f32:
6285 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6286 ; CHECK-NEXT: vfmv.v.f v12, fa0
6287 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6288 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6289 ; CHECK-NEXT: vmand.mm v12, v12, v16
6290 ; CHECK-NEXT: vmv1r.v v0, v12
6291 ; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t
6292 ; CHECK-NEXT: vmnot.m v0, v12
6294 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6295 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6296 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6297 ret <vscale x 8 x i1> %1
6300 define <vscale x 8 x i1> @fcmp_ugt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6301 ; CHECK-LABEL: fcmp_ugt_fv_nxv8f32:
6303 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6304 ; CHECK-NEXT: vfmv.v.f v12, fa0
6305 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6306 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6307 ; CHECK-NEXT: vmand.mm v12, v16, v12
6308 ; CHECK-NEXT: vmv1r.v v0, v12
6309 ; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t
6310 ; CHECK-NEXT: vmnot.m v0, v12
6312 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6313 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6314 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6315 ret <vscale x 8 x i1> %1
6318 define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
6319 ; CHECK-LABEL: fcmp_uge_vv_nxv8f32:
6321 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6322 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
6323 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
6324 ; CHECK-NEXT: vmand.mm v16, v17, v16
6325 ; CHECK-NEXT: vmv1r.v v0, v16
6326 ; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t
6327 ; CHECK-NEXT: vmnot.m v0, v16
6329 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
6330 ret <vscale x 8 x i1> %1
6333 define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6334 ; CHECK-LABEL: fcmp_uge_vf_nxv8f32:
6336 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6337 ; CHECK-NEXT: vfmv.v.f v12, fa0
6338 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6339 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6340 ; CHECK-NEXT: vmand.mm v12, v12, v16
6341 ; CHECK-NEXT: vmv1r.v v0, v12
6342 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
6343 ; CHECK-NEXT: vmnot.m v0, v12
6345 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6346 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6347 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
6348 ret <vscale x 8 x i1> %1
6351 define <vscale x 8 x i1> @fcmp_uge_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6352 ; CHECK-LABEL: fcmp_uge_fv_nxv8f32:
6354 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6355 ; CHECK-NEXT: vfmv.v.f v12, fa0
6356 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6357 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6358 ; CHECK-NEXT: vmand.mm v12, v16, v12
6359 ; CHECK-NEXT: vmv1r.v v0, v12
6360 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
6361 ; CHECK-NEXT: vmnot.m v0, v12
6363 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6364 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6365 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
6366 ret <vscale x 8 x i1> %1
6369 define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
6370 ; CHECK-LABEL: fcmp_ult_vv_nxv8f32:
6372 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6373 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6374 ; CHECK-NEXT: vmfeq.vv v17, v12, v12
6375 ; CHECK-NEXT: vmand.mm v16, v17, v16
6376 ; CHECK-NEXT: vmv1r.v v0, v16
6377 ; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t
6378 ; CHECK-NEXT: vmnot.m v0, v16
6380 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
6381 ret <vscale x 8 x i1> %1
6384 define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6385 ; CHECK-LABEL: fcmp_ult_vf_nxv8f32:
6387 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6388 ; CHECK-NEXT: vfmv.v.f v12, fa0
6389 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6390 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6391 ; CHECK-NEXT: vmand.mm v12, v16, v12
6392 ; CHECK-NEXT: vmv1r.v v0, v12
6393 ; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t
6394 ; CHECK-NEXT: vmnot.m v0, v12
6396 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6397 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6398 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
6399 ret <vscale x 8 x i1> %1
6402 define <vscale x 8 x i1> @fcmp_ult_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6403 ; CHECK-LABEL: fcmp_ult_fv_nxv8f32:
6405 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6406 ; CHECK-NEXT: vfmv.v.f v12, fa0
6407 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6408 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6409 ; CHECK-NEXT: vmand.mm v12, v12, v16
6410 ; CHECK-NEXT: vmv1r.v v0, v12
6411 ; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t
6412 ; CHECK-NEXT: vmnot.m v0, v12
6414 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6415 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6416 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
6417 ret <vscale x 8 x i1> %1
6420 define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
6421 ; CHECK-LABEL: fcmp_ule_vv_nxv8f32:
6423 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6424 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6425 ; CHECK-NEXT: vmfeq.vv v17, v12, v12
6426 ; CHECK-NEXT: vmand.mm v16, v17, v16
6427 ; CHECK-NEXT: vmv1r.v v0, v16
6428 ; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t
6429 ; CHECK-NEXT: vmnot.m v0, v16
6431 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
6432 ret <vscale x 8 x i1> %1
6435 define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6436 ; CHECK-LABEL: fcmp_ule_vf_nxv8f32:
6438 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6439 ; CHECK-NEXT: vfmv.v.f v12, fa0
6440 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6441 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6442 ; CHECK-NEXT: vmand.mm v12, v16, v12
6443 ; CHECK-NEXT: vmv1r.v v0, v12
6444 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
6445 ; CHECK-NEXT: vmnot.m v0, v12
6447 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6448 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6449 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
6450 ret <vscale x 8 x i1> %1
6453 define <vscale x 8 x i1> @fcmp_ule_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6454 ; CHECK-LABEL: fcmp_ule_fv_nxv8f32:
6456 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu
6457 ; CHECK-NEXT: vfmv.v.f v12, fa0
6458 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
6459 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
6460 ; CHECK-NEXT: vmand.mm v12, v12, v16
6461 ; CHECK-NEXT: vmv1r.v v0, v12
6462 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
6463 ; CHECK-NEXT: vmnot.m v0, v12
6465 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6466 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6467 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
6468 ret <vscale x 8 x i1> %1
6471 define <vscale x 8 x i1> @fcmp_une_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
6472 ; CHECK-LABEL: fcmp_une_vv_nxv8f32:
6474 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
6475 ; CHECK-NEXT: vmfne.vv v0, v8, v12
6477 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
6478 ret <vscale x 8 x i1> %1
6481 define <vscale x 8 x i1> @fcmp_une_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6482 ; CHECK-LABEL: fcmp_une_vf_nxv8f32:
6484 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
6485 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
6487 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6488 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6489 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
6490 ret <vscale x 8 x i1> %1
6493 define <vscale x 8 x i1> @fcmp_une_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6494 ; CHECK-LABEL: fcmp_une_fv_nxv8f32:
6496 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
6497 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
6499 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6500 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6501 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
6502 ret <vscale x 8 x i1> %1
6505 define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp {
6506 ; CHECK-LABEL: fcmp_uno_vv_nxv8f32:
6508 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
6509 ; CHECK-NEXT: vmfne.vv v16, v12, v12
6510 ; CHECK-NEXT: vmfne.vv v12, v8, v8
6511 ; CHECK-NEXT: vmor.mm v0, v12, v16
6513 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
6514 ret <vscale x 8 x i1> %1
6517 define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6518 ; CHECK-LABEL: fcmp_uno_vf_nxv8f32:
6520 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
6521 ; CHECK-NEXT: vfmv.v.f v12, fa0
6522 ; CHECK-NEXT: vmfne.vf v16, v12, fa0
6523 ; CHECK-NEXT: vmfne.vv v12, v8, v8
6524 ; CHECK-NEXT: vmor.mm v0, v12, v16
6526 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6527 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6528 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
6529 ret <vscale x 8 x i1> %1
6532 define <vscale x 8 x i1> @fcmp_uno_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp {
6533 ; CHECK-LABEL: fcmp_uno_fv_nxv8f32:
6535 ; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma
6536 ; CHECK-NEXT: vfmv.v.f v12, fa0
6537 ; CHECK-NEXT: vmfne.vf v16, v12, fa0
6538 ; CHECK-NEXT: vmfne.vv v12, v8, v8
6539 ; CHECK-NEXT: vmor.mm v0, v16, v12
6541 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0
6542 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer
6543 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
6544 ret <vscale x 8 x i1> %1
6547 declare <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float>, <vscale x 16 x float>, metadata, metadata)
6548 define <vscale x 16 x i1> @fcmp_oeq_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
6549 ; CHECK-LABEL: fcmp_oeq_vv_nxv16f32:
6551 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
6552 ; CHECK-NEXT: vmfeq.vv v0, v8, v16
6554 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6555 ret <vscale x 16 x i1> %1
6558 define <vscale x 16 x i1> @fcmp_oeq_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6559 ; CHECK-LABEL: fcmp_oeq_vf_nxv16f32:
6561 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
6562 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
6564 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6565 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6566 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6567 ret <vscale x 16 x i1> %1
6570 define <vscale x 16 x i1> @fcmp_oeq_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6571 ; CHECK-LABEL: fcmp_oeq_fv_nxv16f32:
6573 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
6574 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
6576 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6577 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6578 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
6579 ret <vscale x 16 x i1> %1
6582 define <vscale x 16 x i1> @fcmp_ogt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
6583 ; CHECK-LABEL: fcmp_ogt_vv_nxv16f32:
6585 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6586 ; CHECK-NEXT: vmfeq.vv v24, v8, v8
6587 ; CHECK-NEXT: vmfeq.vv v25, v16, v16
6588 ; CHECK-NEXT: vmand.mm v24, v25, v24
6589 ; CHECK-NEXT: vmv1r.v v0, v24
6590 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
6591 ; CHECK-NEXT: vmv1r.v v0, v24
6593 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
6594 ret <vscale x 16 x i1> %1
6597 define <vscale x 16 x i1> @fcmp_ogt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6598 ; CHECK-LABEL: fcmp_ogt_vf_nxv16f32:
6600 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6601 ; CHECK-NEXT: vfmv.v.f v16, fa0
6602 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6603 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6604 ; CHECK-NEXT: vmand.mm v16, v24, v16
6605 ; CHECK-NEXT: vmv1r.v v0, v16
6606 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
6607 ; CHECK-NEXT: vmv1r.v v0, v16
6609 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6610 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6611 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
6612 ret <vscale x 16 x i1> %1
6615 define <vscale x 16 x i1> @fcmp_ogt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6616 ; CHECK-LABEL: fcmp_ogt_fv_nxv16f32:
6618 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6619 ; CHECK-NEXT: vfmv.v.f v16, fa0
6620 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6621 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6622 ; CHECK-NEXT: vmand.mm v16, v16, v24
6623 ; CHECK-NEXT: vmv1r.v v0, v16
6624 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
6625 ; CHECK-NEXT: vmv1r.v v0, v16
6627 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6628 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6629 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
6630 ret <vscale x 16 x i1> %1
6633 define <vscale x 16 x i1> @fcmp_oge_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
6634 ; CHECK-LABEL: fcmp_oge_vv_nxv16f32:
6636 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6637 ; CHECK-NEXT: vmfeq.vv v24, v8, v8
6638 ; CHECK-NEXT: vmfeq.vv v25, v16, v16
6639 ; CHECK-NEXT: vmand.mm v24, v25, v24
6640 ; CHECK-NEXT: vmv1r.v v0, v24
6641 ; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t
6642 ; CHECK-NEXT: vmv1r.v v0, v24
6644 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
6645 ret <vscale x 16 x i1> %1
6648 define <vscale x 16 x i1> @fcmp_oge_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6649 ; CHECK-LABEL: fcmp_oge_vf_nxv16f32:
6651 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6652 ; CHECK-NEXT: vfmv.v.f v16, fa0
6653 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6654 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6655 ; CHECK-NEXT: vmand.mm v16, v24, v16
6656 ; CHECK-NEXT: vmv1r.v v0, v16
6657 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
6658 ; CHECK-NEXT: vmv1r.v v0, v16
6660 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6661 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6662 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
6663 ret <vscale x 16 x i1> %1
6666 define <vscale x 16 x i1> @fcmp_oge_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6667 ; CHECK-LABEL: fcmp_oge_fv_nxv16f32:
6669 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6670 ; CHECK-NEXT: vfmv.v.f v16, fa0
6671 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6672 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6673 ; CHECK-NEXT: vmand.mm v16, v16, v24
6674 ; CHECK-NEXT: vmv1r.v v0, v16
6675 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
6676 ; CHECK-NEXT: vmv1r.v v0, v16
6678 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6679 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6680 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
6681 ret <vscale x 16 x i1> %1
6684 define <vscale x 16 x i1> @fcmp_olt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
6685 ; CHECK-LABEL: fcmp_olt_vv_nxv16f32:
6687 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6688 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
6689 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
6690 ; CHECK-NEXT: vmand.mm v24, v25, v24
6691 ; CHECK-NEXT: vmv1r.v v0, v24
6692 ; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t
6693 ; CHECK-NEXT: vmv1r.v v0, v24
6695 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
6696 ret <vscale x 16 x i1> %1
6699 define <vscale x 16 x i1> @fcmp_olt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6700 ; CHECK-LABEL: fcmp_olt_vf_nxv16f32:
6702 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6703 ; CHECK-NEXT: vfmv.v.f v16, fa0
6704 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6705 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6706 ; CHECK-NEXT: vmand.mm v16, v16, v24
6707 ; CHECK-NEXT: vmv1r.v v0, v16
6708 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
6709 ; CHECK-NEXT: vmv1r.v v0, v16
6711 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6712 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6713 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
6714 ret <vscale x 16 x i1> %1
6717 define <vscale x 16 x i1> @fcmp_olt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6718 ; CHECK-LABEL: fcmp_olt_fv_nxv16f32:
6720 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6721 ; CHECK-NEXT: vfmv.v.f v16, fa0
6722 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6723 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6724 ; CHECK-NEXT: vmand.mm v16, v24, v16
6725 ; CHECK-NEXT: vmv1r.v v0, v16
6726 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
6727 ; CHECK-NEXT: vmv1r.v v0, v16
6729 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6730 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6731 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
6732 ret <vscale x 16 x i1> %1
6735 define <vscale x 16 x i1> @fcmp_ole_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
6736 ; CHECK-LABEL: fcmp_ole_vv_nxv16f32:
6738 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6739 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
6740 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
6741 ; CHECK-NEXT: vmand.mm v24, v25, v24
6742 ; CHECK-NEXT: vmv1r.v v0, v24
6743 ; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t
6744 ; CHECK-NEXT: vmv1r.v v0, v24
6746 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
6747 ret <vscale x 16 x i1> %1
6750 define <vscale x 16 x i1> @fcmp_ole_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6751 ; CHECK-LABEL: fcmp_ole_vf_nxv16f32:
6753 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6754 ; CHECK-NEXT: vfmv.v.f v16, fa0
6755 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6756 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6757 ; CHECK-NEXT: vmand.mm v16, v16, v24
6758 ; CHECK-NEXT: vmv1r.v v0, v16
6759 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
6760 ; CHECK-NEXT: vmv1r.v v0, v16
6762 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6763 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6764 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
6765 ret <vscale x 16 x i1> %1
6768 define <vscale x 16 x i1> @fcmp_ole_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6769 ; CHECK-LABEL: fcmp_ole_fv_nxv16f32:
6771 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6772 ; CHECK-NEXT: vfmv.v.f v16, fa0
6773 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6774 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6775 ; CHECK-NEXT: vmand.mm v16, v24, v16
6776 ; CHECK-NEXT: vmv1r.v v0, v16
6777 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
6778 ; CHECK-NEXT: vmv1r.v v0, v16
6780 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6781 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6782 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
6783 ret <vscale x 16 x i1> %1
6786 define <vscale x 16 x i1> @fcmp_one_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
6787 ; CHECK-LABEL: fcmp_one_vv_nxv16f32:
6789 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6790 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
6791 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
6792 ; CHECK-NEXT: vmand.mm v24, v25, v24
6793 ; CHECK-NEXT: vmv1r.v v25, v24
6794 ; CHECK-NEXT: vmv1r.v v0, v24
6795 ; CHECK-NEXT: vmflt.vv v25, v8, v16, v0.t
6796 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
6797 ; CHECK-NEXT: vmor.mm v0, v24, v25
6799 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
6800 ret <vscale x 16 x i1> %1
6803 define <vscale x 16 x i1> @fcmp_one_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6804 ; CHECK-LABEL: fcmp_one_vf_nxv16f32:
6806 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6807 ; CHECK-NEXT: vfmv.v.f v16, fa0
6808 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6809 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6810 ; CHECK-NEXT: vmand.mm v16, v16, v24
6811 ; CHECK-NEXT: vmv1r.v v17, v16
6812 ; CHECK-NEXT: vmv1r.v v0, v16
6813 ; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t
6814 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
6815 ; CHECK-NEXT: vmor.mm v0, v16, v17
6817 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6818 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6819 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
6820 ret <vscale x 16 x i1> %1
6823 define <vscale x 16 x i1> @fcmp_one_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6824 ; CHECK-LABEL: fcmp_one_fv_nxv16f32:
6826 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6827 ; CHECK-NEXT: vfmv.v.f v16, fa0
6828 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6829 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6830 ; CHECK-NEXT: vmand.mm v16, v24, v16
6831 ; CHECK-NEXT: vmv1r.v v17, v16
6832 ; CHECK-NEXT: vmv1r.v v0, v16
6833 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t
6834 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
6835 ; CHECK-NEXT: vmor.mm v0, v16, v17
6837 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6838 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6839 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
6840 ret <vscale x 16 x i1> %1
6843 define <vscale x 16 x i1> @fcmp_ord_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
6844 ; CHECK-LABEL: fcmp_ord_vv_nxv16f32:
6846 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
6847 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
6848 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6849 ; CHECK-NEXT: vmand.mm v0, v16, v24
6851 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
6852 ret <vscale x 16 x i1> %1
6855 define <vscale x 16 x i1> @fcmp_ord_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6856 ; CHECK-LABEL: fcmp_ord_vf_nxv16f32:
6858 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
6859 ; CHECK-NEXT: vfmv.v.f v16, fa0
6860 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6861 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6862 ; CHECK-NEXT: vmand.mm v0, v16, v24
6864 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6865 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6866 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
6867 ret <vscale x 16 x i1> %1
6870 define <vscale x 16 x i1> @fcmp_ord_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6871 ; CHECK-LABEL: fcmp_ord_fv_nxv16f32:
6873 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
6874 ; CHECK-NEXT: vfmv.v.f v16, fa0
6875 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6876 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6877 ; CHECK-NEXT: vmand.mm v0, v24, v16
6879 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6880 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6881 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
6882 ret <vscale x 16 x i1> %1
6885 define <vscale x 16 x i1> @fcmp_ueq_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
6886 ; CHECK-LABEL: fcmp_ueq_vv_nxv16f32:
6888 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6889 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
6890 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
6891 ; CHECK-NEXT: vmand.mm v24, v25, v24
6892 ; CHECK-NEXT: vmv1r.v v25, v24
6893 ; CHECK-NEXT: vmv1r.v v0, v24
6894 ; CHECK-NEXT: vmflt.vv v25, v8, v16, v0.t
6895 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
6896 ; CHECK-NEXT: vmnor.mm v0, v24, v25
6898 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6899 ret <vscale x 16 x i1> %1
6902 define <vscale x 16 x i1> @fcmp_ueq_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6903 ; CHECK-LABEL: fcmp_ueq_vf_nxv16f32:
6905 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6906 ; CHECK-NEXT: vfmv.v.f v16, fa0
6907 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6908 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6909 ; CHECK-NEXT: vmand.mm v16, v16, v24
6910 ; CHECK-NEXT: vmv1r.v v17, v16
6911 ; CHECK-NEXT: vmv1r.v v0, v16
6912 ; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t
6913 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
6914 ; CHECK-NEXT: vmnor.mm v0, v16, v17
6916 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6917 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6918 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6919 ret <vscale x 16 x i1> %1
6922 define <vscale x 16 x i1> @fcmp_ueq_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6923 ; CHECK-LABEL: fcmp_ueq_fv_nxv16f32:
6925 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6926 ; CHECK-NEXT: vfmv.v.f v16, fa0
6927 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6928 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6929 ; CHECK-NEXT: vmand.mm v16, v24, v16
6930 ; CHECK-NEXT: vmv1r.v v17, v16
6931 ; CHECK-NEXT: vmv1r.v v0, v16
6932 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t
6933 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
6934 ; CHECK-NEXT: vmnor.mm v0, v16, v17
6936 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6937 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6938 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
6939 ret <vscale x 16 x i1> %1
6942 define <vscale x 16 x i1> @fcmp_ugt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
6943 ; CHECK-LABEL: fcmp_ugt_vv_nxv16f32:
6945 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6946 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
6947 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
6948 ; CHECK-NEXT: vmand.mm v24, v25, v24
6949 ; CHECK-NEXT: vmv1r.v v0, v24
6950 ; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t
6951 ; CHECK-NEXT: vmnot.m v0, v24
6953 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6954 ret <vscale x 16 x i1> %1
6957 define <vscale x 16 x i1> @fcmp_ugt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6958 ; CHECK-LABEL: fcmp_ugt_vf_nxv16f32:
6960 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6961 ; CHECK-NEXT: vfmv.v.f v16, fa0
6962 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6963 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6964 ; CHECK-NEXT: vmand.mm v16, v16, v24
6965 ; CHECK-NEXT: vmv1r.v v0, v16
6966 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
6967 ; CHECK-NEXT: vmnot.m v0, v16
6969 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6970 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6971 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6972 ret <vscale x 16 x i1> %1
6975 define <vscale x 16 x i1> @fcmp_ugt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
6976 ; CHECK-LABEL: fcmp_ugt_fv_nxv16f32:
6978 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6979 ; CHECK-NEXT: vfmv.v.f v16, fa0
6980 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
6981 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
6982 ; CHECK-NEXT: vmand.mm v16, v24, v16
6983 ; CHECK-NEXT: vmv1r.v v0, v16
6984 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
6985 ; CHECK-NEXT: vmnot.m v0, v16
6987 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
6988 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
6989 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
6990 ret <vscale x 16 x i1> %1
6993 define <vscale x 16 x i1> @fcmp_uge_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
6994 ; CHECK-LABEL: fcmp_uge_vv_nxv16f32:
6996 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
6997 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
6998 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
6999 ; CHECK-NEXT: vmand.mm v24, v25, v24
7000 ; CHECK-NEXT: vmv1r.v v0, v24
7001 ; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t
7002 ; CHECK-NEXT: vmnot.m v0, v24
7004 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
7005 ret <vscale x 16 x i1> %1
7008 define <vscale x 16 x i1> @fcmp_uge_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
7009 ; CHECK-LABEL: fcmp_uge_vf_nxv16f32:
7011 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
7012 ; CHECK-NEXT: vfmv.v.f v16, fa0
7013 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
7014 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
7015 ; CHECK-NEXT: vmand.mm v16, v16, v24
7016 ; CHECK-NEXT: vmv1r.v v0, v16
7017 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
7018 ; CHECK-NEXT: vmnot.m v0, v16
7020 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
7021 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
7022 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
7023 ret <vscale x 16 x i1> %1
7026 define <vscale x 16 x i1> @fcmp_uge_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
7027 ; CHECK-LABEL: fcmp_uge_fv_nxv16f32:
7029 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
7030 ; CHECK-NEXT: vfmv.v.f v16, fa0
7031 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
7032 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
7033 ; CHECK-NEXT: vmand.mm v16, v24, v16
7034 ; CHECK-NEXT: vmv1r.v v0, v16
7035 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
7036 ; CHECK-NEXT: vmnot.m v0, v16
7038 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
7039 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
7040 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
7041 ret <vscale x 16 x i1> %1
7044 define <vscale x 16 x i1> @fcmp_ult_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
7045 ; CHECK-LABEL: fcmp_ult_vv_nxv16f32:
7047 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
7048 ; CHECK-NEXT: vmfeq.vv v24, v8, v8
7049 ; CHECK-NEXT: vmfeq.vv v25, v16, v16
7050 ; CHECK-NEXT: vmand.mm v24, v25, v24
7051 ; CHECK-NEXT: vmv1r.v v0, v24
7052 ; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t
7053 ; CHECK-NEXT: vmnot.m v0, v24
7055 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
7056 ret <vscale x 16 x i1> %1
7059 define <vscale x 16 x i1> @fcmp_ult_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
7060 ; CHECK-LABEL: fcmp_ult_vf_nxv16f32:
7062 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
7063 ; CHECK-NEXT: vfmv.v.f v16, fa0
7064 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
7065 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
7066 ; CHECK-NEXT: vmand.mm v16, v24, v16
7067 ; CHECK-NEXT: vmv1r.v v0, v16
7068 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
7069 ; CHECK-NEXT: vmnot.m v0, v16
7071 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
7072 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
7073 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
7074 ret <vscale x 16 x i1> %1
7077 define <vscale x 16 x i1> @fcmp_ult_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
7078 ; CHECK-LABEL: fcmp_ult_fv_nxv16f32:
7080 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
7081 ; CHECK-NEXT: vfmv.v.f v16, fa0
7082 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
7083 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
7084 ; CHECK-NEXT: vmand.mm v16, v16, v24
7085 ; CHECK-NEXT: vmv1r.v v0, v16
7086 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
7087 ; CHECK-NEXT: vmnot.m v0, v16
7089 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
7090 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
7091 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
7092 ret <vscale x 16 x i1> %1
7095 define <vscale x 16 x i1> @fcmp_ule_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
7096 ; CHECK-LABEL: fcmp_ule_vv_nxv16f32:
7098 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
7099 ; CHECK-NEXT: vmfeq.vv v24, v8, v8
7100 ; CHECK-NEXT: vmfeq.vv v25, v16, v16
7101 ; CHECK-NEXT: vmand.mm v24, v25, v24
7102 ; CHECK-NEXT: vmv1r.v v0, v24
7103 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
7104 ; CHECK-NEXT: vmnot.m v0, v24
7106 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
7107 ret <vscale x 16 x i1> %1
7110 define <vscale x 16 x i1> @fcmp_ule_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
7111 ; CHECK-LABEL: fcmp_ule_vf_nxv16f32:
7113 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
7114 ; CHECK-NEXT: vfmv.v.f v16, fa0
7115 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
7116 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
7117 ; CHECK-NEXT: vmand.mm v16, v24, v16
7118 ; CHECK-NEXT: vmv1r.v v0, v16
7119 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
7120 ; CHECK-NEXT: vmnot.m v0, v16
7122 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
7123 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
7124 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
7125 ret <vscale x 16 x i1> %1
7128 define <vscale x 16 x i1> @fcmp_ule_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
7129 ; CHECK-LABEL: fcmp_ule_fv_nxv16f32:
7131 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu
7132 ; CHECK-NEXT: vfmv.v.f v16, fa0
7133 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
7134 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
7135 ; CHECK-NEXT: vmand.mm v16, v16, v24
7136 ; CHECK-NEXT: vmv1r.v v0, v16
7137 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
7138 ; CHECK-NEXT: vmnot.m v0, v16
7140 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
7141 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
7142 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
7143 ret <vscale x 16 x i1> %1
7146 define <vscale x 16 x i1> @fcmp_une_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
7147 ; CHECK-LABEL: fcmp_une_vv_nxv16f32:
7149 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
7150 ; CHECK-NEXT: vmfne.vv v0, v8, v16
7152 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
7153 ret <vscale x 16 x i1> %1
7156 define <vscale x 16 x i1> @fcmp_une_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
7157 ; CHECK-LABEL: fcmp_une_vf_nxv16f32:
7159 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
7160 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
7162 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
7163 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
7164 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
7165 ret <vscale x 16 x i1> %1
7168 define <vscale x 16 x i1> @fcmp_une_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
7169 ; CHECK-LABEL: fcmp_une_fv_nxv16f32:
7171 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
7172 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
7174 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
7175 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
7176 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
7177 ret <vscale x 16 x i1> %1
7180 define <vscale x 16 x i1> @fcmp_uno_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp {
7181 ; CHECK-LABEL: fcmp_uno_vv_nxv16f32:
7183 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
7184 ; CHECK-NEXT: vmfne.vv v24, v16, v16
7185 ; CHECK-NEXT: vmfne.vv v16, v8, v8
7186 ; CHECK-NEXT: vmor.mm v0, v16, v24
7188 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
7189 ret <vscale x 16 x i1> %1
7192 define <vscale x 16 x i1> @fcmp_uno_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
7193 ; CHECK-LABEL: fcmp_uno_vf_nxv16f32:
7195 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
7196 ; CHECK-NEXT: vfmv.v.f v16, fa0
7197 ; CHECK-NEXT: vmfne.vf v24, v16, fa0
7198 ; CHECK-NEXT: vmfne.vv v16, v8, v8
7199 ; CHECK-NEXT: vmor.mm v0, v16, v24
7201 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
7202 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
7203 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
7204 ret <vscale x 16 x i1> %1
7207 define <vscale x 16 x i1> @fcmp_uno_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp {
7208 ; CHECK-LABEL: fcmp_uno_fv_nxv16f32:
7210 ; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma
7211 ; CHECK-NEXT: vfmv.v.f v16, fa0
7212 ; CHECK-NEXT: vmfne.vf v24, v16, fa0
7213 ; CHECK-NEXT: vmfne.vv v16, v8, v8
7214 ; CHECK-NEXT: vmor.mm v0, v24, v16
7216 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0
7217 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer
7218 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmp.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
7219 ret <vscale x 16 x i1> %1
7222 declare <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double>, <vscale x 1 x double>, metadata, metadata)
7223 define <vscale x 1 x i1> @fcmp_oeq_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7224 ; CHECK-LABEL: fcmp_oeq_vv_nxv1f64:
7226 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
7227 ; CHECK-NEXT: vmfeq.vv v0, v8, v9
7229 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
7230 ret <vscale x 1 x i1> %1
7233 define <vscale x 1 x i1> @fcmp_oeq_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7234 ; CHECK-LABEL: fcmp_oeq_vf_nxv1f64:
7236 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
7237 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
7239 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7240 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7241 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
7242 ret <vscale x 1 x i1> %1
7245 define <vscale x 1 x i1> @fcmp_oeq_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7246 ; CHECK-LABEL: fcmp_oeq_fv_nxv1f64:
7248 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
7249 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
7251 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7252 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7253 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
7254 ret <vscale x 1 x i1> %1
7257 define <vscale x 1 x i1> @fcmp_ogt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7258 ; CHECK-LABEL: fcmp_ogt_vv_nxv1f64:
7260 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7261 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7262 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
7263 ; CHECK-NEXT: vmand.mm v0, v11, v10
7264 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
7266 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7267 ret <vscale x 1 x i1> %1
7270 define <vscale x 1 x i1> @fcmp_ogt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7271 ; CHECK-LABEL: fcmp_ogt_vf_nxv1f64:
7273 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7274 ; CHECK-NEXT: vfmv.v.f v9, fa0
7275 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7276 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7277 ; CHECK-NEXT: vmand.mm v0, v9, v10
7278 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
7280 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7281 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7282 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7283 ret <vscale x 1 x i1> %1
7286 define <vscale x 1 x i1> @fcmp_ogt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7287 ; CHECK-LABEL: fcmp_ogt_fv_nxv1f64:
7289 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7290 ; CHECK-NEXT: vfmv.v.f v9, fa0
7291 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7292 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7293 ; CHECK-NEXT: vmand.mm v0, v10, v9
7294 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
7296 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7297 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7298 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7299 ret <vscale x 1 x i1> %1
7302 define <vscale x 1 x i1> @fcmp_oge_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7303 ; CHECK-LABEL: fcmp_oge_vv_nxv1f64:
7305 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7306 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7307 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
7308 ; CHECK-NEXT: vmand.mm v0, v11, v10
7309 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
7311 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
7312 ret <vscale x 1 x i1> %1
7315 define <vscale x 1 x i1> @fcmp_oge_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7316 ; CHECK-LABEL: fcmp_oge_vf_nxv1f64:
7318 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7319 ; CHECK-NEXT: vfmv.v.f v9, fa0
7320 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7321 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7322 ; CHECK-NEXT: vmand.mm v0, v9, v10
7323 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
7325 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7326 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7327 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
7328 ret <vscale x 1 x i1> %1
7331 define <vscale x 1 x i1> @fcmp_oge_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7332 ; CHECK-LABEL: fcmp_oge_fv_nxv1f64:
7334 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7335 ; CHECK-NEXT: vfmv.v.f v9, fa0
7336 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7337 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7338 ; CHECK-NEXT: vmand.mm v0, v10, v9
7339 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
7341 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7342 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7343 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
7344 ret <vscale x 1 x i1> %1
7347 define <vscale x 1 x i1> @fcmp_olt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7348 ; CHECK-LABEL: fcmp_olt_vv_nxv1f64:
7350 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7351 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
7352 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
7353 ; CHECK-NEXT: vmand.mm v0, v11, v10
7354 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
7356 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
7357 ret <vscale x 1 x i1> %1
7360 define <vscale x 1 x i1> @fcmp_olt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7361 ; CHECK-LABEL: fcmp_olt_vf_nxv1f64:
7363 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7364 ; CHECK-NEXT: vfmv.v.f v9, fa0
7365 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7366 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7367 ; CHECK-NEXT: vmand.mm v0, v10, v9
7368 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
7370 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7371 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7372 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
7373 ret <vscale x 1 x i1> %1
7376 define <vscale x 1 x i1> @fcmp_olt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7377 ; CHECK-LABEL: fcmp_olt_fv_nxv1f64:
7379 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7380 ; CHECK-NEXT: vfmv.v.f v9, fa0
7381 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7382 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7383 ; CHECK-NEXT: vmand.mm v0, v9, v10
7384 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
7386 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7387 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7388 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
7389 ret <vscale x 1 x i1> %1
7392 define <vscale x 1 x i1> @fcmp_ole_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7393 ; CHECK-LABEL: fcmp_ole_vv_nxv1f64:
7395 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7396 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
7397 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
7398 ; CHECK-NEXT: vmand.mm v0, v11, v10
7399 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
7401 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
7402 ret <vscale x 1 x i1> %1
7405 define <vscale x 1 x i1> @fcmp_ole_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7406 ; CHECK-LABEL: fcmp_ole_vf_nxv1f64:
7408 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7409 ; CHECK-NEXT: vfmv.v.f v9, fa0
7410 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7411 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7412 ; CHECK-NEXT: vmand.mm v0, v10, v9
7413 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
7415 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7416 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7417 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
7418 ret <vscale x 1 x i1> %1
7421 define <vscale x 1 x i1> @fcmp_ole_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7422 ; CHECK-LABEL: fcmp_ole_fv_nxv1f64:
7424 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7425 ; CHECK-NEXT: vfmv.v.f v9, fa0
7426 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7427 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7428 ; CHECK-NEXT: vmand.mm v0, v9, v10
7429 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
7431 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7432 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7433 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
7434 ret <vscale x 1 x i1> %1
7437 define <vscale x 1 x i1> @fcmp_one_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7438 ; CHECK-LABEL: fcmp_one_vv_nxv1f64:
7440 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7441 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
7442 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
7443 ; CHECK-NEXT: vmand.mm v0, v11, v10
7444 ; CHECK-NEXT: vmv.v.v v10, v0
7445 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
7446 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
7447 ; CHECK-NEXT: vmor.mm v0, v0, v10
7449 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
7450 ret <vscale x 1 x i1> %1
7453 define <vscale x 1 x i1> @fcmp_one_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7454 ; CHECK-LABEL: fcmp_one_vf_nxv1f64:
7456 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7457 ; CHECK-NEXT: vfmv.v.f v9, fa0
7458 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7459 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7460 ; CHECK-NEXT: vmand.mm v0, v10, v9
7461 ; CHECK-NEXT: vmv.v.v v9, v0
7462 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
7463 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
7464 ; CHECK-NEXT: vmor.mm v0, v0, v9
7466 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7467 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7468 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
7469 ret <vscale x 1 x i1> %1
7472 define <vscale x 1 x i1> @fcmp_one_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7473 ; CHECK-LABEL: fcmp_one_fv_nxv1f64:
7475 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7476 ; CHECK-NEXT: vfmv.v.f v9, fa0
7477 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7478 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7479 ; CHECK-NEXT: vmand.mm v0, v9, v10
7480 ; CHECK-NEXT: vmv.v.v v9, v0
7481 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
7482 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
7483 ; CHECK-NEXT: vmor.mm v0, v0, v9
7485 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7486 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7487 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
7488 ret <vscale x 1 x i1> %1
7491 define <vscale x 1 x i1> @fcmp_ord_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7492 ; CHECK-LABEL: fcmp_ord_vv_nxv1f64:
7494 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
7495 ; CHECK-NEXT: vmfeq.vv v9, v9, v9
7496 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
7497 ; CHECK-NEXT: vmand.mm v0, v8, v9
7499 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
7500 ret <vscale x 1 x i1> %1
7503 define <vscale x 1 x i1> @fcmp_ord_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7504 ; CHECK-LABEL: fcmp_ord_vf_nxv1f64:
7506 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
7507 ; CHECK-NEXT: vfmv.v.f v9, fa0
7508 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7509 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
7510 ; CHECK-NEXT: vmand.mm v0, v8, v9
7512 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7513 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7514 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
7515 ret <vscale x 1 x i1> %1
7518 define <vscale x 1 x i1> @fcmp_ord_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7519 ; CHECK-LABEL: fcmp_ord_fv_nxv1f64:
7521 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
7522 ; CHECK-NEXT: vfmv.v.f v9, fa0
7523 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7524 ; CHECK-NEXT: vmfeq.vv v8, v8, v8
7525 ; CHECK-NEXT: vmand.mm v0, v9, v8
7527 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7528 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7529 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
7530 ret <vscale x 1 x i1> %1
7533 define <vscale x 1 x i1> @fcmp_ueq_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7534 ; CHECK-LABEL: fcmp_ueq_vv_nxv1f64:
7536 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7537 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
7538 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
7539 ; CHECK-NEXT: vmand.mm v0, v11, v10
7540 ; CHECK-NEXT: vmv.v.v v10, v0
7541 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
7542 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
7543 ; CHECK-NEXT: vmnor.mm v0, v0, v10
7545 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7546 ret <vscale x 1 x i1> %1
7549 define <vscale x 1 x i1> @fcmp_ueq_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7550 ; CHECK-LABEL: fcmp_ueq_vf_nxv1f64:
7552 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7553 ; CHECK-NEXT: vfmv.v.f v9, fa0
7554 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7555 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7556 ; CHECK-NEXT: vmand.mm v0, v10, v9
7557 ; CHECK-NEXT: vmv.v.v v9, v0
7558 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
7559 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
7560 ; CHECK-NEXT: vmnor.mm v0, v0, v9
7562 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7563 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7564 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7565 ret <vscale x 1 x i1> %1
7568 define <vscale x 1 x i1> @fcmp_ueq_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7569 ; CHECK-LABEL: fcmp_ueq_fv_nxv1f64:
7571 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7572 ; CHECK-NEXT: vfmv.v.f v9, fa0
7573 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7574 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7575 ; CHECK-NEXT: vmand.mm v0, v9, v10
7576 ; CHECK-NEXT: vmv.v.v v9, v0
7577 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
7578 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
7579 ; CHECK-NEXT: vmnor.mm v0, v0, v9
7581 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7582 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7583 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
7584 ret <vscale x 1 x i1> %1
7587 define <vscale x 1 x i1> @fcmp_ugt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7588 ; CHECK-LABEL: fcmp_ugt_vv_nxv1f64:
7590 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7591 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
7592 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
7593 ; CHECK-NEXT: vmand.mm v0, v11, v10
7594 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
7595 ; CHECK-NEXT: vmnot.m v0, v0
7597 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7598 ret <vscale x 1 x i1> %1
7601 define <vscale x 1 x i1> @fcmp_ugt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7602 ; CHECK-LABEL: fcmp_ugt_vf_nxv1f64:
7604 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7605 ; CHECK-NEXT: vfmv.v.f v9, fa0
7606 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7607 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7608 ; CHECK-NEXT: vmand.mm v0, v10, v9
7609 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
7610 ; CHECK-NEXT: vmnot.m v0, v0
7612 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7613 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7614 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7615 ret <vscale x 1 x i1> %1
7618 define <vscale x 1 x i1> @fcmp_ugt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7619 ; CHECK-LABEL: fcmp_ugt_fv_nxv1f64:
7621 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7622 ; CHECK-NEXT: vfmv.v.f v9, fa0
7623 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7624 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7625 ; CHECK-NEXT: vmand.mm v0, v9, v10
7626 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
7627 ; CHECK-NEXT: vmnot.m v0, v0
7629 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7630 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7631 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
7632 ret <vscale x 1 x i1> %1
7635 define <vscale x 1 x i1> @fcmp_uge_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7636 ; CHECK-LABEL: fcmp_uge_vv_nxv1f64:
7638 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7639 ; CHECK-NEXT: vmfeq.vv v10, v9, v9
7640 ; CHECK-NEXT: vmfeq.vv v11, v8, v8
7641 ; CHECK-NEXT: vmand.mm v0, v11, v10
7642 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
7643 ; CHECK-NEXT: vmnot.m v0, v0
7645 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
7646 ret <vscale x 1 x i1> %1
7649 define <vscale x 1 x i1> @fcmp_uge_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7650 ; CHECK-LABEL: fcmp_uge_vf_nxv1f64:
7652 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7653 ; CHECK-NEXT: vfmv.v.f v9, fa0
7654 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7655 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7656 ; CHECK-NEXT: vmand.mm v0, v10, v9
7657 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
7658 ; CHECK-NEXT: vmnot.m v0, v0
7660 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7661 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7662 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
7663 ret <vscale x 1 x i1> %1
7666 define <vscale x 1 x i1> @fcmp_uge_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7667 ; CHECK-LABEL: fcmp_uge_fv_nxv1f64:
7669 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7670 ; CHECK-NEXT: vfmv.v.f v9, fa0
7671 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7672 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7673 ; CHECK-NEXT: vmand.mm v0, v9, v10
7674 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
7675 ; CHECK-NEXT: vmnot.m v0, v0
7677 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7678 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7679 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
7680 ret <vscale x 1 x i1> %1
7683 define <vscale x 1 x i1> @fcmp_ult_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7684 ; CHECK-LABEL: fcmp_ult_vv_nxv1f64:
7686 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7687 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7688 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
7689 ; CHECK-NEXT: vmand.mm v0, v11, v10
7690 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
7691 ; CHECK-NEXT: vmnot.m v0, v0
7693 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
7694 ret <vscale x 1 x i1> %1
7697 define <vscale x 1 x i1> @fcmp_ult_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7698 ; CHECK-LABEL: fcmp_ult_vf_nxv1f64:
7700 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7701 ; CHECK-NEXT: vfmv.v.f v9, fa0
7702 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7703 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7704 ; CHECK-NEXT: vmand.mm v0, v9, v10
7705 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
7706 ; CHECK-NEXT: vmnot.m v0, v0
7708 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7709 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7710 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
7711 ret <vscale x 1 x i1> %1
7714 define <vscale x 1 x i1> @fcmp_ult_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7715 ; CHECK-LABEL: fcmp_ult_fv_nxv1f64:
7717 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7718 ; CHECK-NEXT: vfmv.v.f v9, fa0
7719 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7720 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7721 ; CHECK-NEXT: vmand.mm v0, v10, v9
7722 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
7723 ; CHECK-NEXT: vmnot.m v0, v0
7725 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7726 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7727 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
7728 ret <vscale x 1 x i1> %1
7731 define <vscale x 1 x i1> @fcmp_ule_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7732 ; CHECK-LABEL: fcmp_ule_vv_nxv1f64:
7734 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7735 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7736 ; CHECK-NEXT: vmfeq.vv v11, v9, v9
7737 ; CHECK-NEXT: vmand.mm v0, v11, v10
7738 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
7739 ; CHECK-NEXT: vmnot.m v0, v0
7741 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
7742 ret <vscale x 1 x i1> %1
7745 define <vscale x 1 x i1> @fcmp_ule_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7746 ; CHECK-LABEL: fcmp_ule_vf_nxv1f64:
7748 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7749 ; CHECK-NEXT: vfmv.v.f v9, fa0
7750 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7751 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7752 ; CHECK-NEXT: vmand.mm v0, v9, v10
7753 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
7754 ; CHECK-NEXT: vmnot.m v0, v0
7756 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7757 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7758 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
7759 ret <vscale x 1 x i1> %1
7762 define <vscale x 1 x i1> @fcmp_ule_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7763 ; CHECK-LABEL: fcmp_ule_fv_nxv1f64:
7765 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu
7766 ; CHECK-NEXT: vfmv.v.f v9, fa0
7767 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0
7768 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7769 ; CHECK-NEXT: vmand.mm v0, v10, v9
7770 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
7771 ; CHECK-NEXT: vmnot.m v0, v0
7773 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7774 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7775 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
7776 ret <vscale x 1 x i1> %1
7779 define <vscale x 1 x i1> @fcmp_une_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7780 ; CHECK-LABEL: fcmp_une_vv_nxv1f64:
7782 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
7783 ; CHECK-NEXT: vmfne.vv v0, v8, v9
7785 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
7786 ret <vscale x 1 x i1> %1
7789 define <vscale x 1 x i1> @fcmp_une_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7790 ; CHECK-LABEL: fcmp_une_vf_nxv1f64:
7792 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
7793 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
7795 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7796 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7797 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
7798 ret <vscale x 1 x i1> %1
7801 define <vscale x 1 x i1> @fcmp_une_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7802 ; CHECK-LABEL: fcmp_une_fv_nxv1f64:
7804 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
7805 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
7807 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7808 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7809 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
7810 ret <vscale x 1 x i1> %1
7813 define <vscale x 1 x i1> @fcmp_uno_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp {
7814 ; CHECK-LABEL: fcmp_uno_vv_nxv1f64:
7816 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
7817 ; CHECK-NEXT: vmfne.vv v9, v9, v9
7818 ; CHECK-NEXT: vmfne.vv v8, v8, v8
7819 ; CHECK-NEXT: vmor.mm v0, v8, v9
7821 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
7822 ret <vscale x 1 x i1> %1
7825 define <vscale x 1 x i1> @fcmp_uno_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7826 ; CHECK-LABEL: fcmp_uno_vf_nxv1f64:
7828 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
7829 ; CHECK-NEXT: vfmv.v.f v9, fa0
7830 ; CHECK-NEXT: vmfne.vf v9, v9, fa0
7831 ; CHECK-NEXT: vmfne.vv v8, v8, v8
7832 ; CHECK-NEXT: vmor.mm v0, v8, v9
7834 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7835 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7836 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
7837 ret <vscale x 1 x i1> %1
7840 define <vscale x 1 x i1> @fcmp_uno_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp {
7841 ; CHECK-LABEL: fcmp_uno_fv_nxv1f64:
7843 ; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma
7844 ; CHECK-NEXT: vfmv.v.f v9, fa0
7845 ; CHECK-NEXT: vmfne.vf v9, v9, fa0
7846 ; CHECK-NEXT: vmfne.vv v8, v8, v8
7847 ; CHECK-NEXT: vmor.mm v0, v9, v8
7849 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0
7850 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
7851 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmp.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
7852 ret <vscale x 1 x i1> %1
7855 declare <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>, metadata, metadata)
7856 define <vscale x 2 x i1> @fcmp_oeq_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
7857 ; CHECK-LABEL: fcmp_oeq_vv_nxv2f64:
7859 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
7860 ; CHECK-NEXT: vmfeq.vv v0, v8, v10
7862 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
7863 ret <vscale x 2 x i1> %1
7866 define <vscale x 2 x i1> @fcmp_oeq_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
7867 ; CHECK-LABEL: fcmp_oeq_vf_nxv2f64:
7869 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
7870 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
7872 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
7873 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
7874 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
7875 ret <vscale x 2 x i1> %1
7878 define <vscale x 2 x i1> @fcmp_oeq_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
7879 ; CHECK-LABEL: fcmp_oeq_fv_nxv2f64:
7881 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
7882 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
7884 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
7885 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
7886 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
7887 ret <vscale x 2 x i1> %1
7890 define <vscale x 2 x i1> @fcmp_ogt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
7891 ; CHECK-LABEL: fcmp_ogt_vv_nxv2f64:
7893 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
7894 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
7895 ; CHECK-NEXT: vmfeq.vv v13, v10, v10
7896 ; CHECK-NEXT: vmand.mm v12, v13, v12
7897 ; CHECK-NEXT: vmv1r.v v0, v12
7898 ; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t
7899 ; CHECK-NEXT: vmv1r.v v0, v12
7901 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7902 ret <vscale x 2 x i1> %1
7905 define <vscale x 2 x i1> @fcmp_ogt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
7906 ; CHECK-LABEL: fcmp_ogt_vf_nxv2f64:
7908 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
7909 ; CHECK-NEXT: vfmv.v.f v10, fa0
7910 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
7911 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7912 ; CHECK-NEXT: vmand.mm v10, v12, v10
7913 ; CHECK-NEXT: vmv1r.v v0, v10
7914 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
7915 ; CHECK-NEXT: vmv1r.v v0, v10
7917 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
7918 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
7919 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7920 ret <vscale x 2 x i1> %1
7923 define <vscale x 2 x i1> @fcmp_ogt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
7924 ; CHECK-LABEL: fcmp_ogt_fv_nxv2f64:
7926 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
7927 ; CHECK-NEXT: vfmv.v.f v10, fa0
7928 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
7929 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7930 ; CHECK-NEXT: vmand.mm v10, v10, v12
7931 ; CHECK-NEXT: vmv1r.v v0, v10
7932 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
7933 ; CHECK-NEXT: vmv1r.v v0, v10
7935 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
7936 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
7937 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
7938 ret <vscale x 2 x i1> %1
7941 define <vscale x 2 x i1> @fcmp_oge_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
7942 ; CHECK-LABEL: fcmp_oge_vv_nxv2f64:
7944 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
7945 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
7946 ; CHECK-NEXT: vmfeq.vv v13, v10, v10
7947 ; CHECK-NEXT: vmand.mm v12, v13, v12
7948 ; CHECK-NEXT: vmv1r.v v0, v12
7949 ; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t
7950 ; CHECK-NEXT: vmv1r.v v0, v12
7952 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
7953 ret <vscale x 2 x i1> %1
7956 define <vscale x 2 x i1> @fcmp_oge_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
7957 ; CHECK-LABEL: fcmp_oge_vf_nxv2f64:
7959 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
7960 ; CHECK-NEXT: vfmv.v.f v10, fa0
7961 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
7962 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7963 ; CHECK-NEXT: vmand.mm v10, v12, v10
7964 ; CHECK-NEXT: vmv1r.v v0, v10
7965 ; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t
7966 ; CHECK-NEXT: vmv1r.v v0, v10
7968 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
7969 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
7970 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
7971 ret <vscale x 2 x i1> %1
7974 define <vscale x 2 x i1> @fcmp_oge_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
7975 ; CHECK-LABEL: fcmp_oge_fv_nxv2f64:
7977 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
7978 ; CHECK-NEXT: vfmv.v.f v10, fa0
7979 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
7980 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
7981 ; CHECK-NEXT: vmand.mm v10, v10, v12
7982 ; CHECK-NEXT: vmv1r.v v0, v10
7983 ; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t
7984 ; CHECK-NEXT: vmv1r.v v0, v10
7986 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
7987 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
7988 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
7989 ret <vscale x 2 x i1> %1
7992 define <vscale x 2 x i1> @fcmp_olt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
7993 ; CHECK-LABEL: fcmp_olt_vv_nxv2f64:
7995 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
7996 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
7997 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
7998 ; CHECK-NEXT: vmand.mm v12, v13, v12
7999 ; CHECK-NEXT: vmv1r.v v0, v12
8000 ; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t
8001 ; CHECK-NEXT: vmv1r.v v0, v12
8003 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
8004 ret <vscale x 2 x i1> %1
8007 define <vscale x 2 x i1> @fcmp_olt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8008 ; CHECK-LABEL: fcmp_olt_vf_nxv2f64:
8010 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8011 ; CHECK-NEXT: vfmv.v.f v10, fa0
8012 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8013 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8014 ; CHECK-NEXT: vmand.mm v10, v10, v12
8015 ; CHECK-NEXT: vmv1r.v v0, v10
8016 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
8017 ; CHECK-NEXT: vmv1r.v v0, v10
8019 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8020 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8021 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
8022 ret <vscale x 2 x i1> %1
8025 define <vscale x 2 x i1> @fcmp_olt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8026 ; CHECK-LABEL: fcmp_olt_fv_nxv2f64:
8028 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8029 ; CHECK-NEXT: vfmv.v.f v10, fa0
8030 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8031 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8032 ; CHECK-NEXT: vmand.mm v10, v12, v10
8033 ; CHECK-NEXT: vmv1r.v v0, v10
8034 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
8035 ; CHECK-NEXT: vmv1r.v v0, v10
8037 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8038 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8039 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
8040 ret <vscale x 2 x i1> %1
8043 define <vscale x 2 x i1> @fcmp_ole_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
8044 ; CHECK-LABEL: fcmp_ole_vv_nxv2f64:
8046 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8047 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
8048 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
8049 ; CHECK-NEXT: vmand.mm v12, v13, v12
8050 ; CHECK-NEXT: vmv1r.v v0, v12
8051 ; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t
8052 ; CHECK-NEXT: vmv1r.v v0, v12
8054 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
8055 ret <vscale x 2 x i1> %1
8058 define <vscale x 2 x i1> @fcmp_ole_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8059 ; CHECK-LABEL: fcmp_ole_vf_nxv2f64:
8061 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8062 ; CHECK-NEXT: vfmv.v.f v10, fa0
8063 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8064 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8065 ; CHECK-NEXT: vmand.mm v10, v10, v12
8066 ; CHECK-NEXT: vmv1r.v v0, v10
8067 ; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t
8068 ; CHECK-NEXT: vmv1r.v v0, v10
8070 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8071 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8072 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
8073 ret <vscale x 2 x i1> %1
8076 define <vscale x 2 x i1> @fcmp_ole_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8077 ; CHECK-LABEL: fcmp_ole_fv_nxv2f64:
8079 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8080 ; CHECK-NEXT: vfmv.v.f v10, fa0
8081 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8082 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8083 ; CHECK-NEXT: vmand.mm v10, v12, v10
8084 ; CHECK-NEXT: vmv1r.v v0, v10
8085 ; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t
8086 ; CHECK-NEXT: vmv1r.v v0, v10
8088 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8089 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8090 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
8091 ret <vscale x 2 x i1> %1
8094 define <vscale x 2 x i1> @fcmp_one_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
8095 ; CHECK-LABEL: fcmp_one_vv_nxv2f64:
8097 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8098 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
8099 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
8100 ; CHECK-NEXT: vmand.mm v12, v13, v12
8101 ; CHECK-NEXT: vmv1r.v v13, v12
8102 ; CHECK-NEXT: vmv1r.v v0, v12
8103 ; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t
8104 ; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t
8105 ; CHECK-NEXT: vmor.mm v0, v12, v13
8107 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
8108 ret <vscale x 2 x i1> %1
8111 define <vscale x 2 x i1> @fcmp_one_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8112 ; CHECK-LABEL: fcmp_one_vf_nxv2f64:
8114 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8115 ; CHECK-NEXT: vfmv.v.f v10, fa0
8116 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8117 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8118 ; CHECK-NEXT: vmand.mm v10, v10, v12
8119 ; CHECK-NEXT: vmv1r.v v11, v10
8120 ; CHECK-NEXT: vmv1r.v v0, v10
8121 ; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t
8122 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
8123 ; CHECK-NEXT: vmor.mm v0, v10, v11
8125 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8126 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8127 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
8128 ret <vscale x 2 x i1> %1
8131 define <vscale x 2 x i1> @fcmp_one_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8132 ; CHECK-LABEL: fcmp_one_fv_nxv2f64:
8134 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8135 ; CHECK-NEXT: vfmv.v.f v10, fa0
8136 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8137 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8138 ; CHECK-NEXT: vmand.mm v10, v12, v10
8139 ; CHECK-NEXT: vmv1r.v v11, v10
8140 ; CHECK-NEXT: vmv1r.v v0, v10
8141 ; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t
8142 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
8143 ; CHECK-NEXT: vmor.mm v0, v10, v11
8145 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8146 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8147 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
8148 ret <vscale x 2 x i1> %1
8151 define <vscale x 2 x i1> @fcmp_ord_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
8152 ; CHECK-LABEL: fcmp_ord_vv_nxv2f64:
8154 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
8155 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
8156 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8157 ; CHECK-NEXT: vmand.mm v0, v10, v12
8159 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
8160 ret <vscale x 2 x i1> %1
8163 define <vscale x 2 x i1> @fcmp_ord_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8164 ; CHECK-LABEL: fcmp_ord_vf_nxv2f64:
8166 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
8167 ; CHECK-NEXT: vfmv.v.f v10, fa0
8168 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8169 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8170 ; CHECK-NEXT: vmand.mm v0, v10, v12
8172 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8173 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8174 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
8175 ret <vscale x 2 x i1> %1
8178 define <vscale x 2 x i1> @fcmp_ord_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8179 ; CHECK-LABEL: fcmp_ord_fv_nxv2f64:
8181 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
8182 ; CHECK-NEXT: vfmv.v.f v10, fa0
8183 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8184 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8185 ; CHECK-NEXT: vmand.mm v0, v12, v10
8187 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8188 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8189 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
8190 ret <vscale x 2 x i1> %1
8193 define <vscale x 2 x i1> @fcmp_ueq_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
8194 ; CHECK-LABEL: fcmp_ueq_vv_nxv2f64:
8196 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8197 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
8198 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
8199 ; CHECK-NEXT: vmand.mm v12, v13, v12
8200 ; CHECK-NEXT: vmv1r.v v13, v12
8201 ; CHECK-NEXT: vmv1r.v v0, v12
8202 ; CHECK-NEXT: vmflt.vv v13, v8, v10, v0.t
8203 ; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t
8204 ; CHECK-NEXT: vmnor.mm v0, v12, v13
8206 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
8207 ret <vscale x 2 x i1> %1
8210 define <vscale x 2 x i1> @fcmp_ueq_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8211 ; CHECK-LABEL: fcmp_ueq_vf_nxv2f64:
8213 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8214 ; CHECK-NEXT: vfmv.v.f v10, fa0
8215 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8216 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8217 ; CHECK-NEXT: vmand.mm v10, v10, v12
8218 ; CHECK-NEXT: vmv1r.v v11, v10
8219 ; CHECK-NEXT: vmv1r.v v0, v10
8220 ; CHECK-NEXT: vmflt.vf v11, v8, fa0, v0.t
8221 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
8222 ; CHECK-NEXT: vmnor.mm v0, v10, v11
8224 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8225 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8226 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
8227 ret <vscale x 2 x i1> %1
8230 define <vscale x 2 x i1> @fcmp_ueq_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8231 ; CHECK-LABEL: fcmp_ueq_fv_nxv2f64:
8233 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8234 ; CHECK-NEXT: vfmv.v.f v10, fa0
8235 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8236 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8237 ; CHECK-NEXT: vmand.mm v10, v12, v10
8238 ; CHECK-NEXT: vmv1r.v v11, v10
8239 ; CHECK-NEXT: vmv1r.v v0, v10
8240 ; CHECK-NEXT: vmfgt.vf v11, v8, fa0, v0.t
8241 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
8242 ; CHECK-NEXT: vmnor.mm v0, v10, v11
8244 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8245 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8246 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
8247 ret <vscale x 2 x i1> %1
8250 define <vscale x 2 x i1> @fcmp_ugt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
8251 ; CHECK-LABEL: fcmp_ugt_vv_nxv2f64:
8253 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8254 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
8255 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
8256 ; CHECK-NEXT: vmand.mm v12, v13, v12
8257 ; CHECK-NEXT: vmv1r.v v0, v12
8258 ; CHECK-NEXT: vmfle.vv v12, v8, v10, v0.t
8259 ; CHECK-NEXT: vmnot.m v0, v12
8261 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
8262 ret <vscale x 2 x i1> %1
8265 define <vscale x 2 x i1> @fcmp_ugt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8266 ; CHECK-LABEL: fcmp_ugt_vf_nxv2f64:
8268 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8269 ; CHECK-NEXT: vfmv.v.f v10, fa0
8270 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8271 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8272 ; CHECK-NEXT: vmand.mm v10, v10, v12
8273 ; CHECK-NEXT: vmv1r.v v0, v10
8274 ; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t
8275 ; CHECK-NEXT: vmnot.m v0, v10
8277 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8278 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8279 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
8280 ret <vscale x 2 x i1> %1
8283 define <vscale x 2 x i1> @fcmp_ugt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8284 ; CHECK-LABEL: fcmp_ugt_fv_nxv2f64:
8286 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8287 ; CHECK-NEXT: vfmv.v.f v10, fa0
8288 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8289 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8290 ; CHECK-NEXT: vmand.mm v10, v12, v10
8291 ; CHECK-NEXT: vmv1r.v v0, v10
8292 ; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t
8293 ; CHECK-NEXT: vmnot.m v0, v10
8295 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8296 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8297 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
8298 ret <vscale x 2 x i1> %1
8301 define <vscale x 2 x i1> @fcmp_uge_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
8302 ; CHECK-LABEL: fcmp_uge_vv_nxv2f64:
8304 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8305 ; CHECK-NEXT: vmfeq.vv v12, v10, v10
8306 ; CHECK-NEXT: vmfeq.vv v13, v8, v8
8307 ; CHECK-NEXT: vmand.mm v12, v13, v12
8308 ; CHECK-NEXT: vmv1r.v v0, v12
8309 ; CHECK-NEXT: vmflt.vv v12, v8, v10, v0.t
8310 ; CHECK-NEXT: vmnot.m v0, v12
8312 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
8313 ret <vscale x 2 x i1> %1
8316 define <vscale x 2 x i1> @fcmp_uge_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8317 ; CHECK-LABEL: fcmp_uge_vf_nxv2f64:
8319 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8320 ; CHECK-NEXT: vfmv.v.f v10, fa0
8321 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8322 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8323 ; CHECK-NEXT: vmand.mm v10, v10, v12
8324 ; CHECK-NEXT: vmv1r.v v0, v10
8325 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
8326 ; CHECK-NEXT: vmnot.m v0, v10
8328 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8329 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8330 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
8331 ret <vscale x 2 x i1> %1
8334 define <vscale x 2 x i1> @fcmp_uge_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8335 ; CHECK-LABEL: fcmp_uge_fv_nxv2f64:
8337 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8338 ; CHECK-NEXT: vfmv.v.f v10, fa0
8339 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8340 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8341 ; CHECK-NEXT: vmand.mm v10, v12, v10
8342 ; CHECK-NEXT: vmv1r.v v0, v10
8343 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
8344 ; CHECK-NEXT: vmnot.m v0, v10
8346 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8347 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8348 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
8349 ret <vscale x 2 x i1> %1
8352 define <vscale x 2 x i1> @fcmp_ult_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
8353 ; CHECK-LABEL: fcmp_ult_vv_nxv2f64:
8355 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8356 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8357 ; CHECK-NEXT: vmfeq.vv v13, v10, v10
8358 ; CHECK-NEXT: vmand.mm v12, v13, v12
8359 ; CHECK-NEXT: vmv1r.v v0, v12
8360 ; CHECK-NEXT: vmfle.vv v12, v10, v8, v0.t
8361 ; CHECK-NEXT: vmnot.m v0, v12
8363 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
8364 ret <vscale x 2 x i1> %1
8367 define <vscale x 2 x i1> @fcmp_ult_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8368 ; CHECK-LABEL: fcmp_ult_vf_nxv2f64:
8370 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8371 ; CHECK-NEXT: vfmv.v.f v10, fa0
8372 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8373 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8374 ; CHECK-NEXT: vmand.mm v10, v12, v10
8375 ; CHECK-NEXT: vmv1r.v v0, v10
8376 ; CHECK-NEXT: vmfge.vf v10, v8, fa0, v0.t
8377 ; CHECK-NEXT: vmnot.m v0, v10
8379 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8380 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8381 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
8382 ret <vscale x 2 x i1> %1
8385 define <vscale x 2 x i1> @fcmp_ult_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8386 ; CHECK-LABEL: fcmp_ult_fv_nxv2f64:
8388 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8389 ; CHECK-NEXT: vfmv.v.f v10, fa0
8390 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8391 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8392 ; CHECK-NEXT: vmand.mm v10, v10, v12
8393 ; CHECK-NEXT: vmv1r.v v0, v10
8394 ; CHECK-NEXT: vmfle.vf v10, v8, fa0, v0.t
8395 ; CHECK-NEXT: vmnot.m v0, v10
8397 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8398 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8399 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
8400 ret <vscale x 2 x i1> %1
8403 define <vscale x 2 x i1> @fcmp_ule_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
8404 ; CHECK-LABEL: fcmp_ule_vv_nxv2f64:
8406 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8407 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8408 ; CHECK-NEXT: vmfeq.vv v13, v10, v10
8409 ; CHECK-NEXT: vmand.mm v12, v13, v12
8410 ; CHECK-NEXT: vmv1r.v v0, v12
8411 ; CHECK-NEXT: vmflt.vv v12, v10, v8, v0.t
8412 ; CHECK-NEXT: vmnot.m v0, v12
8414 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
8415 ret <vscale x 2 x i1> %1
8418 define <vscale x 2 x i1> @fcmp_ule_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8419 ; CHECK-LABEL: fcmp_ule_vf_nxv2f64:
8421 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8422 ; CHECK-NEXT: vfmv.v.f v10, fa0
8423 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8424 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8425 ; CHECK-NEXT: vmand.mm v10, v12, v10
8426 ; CHECK-NEXT: vmv1r.v v0, v10
8427 ; CHECK-NEXT: vmfgt.vf v10, v8, fa0, v0.t
8428 ; CHECK-NEXT: vmnot.m v0, v10
8430 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8431 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8432 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
8433 ret <vscale x 2 x i1> %1
8436 define <vscale x 2 x i1> @fcmp_ule_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8437 ; CHECK-LABEL: fcmp_ule_fv_nxv2f64:
8439 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu
8440 ; CHECK-NEXT: vfmv.v.f v10, fa0
8441 ; CHECK-NEXT: vmfeq.vf v12, v10, fa0
8442 ; CHECK-NEXT: vmfeq.vv v10, v8, v8
8443 ; CHECK-NEXT: vmand.mm v10, v10, v12
8444 ; CHECK-NEXT: vmv1r.v v0, v10
8445 ; CHECK-NEXT: vmflt.vf v10, v8, fa0, v0.t
8446 ; CHECK-NEXT: vmnot.m v0, v10
8448 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8449 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8450 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
8451 ret <vscale x 2 x i1> %1
8454 define <vscale x 2 x i1> @fcmp_une_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
8455 ; CHECK-LABEL: fcmp_une_vv_nxv2f64:
8457 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
8458 ; CHECK-NEXT: vmfne.vv v0, v8, v10
8460 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
8461 ret <vscale x 2 x i1> %1
8464 define <vscale x 2 x i1> @fcmp_une_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8465 ; CHECK-LABEL: fcmp_une_vf_nxv2f64:
8467 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
8468 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
8470 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8471 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8472 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
8473 ret <vscale x 2 x i1> %1
8476 define <vscale x 2 x i1> @fcmp_une_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8477 ; CHECK-LABEL: fcmp_une_fv_nxv2f64:
8479 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
8480 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
8482 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8483 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8484 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
8485 ret <vscale x 2 x i1> %1
8488 define <vscale x 2 x i1> @fcmp_uno_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp {
8489 ; CHECK-LABEL: fcmp_uno_vv_nxv2f64:
8491 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
8492 ; CHECK-NEXT: vmfne.vv v12, v10, v10
8493 ; CHECK-NEXT: vmfne.vv v10, v8, v8
8494 ; CHECK-NEXT: vmor.mm v0, v10, v12
8496 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
8497 ret <vscale x 2 x i1> %1
8500 define <vscale x 2 x i1> @fcmp_uno_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8501 ; CHECK-LABEL: fcmp_uno_vf_nxv2f64:
8503 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
8504 ; CHECK-NEXT: vfmv.v.f v10, fa0
8505 ; CHECK-NEXT: vmfne.vf v12, v10, fa0
8506 ; CHECK-NEXT: vmfne.vv v10, v8, v8
8507 ; CHECK-NEXT: vmor.mm v0, v10, v12
8509 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8510 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8511 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
8512 ret <vscale x 2 x i1> %1
8515 define <vscale x 2 x i1> @fcmp_uno_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp {
8516 ; CHECK-LABEL: fcmp_uno_fv_nxv2f64:
8518 ; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma
8519 ; CHECK-NEXT: vfmv.v.f v10, fa0
8520 ; CHECK-NEXT: vmfne.vf v12, v10, fa0
8521 ; CHECK-NEXT: vmfne.vv v10, v8, v8
8522 ; CHECK-NEXT: vmor.mm v0, v12, v10
8524 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0
8525 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer
8526 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmp.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
8527 ret <vscale x 2 x i1> %1
8530 declare <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double>, <vscale x 4 x double>, metadata, metadata)
8531 define <vscale x 4 x i1> @fcmp_oeq_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
8532 ; CHECK-LABEL: fcmp_oeq_vv_nxv4f64:
8534 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
8535 ; CHECK-NEXT: vmfeq.vv v0, v8, v12
8537 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
8538 ret <vscale x 4 x i1> %1
8541 define <vscale x 4 x i1> @fcmp_oeq_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8542 ; CHECK-LABEL: fcmp_oeq_vf_nxv4f64:
8544 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
8545 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
8547 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8548 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8549 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
8550 ret <vscale x 4 x i1> %1
8553 define <vscale x 4 x i1> @fcmp_oeq_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8554 ; CHECK-LABEL: fcmp_oeq_fv_nxv4f64:
8556 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
8557 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
8559 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8560 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8561 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
8562 ret <vscale x 4 x i1> %1
8565 define <vscale x 4 x i1> @fcmp_ogt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
8566 ; CHECK-LABEL: fcmp_ogt_vv_nxv4f64:
8568 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8569 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
8570 ; CHECK-NEXT: vmfeq.vv v17, v12, v12
8571 ; CHECK-NEXT: vmand.mm v16, v17, v16
8572 ; CHECK-NEXT: vmv1r.v v0, v16
8573 ; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t
8574 ; CHECK-NEXT: vmv1r.v v0, v16
8576 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
8577 ret <vscale x 4 x i1> %1
8580 define <vscale x 4 x i1> @fcmp_ogt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8581 ; CHECK-LABEL: fcmp_ogt_vf_nxv4f64:
8583 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8584 ; CHECK-NEXT: vfmv.v.f v12, fa0
8585 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8586 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8587 ; CHECK-NEXT: vmand.mm v12, v16, v12
8588 ; CHECK-NEXT: vmv1r.v v0, v12
8589 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
8590 ; CHECK-NEXT: vmv1r.v v0, v12
8592 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8593 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8594 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
8595 ret <vscale x 4 x i1> %1
8598 define <vscale x 4 x i1> @fcmp_ogt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8599 ; CHECK-LABEL: fcmp_ogt_fv_nxv4f64:
8601 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8602 ; CHECK-NEXT: vfmv.v.f v12, fa0
8603 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8604 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8605 ; CHECK-NEXT: vmand.mm v12, v12, v16
8606 ; CHECK-NEXT: vmv1r.v v0, v12
8607 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
8608 ; CHECK-NEXT: vmv1r.v v0, v12
8610 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8611 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8612 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
8613 ret <vscale x 4 x i1> %1
8616 define <vscale x 4 x i1> @fcmp_oge_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
8617 ; CHECK-LABEL: fcmp_oge_vv_nxv4f64:
8619 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8620 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
8621 ; CHECK-NEXT: vmfeq.vv v17, v12, v12
8622 ; CHECK-NEXT: vmand.mm v16, v17, v16
8623 ; CHECK-NEXT: vmv1r.v v0, v16
8624 ; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t
8625 ; CHECK-NEXT: vmv1r.v v0, v16
8627 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
8628 ret <vscale x 4 x i1> %1
8631 define <vscale x 4 x i1> @fcmp_oge_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8632 ; CHECK-LABEL: fcmp_oge_vf_nxv4f64:
8634 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8635 ; CHECK-NEXT: vfmv.v.f v12, fa0
8636 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8637 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8638 ; CHECK-NEXT: vmand.mm v12, v16, v12
8639 ; CHECK-NEXT: vmv1r.v v0, v12
8640 ; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t
8641 ; CHECK-NEXT: vmv1r.v v0, v12
8643 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8644 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8645 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
8646 ret <vscale x 4 x i1> %1
8649 define <vscale x 4 x i1> @fcmp_oge_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8650 ; CHECK-LABEL: fcmp_oge_fv_nxv4f64:
8652 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8653 ; CHECK-NEXT: vfmv.v.f v12, fa0
8654 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8655 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8656 ; CHECK-NEXT: vmand.mm v12, v12, v16
8657 ; CHECK-NEXT: vmv1r.v v0, v12
8658 ; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t
8659 ; CHECK-NEXT: vmv1r.v v0, v12
8661 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8662 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8663 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
8664 ret <vscale x 4 x i1> %1
8667 define <vscale x 4 x i1> @fcmp_olt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
8668 ; CHECK-LABEL: fcmp_olt_vv_nxv4f64:
8670 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8671 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
8672 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
8673 ; CHECK-NEXT: vmand.mm v16, v17, v16
8674 ; CHECK-NEXT: vmv1r.v v0, v16
8675 ; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t
8676 ; CHECK-NEXT: vmv1r.v v0, v16
8678 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
8679 ret <vscale x 4 x i1> %1
8682 define <vscale x 4 x i1> @fcmp_olt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8683 ; CHECK-LABEL: fcmp_olt_vf_nxv4f64:
8685 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8686 ; CHECK-NEXT: vfmv.v.f v12, fa0
8687 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8688 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8689 ; CHECK-NEXT: vmand.mm v12, v12, v16
8690 ; CHECK-NEXT: vmv1r.v v0, v12
8691 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
8692 ; CHECK-NEXT: vmv1r.v v0, v12
8694 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8695 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8696 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
8697 ret <vscale x 4 x i1> %1
8700 define <vscale x 4 x i1> @fcmp_olt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8701 ; CHECK-LABEL: fcmp_olt_fv_nxv4f64:
8703 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8704 ; CHECK-NEXT: vfmv.v.f v12, fa0
8705 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8706 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8707 ; CHECK-NEXT: vmand.mm v12, v16, v12
8708 ; CHECK-NEXT: vmv1r.v v0, v12
8709 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
8710 ; CHECK-NEXT: vmv1r.v v0, v12
8712 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8713 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8714 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
8715 ret <vscale x 4 x i1> %1
8718 define <vscale x 4 x i1> @fcmp_ole_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
8719 ; CHECK-LABEL: fcmp_ole_vv_nxv4f64:
8721 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8722 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
8723 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
8724 ; CHECK-NEXT: vmand.mm v16, v17, v16
8725 ; CHECK-NEXT: vmv1r.v v0, v16
8726 ; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t
8727 ; CHECK-NEXT: vmv1r.v v0, v16
8729 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
8730 ret <vscale x 4 x i1> %1
8733 define <vscale x 4 x i1> @fcmp_ole_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8734 ; CHECK-LABEL: fcmp_ole_vf_nxv4f64:
8736 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8737 ; CHECK-NEXT: vfmv.v.f v12, fa0
8738 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8739 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8740 ; CHECK-NEXT: vmand.mm v12, v12, v16
8741 ; CHECK-NEXT: vmv1r.v v0, v12
8742 ; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t
8743 ; CHECK-NEXT: vmv1r.v v0, v12
8745 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8746 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8747 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
8748 ret <vscale x 4 x i1> %1
8751 define <vscale x 4 x i1> @fcmp_ole_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8752 ; CHECK-LABEL: fcmp_ole_fv_nxv4f64:
8754 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8755 ; CHECK-NEXT: vfmv.v.f v12, fa0
8756 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8757 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8758 ; CHECK-NEXT: vmand.mm v12, v16, v12
8759 ; CHECK-NEXT: vmv1r.v v0, v12
8760 ; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t
8761 ; CHECK-NEXT: vmv1r.v v0, v12
8763 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8764 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8765 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
8766 ret <vscale x 4 x i1> %1
8769 define <vscale x 4 x i1> @fcmp_one_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
8770 ; CHECK-LABEL: fcmp_one_vv_nxv4f64:
8772 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8773 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
8774 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
8775 ; CHECK-NEXT: vmand.mm v16, v17, v16
8776 ; CHECK-NEXT: vmv1r.v v17, v16
8777 ; CHECK-NEXT: vmv1r.v v0, v16
8778 ; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t
8779 ; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t
8780 ; CHECK-NEXT: vmor.mm v0, v16, v17
8782 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
8783 ret <vscale x 4 x i1> %1
8786 define <vscale x 4 x i1> @fcmp_one_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8787 ; CHECK-LABEL: fcmp_one_vf_nxv4f64:
8789 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8790 ; CHECK-NEXT: vfmv.v.f v12, fa0
8791 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8792 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8793 ; CHECK-NEXT: vmand.mm v12, v12, v16
8794 ; CHECK-NEXT: vmv1r.v v13, v12
8795 ; CHECK-NEXT: vmv1r.v v0, v12
8796 ; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t
8797 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
8798 ; CHECK-NEXT: vmor.mm v0, v12, v13
8800 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8801 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8802 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
8803 ret <vscale x 4 x i1> %1
8806 define <vscale x 4 x i1> @fcmp_one_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8807 ; CHECK-LABEL: fcmp_one_fv_nxv4f64:
8809 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8810 ; CHECK-NEXT: vfmv.v.f v12, fa0
8811 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8812 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8813 ; CHECK-NEXT: vmand.mm v12, v16, v12
8814 ; CHECK-NEXT: vmv1r.v v13, v12
8815 ; CHECK-NEXT: vmv1r.v v0, v12
8816 ; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t
8817 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
8818 ; CHECK-NEXT: vmor.mm v0, v12, v13
8820 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8821 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8822 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
8823 ret <vscale x 4 x i1> %1
8826 define <vscale x 4 x i1> @fcmp_ord_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
8827 ; CHECK-LABEL: fcmp_ord_vv_nxv4f64:
8829 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
8830 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
8831 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8832 ; CHECK-NEXT: vmand.mm v0, v12, v16
8834 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
8835 ret <vscale x 4 x i1> %1
8838 define <vscale x 4 x i1> @fcmp_ord_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8839 ; CHECK-LABEL: fcmp_ord_vf_nxv4f64:
8841 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
8842 ; CHECK-NEXT: vfmv.v.f v12, fa0
8843 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8844 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8845 ; CHECK-NEXT: vmand.mm v0, v12, v16
8847 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8848 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8849 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
8850 ret <vscale x 4 x i1> %1
8853 define <vscale x 4 x i1> @fcmp_ord_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8854 ; CHECK-LABEL: fcmp_ord_fv_nxv4f64:
8856 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
8857 ; CHECK-NEXT: vfmv.v.f v12, fa0
8858 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8859 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8860 ; CHECK-NEXT: vmand.mm v0, v16, v12
8862 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8863 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8864 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
8865 ret <vscale x 4 x i1> %1
8868 define <vscale x 4 x i1> @fcmp_ueq_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
8869 ; CHECK-LABEL: fcmp_ueq_vv_nxv4f64:
8871 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8872 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
8873 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
8874 ; CHECK-NEXT: vmand.mm v16, v17, v16
8875 ; CHECK-NEXT: vmv1r.v v17, v16
8876 ; CHECK-NEXT: vmv1r.v v0, v16
8877 ; CHECK-NEXT: vmflt.vv v17, v8, v12, v0.t
8878 ; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t
8879 ; CHECK-NEXT: vmnor.mm v0, v16, v17
8881 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
8882 ret <vscale x 4 x i1> %1
8885 define <vscale x 4 x i1> @fcmp_ueq_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8886 ; CHECK-LABEL: fcmp_ueq_vf_nxv4f64:
8888 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8889 ; CHECK-NEXT: vfmv.v.f v12, fa0
8890 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8891 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8892 ; CHECK-NEXT: vmand.mm v12, v12, v16
8893 ; CHECK-NEXT: vmv1r.v v13, v12
8894 ; CHECK-NEXT: vmv1r.v v0, v12
8895 ; CHECK-NEXT: vmflt.vf v13, v8, fa0, v0.t
8896 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
8897 ; CHECK-NEXT: vmnor.mm v0, v12, v13
8899 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8900 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8901 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
8902 ret <vscale x 4 x i1> %1
8905 define <vscale x 4 x i1> @fcmp_ueq_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8906 ; CHECK-LABEL: fcmp_ueq_fv_nxv4f64:
8908 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8909 ; CHECK-NEXT: vfmv.v.f v12, fa0
8910 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8911 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8912 ; CHECK-NEXT: vmand.mm v12, v16, v12
8913 ; CHECK-NEXT: vmv1r.v v13, v12
8914 ; CHECK-NEXT: vmv1r.v v0, v12
8915 ; CHECK-NEXT: vmfgt.vf v13, v8, fa0, v0.t
8916 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
8917 ; CHECK-NEXT: vmnor.mm v0, v12, v13
8919 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8920 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8921 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
8922 ret <vscale x 4 x i1> %1
8925 define <vscale x 4 x i1> @fcmp_ugt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
8926 ; CHECK-LABEL: fcmp_ugt_vv_nxv4f64:
8928 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8929 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
8930 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
8931 ; CHECK-NEXT: vmand.mm v16, v17, v16
8932 ; CHECK-NEXT: vmv1r.v v0, v16
8933 ; CHECK-NEXT: vmfle.vv v16, v8, v12, v0.t
8934 ; CHECK-NEXT: vmnot.m v0, v16
8936 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
8937 ret <vscale x 4 x i1> %1
8940 define <vscale x 4 x i1> @fcmp_ugt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8941 ; CHECK-LABEL: fcmp_ugt_vf_nxv4f64:
8943 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8944 ; CHECK-NEXT: vfmv.v.f v12, fa0
8945 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8946 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8947 ; CHECK-NEXT: vmand.mm v12, v12, v16
8948 ; CHECK-NEXT: vmv1r.v v0, v12
8949 ; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t
8950 ; CHECK-NEXT: vmnot.m v0, v12
8952 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8953 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8954 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
8955 ret <vscale x 4 x i1> %1
8958 define <vscale x 4 x i1> @fcmp_ugt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8959 ; CHECK-LABEL: fcmp_ugt_fv_nxv4f64:
8961 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8962 ; CHECK-NEXT: vfmv.v.f v12, fa0
8963 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8964 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8965 ; CHECK-NEXT: vmand.mm v12, v16, v12
8966 ; CHECK-NEXT: vmv1r.v v0, v12
8967 ; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t
8968 ; CHECK-NEXT: vmnot.m v0, v12
8970 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
8971 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
8972 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
8973 ret <vscale x 4 x i1> %1
8976 define <vscale x 4 x i1> @fcmp_uge_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
8977 ; CHECK-LABEL: fcmp_uge_vv_nxv4f64:
8979 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8980 ; CHECK-NEXT: vmfeq.vv v16, v12, v12
8981 ; CHECK-NEXT: vmfeq.vv v17, v8, v8
8982 ; CHECK-NEXT: vmand.mm v16, v17, v16
8983 ; CHECK-NEXT: vmv1r.v v0, v16
8984 ; CHECK-NEXT: vmflt.vv v16, v8, v12, v0.t
8985 ; CHECK-NEXT: vmnot.m v0, v16
8987 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
8988 ret <vscale x 4 x i1> %1
8991 define <vscale x 4 x i1> @fcmp_uge_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
8992 ; CHECK-LABEL: fcmp_uge_vf_nxv4f64:
8994 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
8995 ; CHECK-NEXT: vfmv.v.f v12, fa0
8996 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
8997 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
8998 ; CHECK-NEXT: vmand.mm v12, v12, v16
8999 ; CHECK-NEXT: vmv1r.v v0, v12
9000 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
9001 ; CHECK-NEXT: vmnot.m v0, v12
9003 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
9004 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
9005 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
9006 ret <vscale x 4 x i1> %1
9009 define <vscale x 4 x i1> @fcmp_uge_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
9010 ; CHECK-LABEL: fcmp_uge_fv_nxv4f64:
9012 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
9013 ; CHECK-NEXT: vfmv.v.f v12, fa0
9014 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
9015 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
9016 ; CHECK-NEXT: vmand.mm v12, v16, v12
9017 ; CHECK-NEXT: vmv1r.v v0, v12
9018 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
9019 ; CHECK-NEXT: vmnot.m v0, v12
9021 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
9022 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
9023 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
9024 ret <vscale x 4 x i1> %1
9027 define <vscale x 4 x i1> @fcmp_ult_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
9028 ; CHECK-LABEL: fcmp_ult_vv_nxv4f64:
9030 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
9031 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9032 ; CHECK-NEXT: vmfeq.vv v17, v12, v12
9033 ; CHECK-NEXT: vmand.mm v16, v17, v16
9034 ; CHECK-NEXT: vmv1r.v v0, v16
9035 ; CHECK-NEXT: vmfle.vv v16, v12, v8, v0.t
9036 ; CHECK-NEXT: vmnot.m v0, v16
9038 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
9039 ret <vscale x 4 x i1> %1
9042 define <vscale x 4 x i1> @fcmp_ult_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
9043 ; CHECK-LABEL: fcmp_ult_vf_nxv4f64:
9045 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
9046 ; CHECK-NEXT: vfmv.v.f v12, fa0
9047 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
9048 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
9049 ; CHECK-NEXT: vmand.mm v12, v16, v12
9050 ; CHECK-NEXT: vmv1r.v v0, v12
9051 ; CHECK-NEXT: vmfge.vf v12, v8, fa0, v0.t
9052 ; CHECK-NEXT: vmnot.m v0, v12
9054 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
9055 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
9056 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
9057 ret <vscale x 4 x i1> %1
9060 define <vscale x 4 x i1> @fcmp_ult_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
9061 ; CHECK-LABEL: fcmp_ult_fv_nxv4f64:
9063 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
9064 ; CHECK-NEXT: vfmv.v.f v12, fa0
9065 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
9066 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
9067 ; CHECK-NEXT: vmand.mm v12, v12, v16
9068 ; CHECK-NEXT: vmv1r.v v0, v12
9069 ; CHECK-NEXT: vmfle.vf v12, v8, fa0, v0.t
9070 ; CHECK-NEXT: vmnot.m v0, v12
9072 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
9073 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
9074 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
9075 ret <vscale x 4 x i1> %1
9078 define <vscale x 4 x i1> @fcmp_ule_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
9079 ; CHECK-LABEL: fcmp_ule_vv_nxv4f64:
9081 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
9082 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9083 ; CHECK-NEXT: vmfeq.vv v17, v12, v12
9084 ; CHECK-NEXT: vmand.mm v16, v17, v16
9085 ; CHECK-NEXT: vmv1r.v v0, v16
9086 ; CHECK-NEXT: vmflt.vv v16, v12, v8, v0.t
9087 ; CHECK-NEXT: vmnot.m v0, v16
9089 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
9090 ret <vscale x 4 x i1> %1
9093 define <vscale x 4 x i1> @fcmp_ule_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
9094 ; CHECK-LABEL: fcmp_ule_vf_nxv4f64:
9096 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
9097 ; CHECK-NEXT: vfmv.v.f v12, fa0
9098 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
9099 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
9100 ; CHECK-NEXT: vmand.mm v12, v16, v12
9101 ; CHECK-NEXT: vmv1r.v v0, v12
9102 ; CHECK-NEXT: vmfgt.vf v12, v8, fa0, v0.t
9103 ; CHECK-NEXT: vmnot.m v0, v12
9105 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
9106 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
9107 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
9108 ret <vscale x 4 x i1> %1
9111 define <vscale x 4 x i1> @fcmp_ule_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
9112 ; CHECK-LABEL: fcmp_ule_fv_nxv4f64:
9114 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu
9115 ; CHECK-NEXT: vfmv.v.f v12, fa0
9116 ; CHECK-NEXT: vmfeq.vf v16, v12, fa0
9117 ; CHECK-NEXT: vmfeq.vv v12, v8, v8
9118 ; CHECK-NEXT: vmand.mm v12, v12, v16
9119 ; CHECK-NEXT: vmv1r.v v0, v12
9120 ; CHECK-NEXT: vmflt.vf v12, v8, fa0, v0.t
9121 ; CHECK-NEXT: vmnot.m v0, v12
9123 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
9124 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
9125 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
9126 ret <vscale x 4 x i1> %1
9129 define <vscale x 4 x i1> @fcmp_une_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
9130 ; CHECK-LABEL: fcmp_une_vv_nxv4f64:
9132 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
9133 ; CHECK-NEXT: vmfne.vv v0, v8, v12
9135 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
9136 ret <vscale x 4 x i1> %1
9139 define <vscale x 4 x i1> @fcmp_une_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
9140 ; CHECK-LABEL: fcmp_une_vf_nxv4f64:
9142 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
9143 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
9145 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
9146 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
9147 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
9148 ret <vscale x 4 x i1> %1
9151 define <vscale x 4 x i1> @fcmp_une_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
9152 ; CHECK-LABEL: fcmp_une_fv_nxv4f64:
9154 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
9155 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
9157 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
9158 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
9159 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
9160 ret <vscale x 4 x i1> %1
9163 define <vscale x 4 x i1> @fcmp_uno_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp {
9164 ; CHECK-LABEL: fcmp_uno_vv_nxv4f64:
9166 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
9167 ; CHECK-NEXT: vmfne.vv v16, v12, v12
9168 ; CHECK-NEXT: vmfne.vv v12, v8, v8
9169 ; CHECK-NEXT: vmor.mm v0, v12, v16
9171 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
9172 ret <vscale x 4 x i1> %1
9175 define <vscale x 4 x i1> @fcmp_uno_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
9176 ; CHECK-LABEL: fcmp_uno_vf_nxv4f64:
9178 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
9179 ; CHECK-NEXT: vfmv.v.f v12, fa0
9180 ; CHECK-NEXT: vmfne.vf v16, v12, fa0
9181 ; CHECK-NEXT: vmfne.vv v12, v8, v8
9182 ; CHECK-NEXT: vmor.mm v0, v12, v16
9184 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
9185 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
9186 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
9187 ret <vscale x 4 x i1> %1
9190 define <vscale x 4 x i1> @fcmp_uno_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp {
9191 ; CHECK-LABEL: fcmp_uno_fv_nxv4f64:
9193 ; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma
9194 ; CHECK-NEXT: vfmv.v.f v12, fa0
9195 ; CHECK-NEXT: vmfne.vf v16, v12, fa0
9196 ; CHECK-NEXT: vmfne.vv v12, v8, v8
9197 ; CHECK-NEXT: vmor.mm v0, v16, v12
9199 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0
9200 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer
9201 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmp.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
9202 ret <vscale x 4 x i1> %1
9205 declare <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double>, <vscale x 8 x double>, metadata, metadata)
9206 define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9207 ; CHECK-LABEL: fcmp_oeq_vv_nxv8f64:
9209 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
9210 ; CHECK-NEXT: vmfeq.vv v0, v8, v16
9212 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp
9213 ret <vscale x 8 x i1> %1
9216 define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9217 ; CHECK-LABEL: fcmp_oeq_vf_nxv8f64:
9219 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
9220 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
9222 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9223 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9224 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp
9225 ret <vscale x 8 x i1> %1
9228 define <vscale x 8 x i1> @fcmp_oeq_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9229 ; CHECK-LABEL: fcmp_oeq_fv_nxv8f64:
9231 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
9232 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0
9234 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9235 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9236 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp
9237 ret <vscale x 8 x i1> %1
9240 define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9241 ; CHECK-LABEL: fcmp_ogt_vv_nxv8f64:
9243 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9244 ; CHECK-NEXT: vmfeq.vv v24, v8, v8
9245 ; CHECK-NEXT: vmfeq.vv v25, v16, v16
9246 ; CHECK-NEXT: vmand.mm v24, v25, v24
9247 ; CHECK-NEXT: vmv1r.v v0, v24
9248 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
9249 ; CHECK-NEXT: vmv1r.v v0, v24
9251 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp
9252 ret <vscale x 8 x i1> %1
9255 define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9256 ; CHECK-LABEL: fcmp_ogt_vf_nxv8f64:
9258 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9259 ; CHECK-NEXT: vfmv.v.f v16, fa0
9260 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9261 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9262 ; CHECK-NEXT: vmand.mm v16, v24, v16
9263 ; CHECK-NEXT: vmv1r.v v0, v16
9264 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
9265 ; CHECK-NEXT: vmv1r.v v0, v16
9267 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9268 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9269 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp
9270 ret <vscale x 8 x i1> %1
9273 define <vscale x 8 x i1> @fcmp_ogt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9274 ; CHECK-LABEL: fcmp_ogt_fv_nxv8f64:
9276 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9277 ; CHECK-NEXT: vfmv.v.f v16, fa0
9278 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9279 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9280 ; CHECK-NEXT: vmand.mm v16, v16, v24
9281 ; CHECK-NEXT: vmv1r.v v0, v16
9282 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
9283 ; CHECK-NEXT: vmv1r.v v0, v16
9285 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9286 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9287 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp
9288 ret <vscale x 8 x i1> %1
9291 define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9292 ; CHECK-LABEL: fcmp_oge_vv_nxv8f64:
9294 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9295 ; CHECK-NEXT: vmfeq.vv v24, v8, v8
9296 ; CHECK-NEXT: vmfeq.vv v25, v16, v16
9297 ; CHECK-NEXT: vmand.mm v24, v25, v24
9298 ; CHECK-NEXT: vmv1r.v v0, v24
9299 ; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t
9300 ; CHECK-NEXT: vmv1r.v v0, v24
9302 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp
9303 ret <vscale x 8 x i1> %1
9306 define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9307 ; CHECK-LABEL: fcmp_oge_vf_nxv8f64:
9309 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9310 ; CHECK-NEXT: vfmv.v.f v16, fa0
9311 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9312 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9313 ; CHECK-NEXT: vmand.mm v16, v24, v16
9314 ; CHECK-NEXT: vmv1r.v v0, v16
9315 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
9316 ; CHECK-NEXT: vmv1r.v v0, v16
9318 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9319 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9320 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp
9321 ret <vscale x 8 x i1> %1
9324 define <vscale x 8 x i1> @fcmp_oge_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9325 ; CHECK-LABEL: fcmp_oge_fv_nxv8f64:
9327 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9328 ; CHECK-NEXT: vfmv.v.f v16, fa0
9329 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9330 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9331 ; CHECK-NEXT: vmand.mm v16, v16, v24
9332 ; CHECK-NEXT: vmv1r.v v0, v16
9333 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
9334 ; CHECK-NEXT: vmv1r.v v0, v16
9336 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9337 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9338 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp
9339 ret <vscale x 8 x i1> %1
9342 define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9343 ; CHECK-LABEL: fcmp_olt_vv_nxv8f64:
9345 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9346 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
9347 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
9348 ; CHECK-NEXT: vmand.mm v24, v25, v24
9349 ; CHECK-NEXT: vmv1r.v v0, v24
9350 ; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t
9351 ; CHECK-NEXT: vmv1r.v v0, v24
9353 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp
9354 ret <vscale x 8 x i1> %1
9357 define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9358 ; CHECK-LABEL: fcmp_olt_vf_nxv8f64:
9360 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9361 ; CHECK-NEXT: vfmv.v.f v16, fa0
9362 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9363 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9364 ; CHECK-NEXT: vmand.mm v16, v16, v24
9365 ; CHECK-NEXT: vmv1r.v v0, v16
9366 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
9367 ; CHECK-NEXT: vmv1r.v v0, v16
9369 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9370 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9371 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp
9372 ret <vscale x 8 x i1> %1
9375 define <vscale x 8 x i1> @fcmp_olt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9376 ; CHECK-LABEL: fcmp_olt_fv_nxv8f64:
9378 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9379 ; CHECK-NEXT: vfmv.v.f v16, fa0
9380 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9381 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9382 ; CHECK-NEXT: vmand.mm v16, v24, v16
9383 ; CHECK-NEXT: vmv1r.v v0, v16
9384 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
9385 ; CHECK-NEXT: vmv1r.v v0, v16
9387 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9388 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9389 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp
9390 ret <vscale x 8 x i1> %1
9393 define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9394 ; CHECK-LABEL: fcmp_ole_vv_nxv8f64:
9396 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9397 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
9398 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
9399 ; CHECK-NEXT: vmand.mm v24, v25, v24
9400 ; CHECK-NEXT: vmv1r.v v0, v24
9401 ; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t
9402 ; CHECK-NEXT: vmv1r.v v0, v24
9404 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp
9405 ret <vscale x 8 x i1> %1
9408 define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9409 ; CHECK-LABEL: fcmp_ole_vf_nxv8f64:
9411 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9412 ; CHECK-NEXT: vfmv.v.f v16, fa0
9413 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9414 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9415 ; CHECK-NEXT: vmand.mm v16, v16, v24
9416 ; CHECK-NEXT: vmv1r.v v0, v16
9417 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
9418 ; CHECK-NEXT: vmv1r.v v0, v16
9420 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9421 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9422 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp
9423 ret <vscale x 8 x i1> %1
9426 define <vscale x 8 x i1> @fcmp_ole_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9427 ; CHECK-LABEL: fcmp_ole_fv_nxv8f64:
9429 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9430 ; CHECK-NEXT: vfmv.v.f v16, fa0
9431 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9432 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9433 ; CHECK-NEXT: vmand.mm v16, v24, v16
9434 ; CHECK-NEXT: vmv1r.v v0, v16
9435 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
9436 ; CHECK-NEXT: vmv1r.v v0, v16
9438 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9439 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9440 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp
9441 ret <vscale x 8 x i1> %1
9444 define <vscale x 8 x i1> @fcmp_one_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9445 ; CHECK-LABEL: fcmp_one_vv_nxv8f64:
9447 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9448 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
9449 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
9450 ; CHECK-NEXT: vmand.mm v24, v25, v24
9451 ; CHECK-NEXT: vmv1r.v v25, v24
9452 ; CHECK-NEXT: vmv1r.v v0, v24
9453 ; CHECK-NEXT: vmflt.vv v25, v8, v16, v0.t
9454 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
9455 ; CHECK-NEXT: vmor.mm v0, v24, v25
9457 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp
9458 ret <vscale x 8 x i1> %1
9461 define <vscale x 8 x i1> @fcmp_one_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9462 ; CHECK-LABEL: fcmp_one_vf_nxv8f64:
9464 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9465 ; CHECK-NEXT: vfmv.v.f v16, fa0
9466 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9467 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9468 ; CHECK-NEXT: vmand.mm v16, v16, v24
9469 ; CHECK-NEXT: vmv1r.v v17, v16
9470 ; CHECK-NEXT: vmv1r.v v0, v16
9471 ; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t
9472 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
9473 ; CHECK-NEXT: vmor.mm v0, v16, v17
9475 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9476 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9477 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp
9478 ret <vscale x 8 x i1> %1
9481 define <vscale x 8 x i1> @fcmp_one_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9482 ; CHECK-LABEL: fcmp_one_fv_nxv8f64:
9484 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9485 ; CHECK-NEXT: vfmv.v.f v16, fa0
9486 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9487 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9488 ; CHECK-NEXT: vmand.mm v16, v24, v16
9489 ; CHECK-NEXT: vmv1r.v v17, v16
9490 ; CHECK-NEXT: vmv1r.v v0, v16
9491 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t
9492 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
9493 ; CHECK-NEXT: vmor.mm v0, v16, v17
9495 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9496 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9497 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp
9498 ret <vscale x 8 x i1> %1
9501 define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9502 ; CHECK-LABEL: fcmp_ord_vv_nxv8f64:
9504 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
9505 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
9506 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9507 ; CHECK-NEXT: vmand.mm v0, v16, v24
9509 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp
9510 ret <vscale x 8 x i1> %1
9513 define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9514 ; CHECK-LABEL: fcmp_ord_vf_nxv8f64:
9516 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
9517 ; CHECK-NEXT: vfmv.v.f v16, fa0
9518 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9519 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9520 ; CHECK-NEXT: vmand.mm v0, v16, v24
9522 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9523 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9524 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp
9525 ret <vscale x 8 x i1> %1
9528 define <vscale x 8 x i1> @fcmp_ord_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9529 ; CHECK-LABEL: fcmp_ord_fv_nxv8f64:
9531 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
9532 ; CHECK-NEXT: vfmv.v.f v16, fa0
9533 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9534 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9535 ; CHECK-NEXT: vmand.mm v0, v24, v16
9537 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9538 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9539 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp
9540 ret <vscale x 8 x i1> %1
9543 define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9544 ; CHECK-LABEL: fcmp_ueq_vv_nxv8f64:
9546 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9547 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
9548 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
9549 ; CHECK-NEXT: vmand.mm v24, v25, v24
9550 ; CHECK-NEXT: vmv1r.v v25, v24
9551 ; CHECK-NEXT: vmv1r.v v0, v24
9552 ; CHECK-NEXT: vmflt.vv v25, v8, v16, v0.t
9553 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
9554 ; CHECK-NEXT: vmnor.mm v0, v24, v25
9556 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp
9557 ret <vscale x 8 x i1> %1
9560 define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9561 ; CHECK-LABEL: fcmp_ueq_vf_nxv8f64:
9563 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9564 ; CHECK-NEXT: vfmv.v.f v16, fa0
9565 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9566 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9567 ; CHECK-NEXT: vmand.mm v16, v16, v24
9568 ; CHECK-NEXT: vmv1r.v v17, v16
9569 ; CHECK-NEXT: vmv1r.v v0, v16
9570 ; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t
9571 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
9572 ; CHECK-NEXT: vmnor.mm v0, v16, v17
9574 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9575 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9576 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp
9577 ret <vscale x 8 x i1> %1
9580 define <vscale x 8 x i1> @fcmp_ueq_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9581 ; CHECK-LABEL: fcmp_ueq_fv_nxv8f64:
9583 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9584 ; CHECK-NEXT: vfmv.v.f v16, fa0
9585 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9586 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9587 ; CHECK-NEXT: vmand.mm v16, v24, v16
9588 ; CHECK-NEXT: vmv1r.v v17, v16
9589 ; CHECK-NEXT: vmv1r.v v0, v16
9590 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t
9591 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
9592 ; CHECK-NEXT: vmnor.mm v0, v16, v17
9594 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9595 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9596 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp
9597 ret <vscale x 8 x i1> %1
9600 define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9601 ; CHECK-LABEL: fcmp_ugt_vv_nxv8f64:
9603 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9604 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
9605 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
9606 ; CHECK-NEXT: vmand.mm v24, v25, v24
9607 ; CHECK-NEXT: vmv1r.v v0, v24
9608 ; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t
9609 ; CHECK-NEXT: vmnot.m v0, v24
9611 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp
9612 ret <vscale x 8 x i1> %1
9615 define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9616 ; CHECK-LABEL: fcmp_ugt_vf_nxv8f64:
9618 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9619 ; CHECK-NEXT: vfmv.v.f v16, fa0
9620 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9621 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9622 ; CHECK-NEXT: vmand.mm v16, v16, v24
9623 ; CHECK-NEXT: vmv1r.v v0, v16
9624 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
9625 ; CHECK-NEXT: vmnot.m v0, v16
9627 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9628 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9629 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp
9630 ret <vscale x 8 x i1> %1
9633 define <vscale x 8 x i1> @fcmp_ugt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9634 ; CHECK-LABEL: fcmp_ugt_fv_nxv8f64:
9636 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9637 ; CHECK-NEXT: vfmv.v.f v16, fa0
9638 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9639 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9640 ; CHECK-NEXT: vmand.mm v16, v24, v16
9641 ; CHECK-NEXT: vmv1r.v v0, v16
9642 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
9643 ; CHECK-NEXT: vmnot.m v0, v16
9645 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9646 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9647 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp
9648 ret <vscale x 8 x i1> %1
9651 define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9652 ; CHECK-LABEL: fcmp_uge_vv_nxv8f64:
9654 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9655 ; CHECK-NEXT: vmfeq.vv v24, v16, v16
9656 ; CHECK-NEXT: vmfeq.vv v25, v8, v8
9657 ; CHECK-NEXT: vmand.mm v24, v25, v24
9658 ; CHECK-NEXT: vmv1r.v v0, v24
9659 ; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t
9660 ; CHECK-NEXT: vmnot.m v0, v24
9662 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp
9663 ret <vscale x 8 x i1> %1
9666 define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9667 ; CHECK-LABEL: fcmp_uge_vf_nxv8f64:
9669 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9670 ; CHECK-NEXT: vfmv.v.f v16, fa0
9671 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9672 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9673 ; CHECK-NEXT: vmand.mm v16, v16, v24
9674 ; CHECK-NEXT: vmv1r.v v0, v16
9675 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
9676 ; CHECK-NEXT: vmnot.m v0, v16
9678 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9679 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9680 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp
9681 ret <vscale x 8 x i1> %1
9684 define <vscale x 8 x i1> @fcmp_uge_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9685 ; CHECK-LABEL: fcmp_uge_fv_nxv8f64:
9687 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9688 ; CHECK-NEXT: vfmv.v.f v16, fa0
9689 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9690 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9691 ; CHECK-NEXT: vmand.mm v16, v24, v16
9692 ; CHECK-NEXT: vmv1r.v v0, v16
9693 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
9694 ; CHECK-NEXT: vmnot.m v0, v16
9696 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9697 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9698 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp
9699 ret <vscale x 8 x i1> %1
9702 define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9703 ; CHECK-LABEL: fcmp_ult_vv_nxv8f64:
9705 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9706 ; CHECK-NEXT: vmfeq.vv v24, v8, v8
9707 ; CHECK-NEXT: vmfeq.vv v25, v16, v16
9708 ; CHECK-NEXT: vmand.mm v24, v25, v24
9709 ; CHECK-NEXT: vmv1r.v v0, v24
9710 ; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t
9711 ; CHECK-NEXT: vmnot.m v0, v24
9713 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp
9714 ret <vscale x 8 x i1> %1
9717 define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9718 ; CHECK-LABEL: fcmp_ult_vf_nxv8f64:
9720 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9721 ; CHECK-NEXT: vfmv.v.f v16, fa0
9722 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9723 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9724 ; CHECK-NEXT: vmand.mm v16, v24, v16
9725 ; CHECK-NEXT: vmv1r.v v0, v16
9726 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
9727 ; CHECK-NEXT: vmnot.m v0, v16
9729 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9730 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9731 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp
9732 ret <vscale x 8 x i1> %1
9735 define <vscale x 8 x i1> @fcmp_ult_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9736 ; CHECK-LABEL: fcmp_ult_fv_nxv8f64:
9738 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9739 ; CHECK-NEXT: vfmv.v.f v16, fa0
9740 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9741 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9742 ; CHECK-NEXT: vmand.mm v16, v16, v24
9743 ; CHECK-NEXT: vmv1r.v v0, v16
9744 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
9745 ; CHECK-NEXT: vmnot.m v0, v16
9747 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9748 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9749 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp
9750 ret <vscale x 8 x i1> %1
9753 define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9754 ; CHECK-LABEL: fcmp_ule_vv_nxv8f64:
9756 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9757 ; CHECK-NEXT: vmfeq.vv v24, v8, v8
9758 ; CHECK-NEXT: vmfeq.vv v25, v16, v16
9759 ; CHECK-NEXT: vmand.mm v24, v25, v24
9760 ; CHECK-NEXT: vmv1r.v v0, v24
9761 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
9762 ; CHECK-NEXT: vmnot.m v0, v24
9764 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp
9765 ret <vscale x 8 x i1> %1
9768 define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9769 ; CHECK-LABEL: fcmp_ule_vf_nxv8f64:
9771 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9772 ; CHECK-NEXT: vfmv.v.f v16, fa0
9773 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9774 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9775 ; CHECK-NEXT: vmand.mm v16, v24, v16
9776 ; CHECK-NEXT: vmv1r.v v0, v16
9777 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
9778 ; CHECK-NEXT: vmnot.m v0, v16
9780 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9781 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9782 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp
9783 ret <vscale x 8 x i1> %1
9786 define <vscale x 8 x i1> @fcmp_ule_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9787 ; CHECK-LABEL: fcmp_ule_fv_nxv8f64:
9789 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu
9790 ; CHECK-NEXT: vfmv.v.f v16, fa0
9791 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0
9792 ; CHECK-NEXT: vmfeq.vv v16, v8, v8
9793 ; CHECK-NEXT: vmand.mm v16, v16, v24
9794 ; CHECK-NEXT: vmv1r.v v0, v16
9795 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
9796 ; CHECK-NEXT: vmnot.m v0, v16
9798 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9799 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9800 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp
9801 ret <vscale x 8 x i1> %1
9804 define <vscale x 8 x i1> @fcmp_une_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9805 ; CHECK-LABEL: fcmp_une_vv_nxv8f64:
9807 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
9808 ; CHECK-NEXT: vmfne.vv v0, v8, v16
9810 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp
9811 ret <vscale x 8 x i1> %1
9814 define <vscale x 8 x i1> @fcmp_une_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9815 ; CHECK-LABEL: fcmp_une_vf_nxv8f64:
9817 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
9818 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
9820 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9821 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9822 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp
9823 ret <vscale x 8 x i1> %1
9826 define <vscale x 8 x i1> @fcmp_une_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9827 ; CHECK-LABEL: fcmp_une_fv_nxv8f64:
9829 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
9830 ; CHECK-NEXT: vmfne.vf v0, v8, fa0
9832 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9833 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9834 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp
9835 ret <vscale x 8 x i1> %1
9838 define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp {
9839 ; CHECK-LABEL: fcmp_uno_vv_nxv8f64:
9841 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
9842 ; CHECK-NEXT: vmfne.vv v24, v16, v16
9843 ; CHECK-NEXT: vmfne.vv v16, v8, v8
9844 ; CHECK-NEXT: vmor.mm v0, v16, v24
9846 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp
9847 ret <vscale x 8 x i1> %1
9850 define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9851 ; CHECK-LABEL: fcmp_uno_vf_nxv8f64:
9853 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
9854 ; CHECK-NEXT: vfmv.v.f v16, fa0
9855 ; CHECK-NEXT: vmfne.vf v24, v16, fa0
9856 ; CHECK-NEXT: vmfne.vv v16, v8, v8
9857 ; CHECK-NEXT: vmor.mm v0, v16, v24
9859 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9860 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9861 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp
9862 ret <vscale x 8 x i1> %1
9865 define <vscale x 8 x i1> @fcmp_uno_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp {
9866 ; CHECK-LABEL: fcmp_uno_fv_nxv8f64:
9868 ; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma
9869 ; CHECK-NEXT: vfmv.v.f v16, fa0
9870 ; CHECK-NEXT: vmfne.vf v24, v16, fa0
9871 ; CHECK-NEXT: vmfne.vv v16, v8, v8
9872 ; CHECK-NEXT: vmor.mm v0, v24, v16
9874 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0
9875 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
9876 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmp.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp
9877 ret <vscale x 8 x i1> %1