Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / setcc-fp-vp.ll
blob12604711be1911966e40d97e9de7e33031853ce8
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+m,+d,+zfh,+zvfh,+v -target-abi=ilp32d \
3 ; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH
4 ; RUN: llc -mtriple=riscv64 -mattr=+m,+d,+zfh,+zvfh,+v -target-abi=lp64d \
5 ; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH
6 ; RUN: llc -mtriple=riscv32 -mattr=+m,+d,+zfh,+zvfhmin,+v -target-abi=ilp32d \
7 ; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN
8 ; RUN: llc -mtriple=riscv64 -mattr=+m,+d,+zfh,+zvfhmin,+v -target-abi=lp64d \
9 ; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN
11 declare <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half>, <vscale x 1 x half>, metadata, <vscale x 1 x i1>, i32)
13 define <vscale x 1 x i1> @fcmp_oeq_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
14 ; ZVFH-LABEL: fcmp_oeq_vv_nxv1f16:
15 ; ZVFH:       # %bb.0:
16 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
17 ; ZVFH-NEXT:    vmfeq.vv v0, v8, v9, v0.t
18 ; ZVFH-NEXT:    ret
20 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv1f16:
21 ; ZVFHMIN:       # %bb.0:
22 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
23 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9
24 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
25 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
26 ; ZVFHMIN-NEXT:    vmfeq.vv v0, v9, v10, v0.t
27 ; ZVFHMIN-NEXT:    ret
28   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oeq", <vscale x 1 x i1> %m, i32 %evl)
29   ret <vscale x 1 x i1> %v
32 define <vscale x 1 x i1> @fcmp_oeq_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
33 ; ZVFH-LABEL: fcmp_oeq_vf_nxv1f16:
34 ; ZVFH:       # %bb.0:
35 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
36 ; ZVFH-NEXT:    vmfeq.vf v0, v8, fa0, v0.t
37 ; ZVFH-NEXT:    ret
39 ; ZVFHMIN-LABEL: fcmp_oeq_vf_nxv1f16:
40 ; ZVFHMIN:       # %bb.0:
41 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
42 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
43 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
44 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
45 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
46 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
47 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
48 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
49 ; ZVFHMIN-NEXT:    vmfeq.vv v0, v9, v8, v0.t
50 ; ZVFHMIN-NEXT:    ret
51   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
52   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
53   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oeq", <vscale x 1 x i1> %m, i32 %evl)
54   ret <vscale x 1 x i1> %v
57 define <vscale x 1 x i1> @fcmp_oeq_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
58 ; ZVFH-LABEL: fcmp_oeq_vf_swap_nxv1f16:
59 ; ZVFH:       # %bb.0:
60 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
61 ; ZVFH-NEXT:    vmfeq.vf v0, v8, fa0, v0.t
62 ; ZVFH-NEXT:    ret
64 ; ZVFHMIN-LABEL: fcmp_oeq_vf_swap_nxv1f16:
65 ; ZVFHMIN:       # %bb.0:
66 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
67 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
68 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
69 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
70 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
71 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
72 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
73 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
74 ; ZVFHMIN-NEXT:    vmfeq.vv v0, v8, v9, v0.t
75 ; ZVFHMIN-NEXT:    ret
76   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
77   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
78   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"oeq", <vscale x 1 x i1> %m, i32 %evl)
79   ret <vscale x 1 x i1> %v
82 define <vscale x 1 x i1> @fcmp_ogt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
83 ; ZVFH-LABEL: fcmp_ogt_vv_nxv1f16:
84 ; ZVFH:       # %bb.0:
85 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
86 ; ZVFH-NEXT:    vmflt.vv v0, v9, v8, v0.t
87 ; ZVFH-NEXT:    ret
89 ; ZVFHMIN-LABEL: fcmp_ogt_vv_nxv1f16:
90 ; ZVFHMIN:       # %bb.0:
91 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
92 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8
93 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v9
94 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
95 ; ZVFHMIN-NEXT:    vmflt.vv v0, v8, v10, v0.t
96 ; ZVFHMIN-NEXT:    ret
97   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ogt", <vscale x 1 x i1> %m, i32 %evl)
98   ret <vscale x 1 x i1> %v
101 define <vscale x 1 x i1> @fcmp_ogt_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
102 ; ZVFH-LABEL: fcmp_ogt_vf_nxv1f16:
103 ; ZVFH:       # %bb.0:
104 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
105 ; ZVFH-NEXT:    vmfgt.vf v0, v8, fa0, v0.t
106 ; ZVFH-NEXT:    ret
108 ; ZVFHMIN-LABEL: fcmp_ogt_vf_nxv1f16:
109 ; ZVFHMIN:       # %bb.0:
110 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
111 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
112 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
113 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
114 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
115 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
116 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
117 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
118 ; ZVFHMIN-NEXT:    vmflt.vv v0, v8, v9, v0.t
119 ; ZVFHMIN-NEXT:    ret
120   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
121   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
122   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ogt", <vscale x 1 x i1> %m, i32 %evl)
123   ret <vscale x 1 x i1> %v
126 define <vscale x 1 x i1> @fcmp_ogt_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
127 ; ZVFH-LABEL: fcmp_ogt_vf_swap_nxv1f16:
128 ; ZVFH:       # %bb.0:
129 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
130 ; ZVFH-NEXT:    vmflt.vf v0, v8, fa0, v0.t
131 ; ZVFH-NEXT:    ret
133 ; ZVFHMIN-LABEL: fcmp_ogt_vf_swap_nxv1f16:
134 ; ZVFHMIN:       # %bb.0:
135 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
136 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
137 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
138 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
139 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
140 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
141 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
142 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
143 ; ZVFHMIN-NEXT:    vmflt.vv v0, v9, v8, v0.t
144 ; ZVFHMIN-NEXT:    ret
145   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
146   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
147   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"ogt", <vscale x 1 x i1> %m, i32 %evl)
148   ret <vscale x 1 x i1> %v
151 define <vscale x 1 x i1> @fcmp_oge_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
152 ; ZVFH-LABEL: fcmp_oge_vv_nxv1f16:
153 ; ZVFH:       # %bb.0:
154 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
155 ; ZVFH-NEXT:    vmfle.vv v0, v9, v8, v0.t
156 ; ZVFH-NEXT:    ret
158 ; ZVFHMIN-LABEL: fcmp_oge_vv_nxv1f16:
159 ; ZVFHMIN:       # %bb.0:
160 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
161 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8
162 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v9
163 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
164 ; ZVFHMIN-NEXT:    vmfle.vv v0, v8, v10, v0.t
165 ; ZVFHMIN-NEXT:    ret
166   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oge", <vscale x 1 x i1> %m, i32 %evl)
167   ret <vscale x 1 x i1> %v
170 define <vscale x 1 x i1> @fcmp_oge_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
171 ; ZVFH-LABEL: fcmp_oge_vf_nxv1f16:
172 ; ZVFH:       # %bb.0:
173 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
174 ; ZVFH-NEXT:    vmfge.vf v0, v8, fa0, v0.t
175 ; ZVFH-NEXT:    ret
177 ; ZVFHMIN-LABEL: fcmp_oge_vf_nxv1f16:
178 ; ZVFHMIN:       # %bb.0:
179 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
180 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
181 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
182 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
183 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
184 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
185 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
186 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
187 ; ZVFHMIN-NEXT:    vmfle.vv v0, v8, v9, v0.t
188 ; ZVFHMIN-NEXT:    ret
189   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
190   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
191   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oge", <vscale x 1 x i1> %m, i32 %evl)
192   ret <vscale x 1 x i1> %v
195 define <vscale x 1 x i1> @fcmp_oge_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
196 ; ZVFH-LABEL: fcmp_oge_vf_swap_nxv1f16:
197 ; ZVFH:       # %bb.0:
198 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
199 ; ZVFH-NEXT:    vmfle.vf v0, v8, fa0, v0.t
200 ; ZVFH-NEXT:    ret
202 ; ZVFHMIN-LABEL: fcmp_oge_vf_swap_nxv1f16:
203 ; ZVFHMIN:       # %bb.0:
204 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
205 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
206 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
207 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
208 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
209 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
210 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
211 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
212 ; ZVFHMIN-NEXT:    vmfle.vv v0, v9, v8, v0.t
213 ; ZVFHMIN-NEXT:    ret
214   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
215   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
216   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"oge", <vscale x 1 x i1> %m, i32 %evl)
217   ret <vscale x 1 x i1> %v
220 define <vscale x 1 x i1> @fcmp_olt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
221 ; ZVFH-LABEL: fcmp_olt_vv_nxv1f16:
222 ; ZVFH:       # %bb.0:
223 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
224 ; ZVFH-NEXT:    vmflt.vv v0, v8, v9, v0.t
225 ; ZVFH-NEXT:    ret
227 ; ZVFHMIN-LABEL: fcmp_olt_vv_nxv1f16:
228 ; ZVFHMIN:       # %bb.0:
229 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
230 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9
231 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
232 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
233 ; ZVFHMIN-NEXT:    vmflt.vv v0, v9, v10, v0.t
234 ; ZVFHMIN-NEXT:    ret
235   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"olt", <vscale x 1 x i1> %m, i32 %evl)
236   ret <vscale x 1 x i1> %v
239 define <vscale x 1 x i1> @fcmp_olt_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
240 ; ZVFH-LABEL: fcmp_olt_vf_nxv1f16:
241 ; ZVFH:       # %bb.0:
242 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
243 ; ZVFH-NEXT:    vmflt.vf v0, v8, fa0, v0.t
244 ; ZVFH-NEXT:    ret
246 ; ZVFHMIN-LABEL: fcmp_olt_vf_nxv1f16:
247 ; ZVFHMIN:       # %bb.0:
248 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
249 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
250 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
251 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
252 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
253 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
254 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
255 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
256 ; ZVFHMIN-NEXT:    vmflt.vv v0, v9, v8, v0.t
257 ; ZVFHMIN-NEXT:    ret
258   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
259   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
260   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"olt", <vscale x 1 x i1> %m, i32 %evl)
261   ret <vscale x 1 x i1> %v
264 define <vscale x 1 x i1> @fcmp_olt_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
265 ; ZVFH-LABEL: fcmp_olt_vf_swap_nxv1f16:
266 ; ZVFH:       # %bb.0:
267 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
268 ; ZVFH-NEXT:    vmfgt.vf v0, v8, fa0, v0.t
269 ; ZVFH-NEXT:    ret
271 ; ZVFHMIN-LABEL: fcmp_olt_vf_swap_nxv1f16:
272 ; ZVFHMIN:       # %bb.0:
273 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
274 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
275 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
276 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
277 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
278 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
279 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
280 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
281 ; ZVFHMIN-NEXT:    vmflt.vv v0, v8, v9, v0.t
282 ; ZVFHMIN-NEXT:    ret
283   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
284   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
285   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"olt", <vscale x 1 x i1> %m, i32 %evl)
286   ret <vscale x 1 x i1> %v
289 define <vscale x 1 x i1> @fcmp_ole_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
290 ; ZVFH-LABEL: fcmp_ole_vv_nxv1f16:
291 ; ZVFH:       # %bb.0:
292 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
293 ; ZVFH-NEXT:    vmfle.vv v0, v8, v9, v0.t
294 ; ZVFH-NEXT:    ret
296 ; ZVFHMIN-LABEL: fcmp_ole_vv_nxv1f16:
297 ; ZVFHMIN:       # %bb.0:
298 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
299 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9
300 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
301 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
302 ; ZVFHMIN-NEXT:    vmfle.vv v0, v9, v10, v0.t
303 ; ZVFHMIN-NEXT:    ret
304   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ole", <vscale x 1 x i1> %m, i32 %evl)
305   ret <vscale x 1 x i1> %v
308 define <vscale x 1 x i1> @fcmp_ole_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
309 ; ZVFH-LABEL: fcmp_ole_vf_nxv1f16:
310 ; ZVFH:       # %bb.0:
311 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
312 ; ZVFH-NEXT:    vmfle.vf v0, v8, fa0, v0.t
313 ; ZVFH-NEXT:    ret
315 ; ZVFHMIN-LABEL: fcmp_ole_vf_nxv1f16:
316 ; ZVFHMIN:       # %bb.0:
317 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
318 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
319 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
320 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
321 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
322 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
323 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
324 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
325 ; ZVFHMIN-NEXT:    vmfle.vv v0, v9, v8, v0.t
326 ; ZVFHMIN-NEXT:    ret
327   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
328   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
329   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ole", <vscale x 1 x i1> %m, i32 %evl)
330   ret <vscale x 1 x i1> %v
333 define <vscale x 1 x i1> @fcmp_ole_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
334 ; ZVFH-LABEL: fcmp_ole_vf_swap_nxv1f16:
335 ; ZVFH:       # %bb.0:
336 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
337 ; ZVFH-NEXT:    vmfge.vf v0, v8, fa0, v0.t
338 ; ZVFH-NEXT:    ret
340 ; ZVFHMIN-LABEL: fcmp_ole_vf_swap_nxv1f16:
341 ; ZVFHMIN:       # %bb.0:
342 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
343 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
344 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
345 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
346 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
347 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
348 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
349 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
350 ; ZVFHMIN-NEXT:    vmfle.vv v0, v8, v9, v0.t
351 ; ZVFHMIN-NEXT:    ret
352   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
353   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
354   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"ole", <vscale x 1 x i1> %m, i32 %evl)
355   ret <vscale x 1 x i1> %v
358 define <vscale x 1 x i1> @fcmp_one_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
359 ; ZVFH-LABEL: fcmp_one_vv_nxv1f16:
360 ; ZVFH:       # %bb.0:
361 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
362 ; ZVFH-NEXT:    vmflt.vv v10, v8, v9, v0.t
363 ; ZVFH-NEXT:    vmflt.vv v8, v9, v8, v0.t
364 ; ZVFH-NEXT:    vmor.mm v0, v8, v10
365 ; ZVFH-NEXT:    ret
367 ; ZVFHMIN-LABEL: fcmp_one_vv_nxv1f16:
368 ; ZVFHMIN:       # %bb.0:
369 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
370 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9
371 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
372 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
373 ; ZVFHMIN-NEXT:    vmflt.vv v8, v9, v10, v0.t
374 ; ZVFHMIN-NEXT:    vmflt.vv v9, v10, v9, v0.t
375 ; ZVFHMIN-NEXT:    vmor.mm v0, v9, v8
376 ; ZVFHMIN-NEXT:    ret
377   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"one", <vscale x 1 x i1> %m, i32 %evl)
378   ret <vscale x 1 x i1> %v
381 define <vscale x 1 x i1> @fcmp_one_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
382 ; ZVFH-LABEL: fcmp_one_vf_nxv1f16:
383 ; ZVFH:       # %bb.0:
384 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
385 ; ZVFH-NEXT:    vmflt.vf v9, v8, fa0, v0.t
386 ; ZVFH-NEXT:    vmfgt.vf v8, v8, fa0, v0.t
387 ; ZVFH-NEXT:    vmor.mm v0, v8, v9
388 ; ZVFH-NEXT:    ret
390 ; ZVFHMIN-LABEL: fcmp_one_vf_nxv1f16:
391 ; ZVFHMIN:       # %bb.0:
392 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
393 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
394 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
395 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
396 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
397 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
398 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
399 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
400 ; ZVFHMIN-NEXT:    vmflt.vv v10, v9, v8, v0.t
401 ; ZVFHMIN-NEXT:    vmflt.vv v8, v8, v9, v0.t
402 ; ZVFHMIN-NEXT:    vmor.mm v0, v8, v10
403 ; ZVFHMIN-NEXT:    ret
404   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
405   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
406   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"one", <vscale x 1 x i1> %m, i32 %evl)
407   ret <vscale x 1 x i1> %v
410 define <vscale x 1 x i1> @fcmp_one_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
411 ; ZVFH-LABEL: fcmp_one_vf_swap_nxv1f16:
412 ; ZVFH:       # %bb.0:
413 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
414 ; ZVFH-NEXT:    vmfgt.vf v9, v8, fa0, v0.t
415 ; ZVFH-NEXT:    vmflt.vf v8, v8, fa0, v0.t
416 ; ZVFH-NEXT:    vmor.mm v0, v8, v9
417 ; ZVFH-NEXT:    ret
419 ; ZVFHMIN-LABEL: fcmp_one_vf_swap_nxv1f16:
420 ; ZVFHMIN:       # %bb.0:
421 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
422 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
423 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
424 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
425 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
426 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
427 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
428 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
429 ; ZVFHMIN-NEXT:    vmflt.vv v10, v8, v9, v0.t
430 ; ZVFHMIN-NEXT:    vmflt.vv v8, v9, v8, v0.t
431 ; ZVFHMIN-NEXT:    vmor.mm v0, v8, v10
432 ; ZVFHMIN-NEXT:    ret
433   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
434   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
435   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"one", <vscale x 1 x i1> %m, i32 %evl)
436   ret <vscale x 1 x i1> %v
439 define <vscale x 1 x i1> @fcmp_ord_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
440 ; ZVFH-LABEL: fcmp_ord_vv_nxv1f16:
441 ; ZVFH:       # %bb.0:
442 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
443 ; ZVFH-NEXT:    vmfeq.vv v9, v9, v9, v0.t
444 ; ZVFH-NEXT:    vmfeq.vv v8, v8, v8, v0.t
445 ; ZVFH-NEXT:    vmand.mm v0, v8, v9
446 ; ZVFH-NEXT:    ret
448 ; ZVFHMIN-LABEL: fcmp_ord_vv_nxv1f16:
449 ; ZVFHMIN:       # %bb.0:
450 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
451 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9
452 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
453 ; ZVFHMIN-NEXT:    vmfeq.vv v9, v10, v10, v0.t
454 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
455 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8
456 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
457 ; ZVFHMIN-NEXT:    vmfeq.vv v8, v10, v10, v0.t
458 ; ZVFHMIN-NEXT:    vmand.mm v0, v8, v9
459 ; ZVFHMIN-NEXT:    ret
460   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ord", <vscale x 1 x i1> %m, i32 %evl)
461   ret <vscale x 1 x i1> %v
464 define <vscale x 1 x i1> @fcmp_ord_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
465 ; ZVFH-LABEL: fcmp_ord_vf_nxv1f16:
466 ; ZVFH:       # %bb.0:
467 ; ZVFH-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
468 ; ZVFH-NEXT:    vfmv.v.f v9, fa0
469 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
470 ; ZVFH-NEXT:    vmfeq.vf v9, v9, fa0, v0.t
471 ; ZVFH-NEXT:    vmfeq.vv v8, v8, v8, v0.t
472 ; ZVFH-NEXT:    vmand.mm v0, v8, v9
473 ; ZVFH-NEXT:    ret
475 ; ZVFHMIN-LABEL: fcmp_ord_vf_nxv1f16:
476 ; ZVFHMIN:       # %bb.0:
477 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
478 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
479 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
480 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
481 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
482 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
483 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
484 ; ZVFHMIN-NEXT:    vmfeq.vv v8, v9, v9, v0.t
485 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
486 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v10
487 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
488 ; ZVFHMIN-NEXT:    vmfeq.vv v9, v9, v9, v0.t
489 ; ZVFHMIN-NEXT:    vmand.mm v0, v8, v9
490 ; ZVFHMIN-NEXT:    ret
491   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
492   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
493   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ord", <vscale x 1 x i1> %m, i32 %evl)
494   ret <vscale x 1 x i1> %v
497 define <vscale x 1 x i1> @fcmp_ord_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
498 ; ZVFH-LABEL: fcmp_ord_vf_swap_nxv1f16:
499 ; ZVFH:       # %bb.0:
500 ; ZVFH-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
501 ; ZVFH-NEXT:    vfmv.v.f v9, fa0
502 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
503 ; ZVFH-NEXT:    vmfeq.vf v9, v9, fa0, v0.t
504 ; ZVFH-NEXT:    vmfeq.vv v8, v8, v8, v0.t
505 ; ZVFH-NEXT:    vmand.mm v0, v9, v8
506 ; ZVFH-NEXT:    ret
508 ; ZVFHMIN-LABEL: fcmp_ord_vf_swap_nxv1f16:
509 ; ZVFHMIN:       # %bb.0:
510 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
511 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
512 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
513 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
514 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
515 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
516 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
517 ; ZVFHMIN-NEXT:    vmfeq.vv v8, v9, v9, v0.t
518 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
519 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v10
520 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
521 ; ZVFHMIN-NEXT:    vmfeq.vv v9, v9, v9, v0.t
522 ; ZVFHMIN-NEXT:    vmand.mm v0, v9, v8
523 ; ZVFHMIN-NEXT:    ret
524   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
525   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
526   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"ord", <vscale x 1 x i1> %m, i32 %evl)
527   ret <vscale x 1 x i1> %v
530 define <vscale x 1 x i1> @fcmp_ueq_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
531 ; ZVFH-LABEL: fcmp_ueq_vv_nxv1f16:
532 ; ZVFH:       # %bb.0:
533 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
534 ; ZVFH-NEXT:    vmflt.vv v10, v8, v9, v0.t
535 ; ZVFH-NEXT:    vmflt.vv v8, v9, v8, v0.t
536 ; ZVFH-NEXT:    vmnor.mm v0, v8, v10
537 ; ZVFH-NEXT:    ret
539 ; ZVFHMIN-LABEL: fcmp_ueq_vv_nxv1f16:
540 ; ZVFHMIN:       # %bb.0:
541 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
542 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9
543 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
544 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
545 ; ZVFHMIN-NEXT:    vmflt.vv v8, v9, v10, v0.t
546 ; ZVFHMIN-NEXT:    vmflt.vv v9, v10, v9, v0.t
547 ; ZVFHMIN-NEXT:    vmnor.mm v0, v9, v8
548 ; ZVFHMIN-NEXT:    ret
549   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ueq", <vscale x 1 x i1> %m, i32 %evl)
550   ret <vscale x 1 x i1> %v
553 define <vscale x 1 x i1> @fcmp_ueq_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
554 ; ZVFH-LABEL: fcmp_ueq_vf_nxv1f16:
555 ; ZVFH:       # %bb.0:
556 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
557 ; ZVFH-NEXT:    vmflt.vf v9, v8, fa0, v0.t
558 ; ZVFH-NEXT:    vmfgt.vf v8, v8, fa0, v0.t
559 ; ZVFH-NEXT:    vmnor.mm v0, v8, v9
560 ; ZVFH-NEXT:    ret
562 ; ZVFHMIN-LABEL: fcmp_ueq_vf_nxv1f16:
563 ; ZVFHMIN:       # %bb.0:
564 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
565 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
566 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
567 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
568 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
569 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
570 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
571 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
572 ; ZVFHMIN-NEXT:    vmflt.vv v10, v9, v8, v0.t
573 ; ZVFHMIN-NEXT:    vmflt.vv v8, v8, v9, v0.t
574 ; ZVFHMIN-NEXT:    vmnor.mm v0, v8, v10
575 ; ZVFHMIN-NEXT:    ret
576   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
577   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
578   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ueq", <vscale x 1 x i1> %m, i32 %evl)
579   ret <vscale x 1 x i1> %v
582 define <vscale x 1 x i1> @fcmp_ueq_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
583 ; ZVFH-LABEL: fcmp_ueq_vf_swap_nxv1f16:
584 ; ZVFH:       # %bb.0:
585 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
586 ; ZVFH-NEXT:    vmfgt.vf v9, v8, fa0, v0.t
587 ; ZVFH-NEXT:    vmflt.vf v8, v8, fa0, v0.t
588 ; ZVFH-NEXT:    vmnor.mm v0, v8, v9
589 ; ZVFH-NEXT:    ret
591 ; ZVFHMIN-LABEL: fcmp_ueq_vf_swap_nxv1f16:
592 ; ZVFHMIN:       # %bb.0:
593 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
594 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
595 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
596 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
597 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
598 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
599 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
600 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
601 ; ZVFHMIN-NEXT:    vmflt.vv v10, v8, v9, v0.t
602 ; ZVFHMIN-NEXT:    vmflt.vv v8, v9, v8, v0.t
603 ; ZVFHMIN-NEXT:    vmnor.mm v0, v8, v10
604 ; ZVFHMIN-NEXT:    ret
605   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
606   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
607   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"ueq", <vscale x 1 x i1> %m, i32 %evl)
608   ret <vscale x 1 x i1> %v
611 define <vscale x 1 x i1> @fcmp_ugt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
612 ; ZVFH-LABEL: fcmp_ugt_vv_nxv1f16:
613 ; ZVFH:       # %bb.0:
614 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
615 ; ZVFH-NEXT:    vmfle.vv v8, v8, v9, v0.t
616 ; ZVFH-NEXT:    vmnot.m v0, v8
617 ; ZVFH-NEXT:    ret
619 ; ZVFHMIN-LABEL: fcmp_ugt_vv_nxv1f16:
620 ; ZVFHMIN:       # %bb.0:
621 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
622 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9
623 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
624 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
625 ; ZVFHMIN-NEXT:    vmfle.vv v8, v9, v10, v0.t
626 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
627 ; ZVFHMIN-NEXT:    ret
628   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
629   ret <vscale x 1 x i1> %v
632 define <vscale x 1 x i1> @fcmp_ugt_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
633 ; ZVFH-LABEL: fcmp_ugt_vf_nxv1f16:
634 ; ZVFH:       # %bb.0:
635 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
636 ; ZVFH-NEXT:    vmfle.vf v8, v8, fa0, v0.t
637 ; ZVFH-NEXT:    vmnot.m v0, v8
638 ; ZVFH-NEXT:    ret
640 ; ZVFHMIN-LABEL: fcmp_ugt_vf_nxv1f16:
641 ; ZVFHMIN:       # %bb.0:
642 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
643 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
644 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
645 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
646 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
647 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
648 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
649 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
650 ; ZVFHMIN-NEXT:    vmfle.vv v8, v9, v8, v0.t
651 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
652 ; ZVFHMIN-NEXT:    ret
653   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
654   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
655   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
656   ret <vscale x 1 x i1> %v
659 define <vscale x 1 x i1> @fcmp_ugt_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
660 ; ZVFH-LABEL: fcmp_ugt_vf_swap_nxv1f16:
661 ; ZVFH:       # %bb.0:
662 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
663 ; ZVFH-NEXT:    vmfge.vf v8, v8, fa0, v0.t
664 ; ZVFH-NEXT:    vmnot.m v0, v8
665 ; ZVFH-NEXT:    ret
667 ; ZVFHMIN-LABEL: fcmp_ugt_vf_swap_nxv1f16:
668 ; ZVFHMIN:       # %bb.0:
669 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
670 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
671 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
672 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
673 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
674 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
675 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
676 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
677 ; ZVFHMIN-NEXT:    vmfle.vv v8, v8, v9, v0.t
678 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
679 ; ZVFHMIN-NEXT:    ret
680   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
681   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
682   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
683   ret <vscale x 1 x i1> %v
686 define <vscale x 1 x i1> @fcmp_uge_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
687 ; ZVFH-LABEL: fcmp_uge_vv_nxv1f16:
688 ; ZVFH:       # %bb.0:
689 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
690 ; ZVFH-NEXT:    vmflt.vv v8, v8, v9, v0.t
691 ; ZVFH-NEXT:    vmnot.m v0, v8
692 ; ZVFH-NEXT:    ret
694 ; ZVFHMIN-LABEL: fcmp_uge_vv_nxv1f16:
695 ; ZVFHMIN:       # %bb.0:
696 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
697 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9
698 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
699 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
700 ; ZVFHMIN-NEXT:    vmflt.vv v8, v9, v10, v0.t
701 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
702 ; ZVFHMIN-NEXT:    ret
703   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
704   ret <vscale x 1 x i1> %v
707 define <vscale x 1 x i1> @fcmp_uge_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
708 ; ZVFH-LABEL: fcmp_uge_vf_nxv1f16:
709 ; ZVFH:       # %bb.0:
710 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
711 ; ZVFH-NEXT:    vmflt.vf v8, v8, fa0, v0.t
712 ; ZVFH-NEXT:    vmnot.m v0, v8
713 ; ZVFH-NEXT:    ret
715 ; ZVFHMIN-LABEL: fcmp_uge_vf_nxv1f16:
716 ; ZVFHMIN:       # %bb.0:
717 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
718 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
719 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
720 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
721 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
722 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
723 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
724 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
725 ; ZVFHMIN-NEXT:    vmflt.vv v8, v9, v8, v0.t
726 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
727 ; ZVFHMIN-NEXT:    ret
728   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
729   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
730   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
731   ret <vscale x 1 x i1> %v
734 define <vscale x 1 x i1> @fcmp_uge_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
735 ; ZVFH-LABEL: fcmp_uge_vf_swap_nxv1f16:
736 ; ZVFH:       # %bb.0:
737 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
738 ; ZVFH-NEXT:    vmfgt.vf v8, v8, fa0, v0.t
739 ; ZVFH-NEXT:    vmnot.m v0, v8
740 ; ZVFH-NEXT:    ret
742 ; ZVFHMIN-LABEL: fcmp_uge_vf_swap_nxv1f16:
743 ; ZVFHMIN:       # %bb.0:
744 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
745 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
746 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
747 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
748 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
749 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
750 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
751 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
752 ; ZVFHMIN-NEXT:    vmflt.vv v8, v8, v9, v0.t
753 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
754 ; ZVFHMIN-NEXT:    ret
755   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
756   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
757   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
758   ret <vscale x 1 x i1> %v
761 define <vscale x 1 x i1> @fcmp_ult_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
762 ; ZVFH-LABEL: fcmp_ult_vv_nxv1f16:
763 ; ZVFH:       # %bb.0:
764 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
765 ; ZVFH-NEXT:    vmfle.vv v8, v9, v8, v0.t
766 ; ZVFH-NEXT:    vmnot.m v0, v8
767 ; ZVFH-NEXT:    ret
769 ; ZVFHMIN-LABEL: fcmp_ult_vv_nxv1f16:
770 ; ZVFHMIN:       # %bb.0:
771 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
772 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8
773 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v9
774 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
775 ; ZVFHMIN-NEXT:    vmfle.vv v8, v8, v10, v0.t
776 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
777 ; ZVFHMIN-NEXT:    ret
778   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
779   ret <vscale x 1 x i1> %v
782 define <vscale x 1 x i1> @fcmp_ult_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
783 ; ZVFH-LABEL: fcmp_ult_vf_nxv1f16:
784 ; ZVFH:       # %bb.0:
785 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
786 ; ZVFH-NEXT:    vmfge.vf v8, v8, fa0, v0.t
787 ; ZVFH-NEXT:    vmnot.m v0, v8
788 ; ZVFH-NEXT:    ret
790 ; ZVFHMIN-LABEL: fcmp_ult_vf_nxv1f16:
791 ; ZVFHMIN:       # %bb.0:
792 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
793 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
794 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
795 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
796 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
797 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
798 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
799 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
800 ; ZVFHMIN-NEXT:    vmfle.vv v8, v8, v9, v0.t
801 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
802 ; ZVFHMIN-NEXT:    ret
803   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
804   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
805   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
806   ret <vscale x 1 x i1> %v
809 define <vscale x 1 x i1> @fcmp_ult_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
810 ; ZVFH-LABEL: fcmp_ult_vf_swap_nxv1f16:
811 ; ZVFH:       # %bb.0:
812 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
813 ; ZVFH-NEXT:    vmfle.vf v8, v8, fa0, v0.t
814 ; ZVFH-NEXT:    vmnot.m v0, v8
815 ; ZVFH-NEXT:    ret
817 ; ZVFHMIN-LABEL: fcmp_ult_vf_swap_nxv1f16:
818 ; ZVFHMIN:       # %bb.0:
819 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
820 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
821 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
822 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
823 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
824 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
825 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
826 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
827 ; ZVFHMIN-NEXT:    vmfle.vv v8, v9, v8, v0.t
828 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
829 ; ZVFHMIN-NEXT:    ret
830   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
831   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
832   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
833   ret <vscale x 1 x i1> %v
836 define <vscale x 1 x i1> @fcmp_ule_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
837 ; ZVFH-LABEL: fcmp_ule_vv_nxv1f16:
838 ; ZVFH:       # %bb.0:
839 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
840 ; ZVFH-NEXT:    vmflt.vv v8, v9, v8, v0.t
841 ; ZVFH-NEXT:    vmnot.m v0, v8
842 ; ZVFH-NEXT:    ret
844 ; ZVFHMIN-LABEL: fcmp_ule_vv_nxv1f16:
845 ; ZVFHMIN:       # %bb.0:
846 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
847 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8
848 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v9
849 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
850 ; ZVFHMIN-NEXT:    vmflt.vv v8, v8, v10, v0.t
851 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
852 ; ZVFHMIN-NEXT:    ret
853   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ule", <vscale x 1 x i1> %m, i32 %evl)
854   ret <vscale x 1 x i1> %v
857 define <vscale x 1 x i1> @fcmp_ule_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
858 ; ZVFH-LABEL: fcmp_ule_vf_nxv1f16:
859 ; ZVFH:       # %bb.0:
860 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
861 ; ZVFH-NEXT:    vmfgt.vf v8, v8, fa0, v0.t
862 ; ZVFH-NEXT:    vmnot.m v0, v8
863 ; ZVFH-NEXT:    ret
865 ; ZVFHMIN-LABEL: fcmp_ule_vf_nxv1f16:
866 ; ZVFHMIN:       # %bb.0:
867 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
868 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
869 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
870 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
871 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
872 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
873 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
874 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
875 ; ZVFHMIN-NEXT:    vmflt.vv v8, v8, v9, v0.t
876 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
877 ; ZVFHMIN-NEXT:    ret
878   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
879   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
880   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ule", <vscale x 1 x i1> %m, i32 %evl)
881   ret <vscale x 1 x i1> %v
884 define <vscale x 1 x i1> @fcmp_ule_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
885 ; ZVFH-LABEL: fcmp_ule_vf_swap_nxv1f16:
886 ; ZVFH:       # %bb.0:
887 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
888 ; ZVFH-NEXT:    vmflt.vf v8, v8, fa0, v0.t
889 ; ZVFH-NEXT:    vmnot.m v0, v8
890 ; ZVFH-NEXT:    ret
892 ; ZVFHMIN-LABEL: fcmp_ule_vf_swap_nxv1f16:
893 ; ZVFHMIN:       # %bb.0:
894 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
895 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
896 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
897 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
898 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
899 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
900 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
901 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
902 ; ZVFHMIN-NEXT:    vmflt.vv v8, v9, v8, v0.t
903 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
904 ; ZVFHMIN-NEXT:    ret
905   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
906   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
907   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"ule", <vscale x 1 x i1> %m, i32 %evl)
908   ret <vscale x 1 x i1> %v
911 define <vscale x 1 x i1> @fcmp_une_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
912 ; ZVFH-LABEL: fcmp_une_vv_nxv1f16:
913 ; ZVFH:       # %bb.0:
914 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
915 ; ZVFH-NEXT:    vmfne.vv v0, v8, v9, v0.t
916 ; ZVFH-NEXT:    ret
918 ; ZVFHMIN-LABEL: fcmp_une_vv_nxv1f16:
919 ; ZVFHMIN:       # %bb.0:
920 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
921 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9
922 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
923 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
924 ; ZVFHMIN-NEXT:    vmfne.vv v0, v9, v10, v0.t
925 ; ZVFHMIN-NEXT:    ret
926   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"une", <vscale x 1 x i1> %m, i32 %evl)
927   ret <vscale x 1 x i1> %v
930 define <vscale x 1 x i1> @fcmp_une_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
931 ; ZVFH-LABEL: fcmp_une_vf_nxv1f16:
932 ; ZVFH:       # %bb.0:
933 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
934 ; ZVFH-NEXT:    vmfne.vf v0, v8, fa0, v0.t
935 ; ZVFH-NEXT:    ret
937 ; ZVFHMIN-LABEL: fcmp_une_vf_nxv1f16:
938 ; ZVFHMIN:       # %bb.0:
939 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
940 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
941 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
942 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
943 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
944 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
945 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
946 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
947 ; ZVFHMIN-NEXT:    vmfne.vv v0, v9, v8, v0.t
948 ; ZVFHMIN-NEXT:    ret
949   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
950   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
951   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"une", <vscale x 1 x i1> %m, i32 %evl)
952   ret <vscale x 1 x i1> %v
955 define <vscale x 1 x i1> @fcmp_une_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
956 ; ZVFH-LABEL: fcmp_une_vf_swap_nxv1f16:
957 ; ZVFH:       # %bb.0:
958 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
959 ; ZVFH-NEXT:    vmfne.vf v0, v8, fa0, v0.t
960 ; ZVFH-NEXT:    ret
962 ; ZVFHMIN-LABEL: fcmp_une_vf_swap_nxv1f16:
963 ; ZVFHMIN:       # %bb.0:
964 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
965 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
966 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
967 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
968 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
969 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
970 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v10
971 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
972 ; ZVFHMIN-NEXT:    vmfne.vv v0, v8, v9, v0.t
973 ; ZVFHMIN-NEXT:    ret
974   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
975   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
976   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"une", <vscale x 1 x i1> %m, i32 %evl)
977   ret <vscale x 1 x i1> %v
980 define <vscale x 1 x i1> @fcmp_uno_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
981 ; ZVFH-LABEL: fcmp_uno_vv_nxv1f16:
982 ; ZVFH:       # %bb.0:
983 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
984 ; ZVFH-NEXT:    vmfne.vv v9, v9, v9, v0.t
985 ; ZVFH-NEXT:    vmfne.vv v8, v8, v8, v0.t
986 ; ZVFH-NEXT:    vmor.mm v0, v8, v9
987 ; ZVFH-NEXT:    ret
989 ; ZVFHMIN-LABEL: fcmp_uno_vv_nxv1f16:
990 ; ZVFHMIN:       # %bb.0:
991 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
992 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9
993 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
994 ; ZVFHMIN-NEXT:    vmfne.vv v9, v10, v10, v0.t
995 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
996 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8
997 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
998 ; ZVFHMIN-NEXT:    vmfne.vv v8, v10, v10, v0.t
999 ; ZVFHMIN-NEXT:    vmor.mm v0, v8, v9
1000 ; ZVFHMIN-NEXT:    ret
1001   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uno", <vscale x 1 x i1> %m, i32 %evl)
1002   ret <vscale x 1 x i1> %v
1005 define <vscale x 1 x i1> @fcmp_uno_vf_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1006 ; ZVFH-LABEL: fcmp_uno_vf_nxv1f16:
1007 ; ZVFH:       # %bb.0:
1008 ; ZVFH-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
1009 ; ZVFH-NEXT:    vfmv.v.f v9, fa0
1010 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1011 ; ZVFH-NEXT:    vmfne.vf v9, v9, fa0, v0.t
1012 ; ZVFH-NEXT:    vmfne.vv v8, v8, v8, v0.t
1013 ; ZVFH-NEXT:    vmor.mm v0, v8, v9
1014 ; ZVFH-NEXT:    ret
1016 ; ZVFHMIN-LABEL: fcmp_uno_vf_nxv1f16:
1017 ; ZVFHMIN:       # %bb.0:
1018 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1019 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
1020 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
1021 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
1022 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
1023 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
1024 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1025 ; ZVFHMIN-NEXT:    vmfne.vv v8, v9, v9, v0.t
1026 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
1027 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v10
1028 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1029 ; ZVFHMIN-NEXT:    vmfne.vv v9, v9, v9, v0.t
1030 ; ZVFHMIN-NEXT:    vmor.mm v0, v8, v9
1031 ; ZVFHMIN-NEXT:    ret
1032   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1033   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1034   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uno", <vscale x 1 x i1> %m, i32 %evl)
1035   ret <vscale x 1 x i1> %v
1038 define <vscale x 1 x i1> @fcmp_uno_vf_swap_nxv1f16(<vscale x 1 x half> %va, half %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1039 ; ZVFH-LABEL: fcmp_uno_vf_swap_nxv1f16:
1040 ; ZVFH:       # %bb.0:
1041 ; ZVFH-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
1042 ; ZVFH-NEXT:    vfmv.v.f v9, fa0
1043 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1044 ; ZVFH-NEXT:    vmfne.vf v9, v9, fa0, v0.t
1045 ; ZVFH-NEXT:    vmfne.vv v8, v8, v8, v0.t
1046 ; ZVFH-NEXT:    vmor.mm v0, v9, v8
1047 ; ZVFH-NEXT:    ret
1049 ; ZVFHMIN-LABEL: fcmp_uno_vf_swap_nxv1f16:
1050 ; ZVFHMIN:       # %bb.0:
1051 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1052 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma
1053 ; ZVFHMIN-NEXT:    vfmv.v.f v9, fa5
1054 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
1055 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v9
1056 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v8
1057 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1058 ; ZVFHMIN-NEXT:    vmfne.vv v8, v9, v9, v0.t
1059 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma
1060 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v9, v10
1061 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1062 ; ZVFHMIN-NEXT:    vmfne.vv v9, v9, v9, v0.t
1063 ; ZVFHMIN-NEXT:    vmor.mm v0, v9, v8
1064 ; ZVFHMIN-NEXT:    ret
1065   %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1066   %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1067   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f16(<vscale x 1 x half> %vb, <vscale x 1 x half> %va, metadata !"uno", <vscale x 1 x i1> %m, i32 %evl)
1068   ret <vscale x 1 x i1> %v
1071 declare <vscale x 3 x i1> @llvm.vp.fcmp.nxv3f16(<vscale x 3 x half>, <vscale x 3 x half>, metadata, <vscale x 3 x i1>, i32)
1073 define <vscale x 3 x i1> @fcmp_oeq_vv_nxv3f16(<vscale x 3 x half> %va, <vscale x 3 x half> %vb, <vscale x 3 x i1> %m, i32 zeroext %evl) {
1074 ; ZVFH-LABEL: fcmp_oeq_vv_nxv3f16:
1075 ; ZVFH:       # %bb.0:
1076 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
1077 ; ZVFH-NEXT:    vmfeq.vv v0, v8, v9, v0.t
1078 ; ZVFH-NEXT:    ret
1080 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv3f16:
1081 ; ZVFHMIN:       # %bb.0:
1082 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m1, ta, ma
1083 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v9
1084 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1085 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1086 ; ZVFHMIN-NEXT:    vmfeq.vv v8, v12, v10, v0.t
1087 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1088 ; ZVFHMIN-NEXT:    ret
1089   %v = call <vscale x 3 x i1> @llvm.vp.fcmp.nxv3f16(<vscale x 3 x half> %va, <vscale x 3 x half> %vb, metadata !"oeq", <vscale x 3 x i1> %m, i32 %evl)
1090   ret <vscale x 3 x i1> %v
1093 declare <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, metadata, <vscale x 8 x i1>, i32)
1095 define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1096 ; ZVFH-LABEL: fcmp_oeq_vv_nxv8f16:
1097 ; ZVFH:       # %bb.0:
1098 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1099 ; ZVFH-NEXT:    vmfeq.vv v12, v8, v10, v0.t
1100 ; ZVFH-NEXT:    vmv1r.v v0, v12
1101 ; ZVFH-NEXT:    ret
1103 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv8f16:
1104 ; ZVFHMIN:       # %bb.0:
1105 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1106 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
1107 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8
1108 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1109 ; ZVFHMIN-NEXT:    vmfeq.vv v8, v16, v12, v0.t
1110 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1111 ; ZVFHMIN-NEXT:    ret
1112   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oeq", <vscale x 8 x i1> %m, i32 %evl)
1113   ret <vscale x 8 x i1> %v
1116 define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1117 ; ZVFH-LABEL: fcmp_oeq_vf_nxv8f16:
1118 ; ZVFH:       # %bb.0:
1119 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1120 ; ZVFH-NEXT:    vmfeq.vf v10, v8, fa0, v0.t
1121 ; ZVFH-NEXT:    vmv1r.v v0, v10
1122 ; ZVFH-NEXT:    ret
1124 ; ZVFHMIN-LABEL: fcmp_oeq_vf_nxv8f16:
1125 ; ZVFHMIN:       # %bb.0:
1126 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1127 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1128 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1129 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1130 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1131 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1132 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1133 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1134 ; ZVFHMIN-NEXT:    vmfeq.vv v8, v12, v16, v0.t
1135 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1136 ; ZVFHMIN-NEXT:    ret
1137   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1138   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1139   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oeq", <vscale x 8 x i1> %m, i32 %evl)
1140   ret <vscale x 8 x i1> %v
1143 define <vscale x 8 x i1> @fcmp_oeq_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1144 ; ZVFH-LABEL: fcmp_oeq_vf_swap_nxv8f16:
1145 ; ZVFH:       # %bb.0:
1146 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1147 ; ZVFH-NEXT:    vmfeq.vf v10, v8, fa0, v0.t
1148 ; ZVFH-NEXT:    vmv1r.v v0, v10
1149 ; ZVFH-NEXT:    ret
1151 ; ZVFHMIN-LABEL: fcmp_oeq_vf_swap_nxv8f16:
1152 ; ZVFHMIN:       # %bb.0:
1153 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1154 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1155 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1156 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1157 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1158 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1159 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1160 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1161 ; ZVFHMIN-NEXT:    vmfeq.vv v8, v16, v12, v0.t
1162 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1163 ; ZVFHMIN-NEXT:    ret
1164   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1165   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1166   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"oeq", <vscale x 8 x i1> %m, i32 %evl)
1167   ret <vscale x 8 x i1> %v
1170 define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1171 ; ZVFH-LABEL: fcmp_ogt_vv_nxv8f16:
1172 ; ZVFH:       # %bb.0:
1173 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1174 ; ZVFH-NEXT:    vmflt.vv v12, v10, v8, v0.t
1175 ; ZVFH-NEXT:    vmv1r.v v0, v12
1176 ; ZVFH-NEXT:    ret
1178 ; ZVFHMIN-LABEL: fcmp_ogt_vv_nxv8f16:
1179 ; ZVFHMIN:       # %bb.0:
1180 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1181 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1182 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1183 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1184 ; ZVFHMIN-NEXT:    vmflt.vv v8, v16, v12, v0.t
1185 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1186 ; ZVFHMIN-NEXT:    ret
1187   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ogt", <vscale x 8 x i1> %m, i32 %evl)
1188   ret <vscale x 8 x i1> %v
1191 define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1192 ; ZVFH-LABEL: fcmp_ogt_vf_nxv8f16:
1193 ; ZVFH:       # %bb.0:
1194 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1195 ; ZVFH-NEXT:    vmfgt.vf v10, v8, fa0, v0.t
1196 ; ZVFH-NEXT:    vmv1r.v v0, v10
1197 ; ZVFH-NEXT:    ret
1199 ; ZVFHMIN-LABEL: fcmp_ogt_vf_nxv8f16:
1200 ; ZVFHMIN:       # %bb.0:
1201 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1202 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1203 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1204 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1205 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1206 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1207 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1208 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1209 ; ZVFHMIN-NEXT:    vmflt.vv v8, v16, v12, v0.t
1210 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1211 ; ZVFHMIN-NEXT:    ret
1212   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1213   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1214   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ogt", <vscale x 8 x i1> %m, i32 %evl)
1215   ret <vscale x 8 x i1> %v
1218 define <vscale x 8 x i1> @fcmp_ogt_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1219 ; ZVFH-LABEL: fcmp_ogt_vf_swap_nxv8f16:
1220 ; ZVFH:       # %bb.0:
1221 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1222 ; ZVFH-NEXT:    vmflt.vf v10, v8, fa0, v0.t
1223 ; ZVFH-NEXT:    vmv1r.v v0, v10
1224 ; ZVFH-NEXT:    ret
1226 ; ZVFHMIN-LABEL: fcmp_ogt_vf_swap_nxv8f16:
1227 ; ZVFHMIN:       # %bb.0:
1228 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1229 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1230 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1231 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1232 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1233 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1234 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1235 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1236 ; ZVFHMIN-NEXT:    vmflt.vv v8, v12, v16, v0.t
1237 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1238 ; ZVFHMIN-NEXT:    ret
1239   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1240   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1241   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"ogt", <vscale x 8 x i1> %m, i32 %evl)
1242   ret <vscale x 8 x i1> %v
1245 define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1246 ; ZVFH-LABEL: fcmp_oge_vv_nxv8f16:
1247 ; ZVFH:       # %bb.0:
1248 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1249 ; ZVFH-NEXT:    vmfle.vv v12, v10, v8, v0.t
1250 ; ZVFH-NEXT:    vmv1r.v v0, v12
1251 ; ZVFH-NEXT:    ret
1253 ; ZVFHMIN-LABEL: fcmp_oge_vv_nxv8f16:
1254 ; ZVFHMIN:       # %bb.0:
1255 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1256 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1257 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1258 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1259 ; ZVFHMIN-NEXT:    vmfle.vv v8, v16, v12, v0.t
1260 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1261 ; ZVFHMIN-NEXT:    ret
1262   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oge", <vscale x 8 x i1> %m, i32 %evl)
1263   ret <vscale x 8 x i1> %v
1266 define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1267 ; ZVFH-LABEL: fcmp_oge_vf_nxv8f16:
1268 ; ZVFH:       # %bb.0:
1269 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1270 ; ZVFH-NEXT:    vmfge.vf v10, v8, fa0, v0.t
1271 ; ZVFH-NEXT:    vmv1r.v v0, v10
1272 ; ZVFH-NEXT:    ret
1274 ; ZVFHMIN-LABEL: fcmp_oge_vf_nxv8f16:
1275 ; ZVFHMIN:       # %bb.0:
1276 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1277 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1278 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1279 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1280 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1281 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1282 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1283 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1284 ; ZVFHMIN-NEXT:    vmfle.vv v8, v16, v12, v0.t
1285 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1286 ; ZVFHMIN-NEXT:    ret
1287   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1288   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1289   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oge", <vscale x 8 x i1> %m, i32 %evl)
1290   ret <vscale x 8 x i1> %v
1293 define <vscale x 8 x i1> @fcmp_oge_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1294 ; ZVFH-LABEL: fcmp_oge_vf_swap_nxv8f16:
1295 ; ZVFH:       # %bb.0:
1296 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1297 ; ZVFH-NEXT:    vmfle.vf v10, v8, fa0, v0.t
1298 ; ZVFH-NEXT:    vmv1r.v v0, v10
1299 ; ZVFH-NEXT:    ret
1301 ; ZVFHMIN-LABEL: fcmp_oge_vf_swap_nxv8f16:
1302 ; ZVFHMIN:       # %bb.0:
1303 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1304 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1305 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1306 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1307 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1308 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1309 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1310 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1311 ; ZVFHMIN-NEXT:    vmfle.vv v8, v12, v16, v0.t
1312 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1313 ; ZVFHMIN-NEXT:    ret
1314   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1315   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1316   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"oge", <vscale x 8 x i1> %m, i32 %evl)
1317   ret <vscale x 8 x i1> %v
1320 define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1321 ; ZVFH-LABEL: fcmp_olt_vv_nxv8f16:
1322 ; ZVFH:       # %bb.0:
1323 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1324 ; ZVFH-NEXT:    vmflt.vv v12, v8, v10, v0.t
1325 ; ZVFH-NEXT:    vmv1r.v v0, v12
1326 ; ZVFH-NEXT:    ret
1328 ; ZVFHMIN-LABEL: fcmp_olt_vv_nxv8f16:
1329 ; ZVFHMIN:       # %bb.0:
1330 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1331 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
1332 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8
1333 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1334 ; ZVFHMIN-NEXT:    vmflt.vv v8, v16, v12, v0.t
1335 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1336 ; ZVFHMIN-NEXT:    ret
1337   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"olt", <vscale x 8 x i1> %m, i32 %evl)
1338   ret <vscale x 8 x i1> %v
1341 define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1342 ; ZVFH-LABEL: fcmp_olt_vf_nxv8f16:
1343 ; ZVFH:       # %bb.0:
1344 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1345 ; ZVFH-NEXT:    vmflt.vf v10, v8, fa0, v0.t
1346 ; ZVFH-NEXT:    vmv1r.v v0, v10
1347 ; ZVFH-NEXT:    ret
1349 ; ZVFHMIN-LABEL: fcmp_olt_vf_nxv8f16:
1350 ; ZVFHMIN:       # %bb.0:
1351 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1352 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1353 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1354 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1355 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1356 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1357 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1358 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1359 ; ZVFHMIN-NEXT:    vmflt.vv v8, v12, v16, v0.t
1360 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1361 ; ZVFHMIN-NEXT:    ret
1362   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1363   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1364   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"olt", <vscale x 8 x i1> %m, i32 %evl)
1365   ret <vscale x 8 x i1> %v
1368 define <vscale x 8 x i1> @fcmp_olt_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1369 ; ZVFH-LABEL: fcmp_olt_vf_swap_nxv8f16:
1370 ; ZVFH:       # %bb.0:
1371 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1372 ; ZVFH-NEXT:    vmfgt.vf v10, v8, fa0, v0.t
1373 ; ZVFH-NEXT:    vmv1r.v v0, v10
1374 ; ZVFH-NEXT:    ret
1376 ; ZVFHMIN-LABEL: fcmp_olt_vf_swap_nxv8f16:
1377 ; ZVFHMIN:       # %bb.0:
1378 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1379 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1380 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1381 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1382 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1383 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1384 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1385 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1386 ; ZVFHMIN-NEXT:    vmflt.vv v8, v16, v12, v0.t
1387 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1388 ; ZVFHMIN-NEXT:    ret
1389   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1390   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1391   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"olt", <vscale x 8 x i1> %m, i32 %evl)
1392   ret <vscale x 8 x i1> %v
1395 define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1396 ; ZVFH-LABEL: fcmp_ole_vv_nxv8f16:
1397 ; ZVFH:       # %bb.0:
1398 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1399 ; ZVFH-NEXT:    vmfle.vv v12, v8, v10, v0.t
1400 ; ZVFH-NEXT:    vmv1r.v v0, v12
1401 ; ZVFH-NEXT:    ret
1403 ; ZVFHMIN-LABEL: fcmp_ole_vv_nxv8f16:
1404 ; ZVFHMIN:       # %bb.0:
1405 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1406 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
1407 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8
1408 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1409 ; ZVFHMIN-NEXT:    vmfle.vv v8, v16, v12, v0.t
1410 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1411 ; ZVFHMIN-NEXT:    ret
1412   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ole", <vscale x 8 x i1> %m, i32 %evl)
1413   ret <vscale x 8 x i1> %v
1416 define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1417 ; ZVFH-LABEL: fcmp_ole_vf_nxv8f16:
1418 ; ZVFH:       # %bb.0:
1419 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1420 ; ZVFH-NEXT:    vmfle.vf v10, v8, fa0, v0.t
1421 ; ZVFH-NEXT:    vmv1r.v v0, v10
1422 ; ZVFH-NEXT:    ret
1424 ; ZVFHMIN-LABEL: fcmp_ole_vf_nxv8f16:
1425 ; ZVFHMIN:       # %bb.0:
1426 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1427 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1428 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1429 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1430 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1431 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1432 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1433 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1434 ; ZVFHMIN-NEXT:    vmfle.vv v8, v12, v16, v0.t
1435 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1436 ; ZVFHMIN-NEXT:    ret
1437   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1438   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1439   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ole", <vscale x 8 x i1> %m, i32 %evl)
1440   ret <vscale x 8 x i1> %v
1443 define <vscale x 8 x i1> @fcmp_ole_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1444 ; ZVFH-LABEL: fcmp_ole_vf_swap_nxv8f16:
1445 ; ZVFH:       # %bb.0:
1446 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1447 ; ZVFH-NEXT:    vmfge.vf v10, v8, fa0, v0.t
1448 ; ZVFH-NEXT:    vmv1r.v v0, v10
1449 ; ZVFH-NEXT:    ret
1451 ; ZVFHMIN-LABEL: fcmp_ole_vf_swap_nxv8f16:
1452 ; ZVFHMIN:       # %bb.0:
1453 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1454 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1455 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1456 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1457 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1458 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1459 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1460 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1461 ; ZVFHMIN-NEXT:    vmfle.vv v8, v16, v12, v0.t
1462 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
1463 ; ZVFHMIN-NEXT:    ret
1464   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1465   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1466   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"ole", <vscale x 8 x i1> %m, i32 %evl)
1467   ret <vscale x 8 x i1> %v
1470 define <vscale x 8 x i1> @fcmp_one_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1471 ; ZVFH-LABEL: fcmp_one_vv_nxv8f16:
1472 ; ZVFH:       # %bb.0:
1473 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1474 ; ZVFH-NEXT:    vmflt.vv v12, v8, v10, v0.t
1475 ; ZVFH-NEXT:    vmflt.vv v13, v10, v8, v0.t
1476 ; ZVFH-NEXT:    vmor.mm v0, v13, v12
1477 ; ZVFH-NEXT:    ret
1479 ; ZVFHMIN-LABEL: fcmp_one_vv_nxv8f16:
1480 ; ZVFHMIN:       # %bb.0:
1481 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1482 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
1483 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8
1484 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1485 ; ZVFHMIN-NEXT:    vmflt.vv v8, v16, v12, v0.t
1486 ; ZVFHMIN-NEXT:    vmflt.vv v9, v12, v16, v0.t
1487 ; ZVFHMIN-NEXT:    vmor.mm v0, v9, v8
1488 ; ZVFHMIN-NEXT:    ret
1489   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"one", <vscale x 8 x i1> %m, i32 %evl)
1490   ret <vscale x 8 x i1> %v
1493 define <vscale x 8 x i1> @fcmp_one_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1494 ; ZVFH-LABEL: fcmp_one_vf_nxv8f16:
1495 ; ZVFH:       # %bb.0:
1496 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1497 ; ZVFH-NEXT:    vmflt.vf v10, v8, fa0, v0.t
1498 ; ZVFH-NEXT:    vmfgt.vf v11, v8, fa0, v0.t
1499 ; ZVFH-NEXT:    vmor.mm v0, v11, v10
1500 ; ZVFH-NEXT:    ret
1502 ; ZVFHMIN-LABEL: fcmp_one_vf_nxv8f16:
1503 ; ZVFHMIN:       # %bb.0:
1504 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1505 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1506 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1507 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1508 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1509 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1510 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1511 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1512 ; ZVFHMIN-NEXT:    vmflt.vv v8, v12, v16, v0.t
1513 ; ZVFHMIN-NEXT:    vmflt.vv v9, v16, v12, v0.t
1514 ; ZVFHMIN-NEXT:    vmor.mm v0, v9, v8
1515 ; ZVFHMIN-NEXT:    ret
1516   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1517   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1518   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"one", <vscale x 8 x i1> %m, i32 %evl)
1519   ret <vscale x 8 x i1> %v
1522 define <vscale x 8 x i1> @fcmp_one_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1523 ; ZVFH-LABEL: fcmp_one_vf_swap_nxv8f16:
1524 ; ZVFH:       # %bb.0:
1525 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1526 ; ZVFH-NEXT:    vmfgt.vf v10, v8, fa0, v0.t
1527 ; ZVFH-NEXT:    vmflt.vf v11, v8, fa0, v0.t
1528 ; ZVFH-NEXT:    vmor.mm v0, v11, v10
1529 ; ZVFH-NEXT:    ret
1531 ; ZVFHMIN-LABEL: fcmp_one_vf_swap_nxv8f16:
1532 ; ZVFHMIN:       # %bb.0:
1533 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1534 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1535 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1536 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1537 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1538 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1539 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1540 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1541 ; ZVFHMIN-NEXT:    vmflt.vv v8, v16, v12, v0.t
1542 ; ZVFHMIN-NEXT:    vmflt.vv v9, v12, v16, v0.t
1543 ; ZVFHMIN-NEXT:    vmor.mm v0, v9, v8
1544 ; ZVFHMIN-NEXT:    ret
1545   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1546   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1547   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"one", <vscale x 8 x i1> %m, i32 %evl)
1548   ret <vscale x 8 x i1> %v
1551 define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1552 ; ZVFH-LABEL: fcmp_ord_vv_nxv8f16:
1553 ; ZVFH:       # %bb.0:
1554 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1555 ; ZVFH-NEXT:    vmfeq.vv v12, v10, v10, v0.t
1556 ; ZVFH-NEXT:    vmfeq.vv v10, v8, v8, v0.t
1557 ; ZVFH-NEXT:    vmand.mm v0, v10, v12
1558 ; ZVFH-NEXT:    ret
1560 ; ZVFHMIN-LABEL: fcmp_ord_vv_nxv8f16:
1561 ; ZVFHMIN:       # %bb.0:
1562 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1563 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
1564 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1565 ; ZVFHMIN-NEXT:    vmfeq.vv v10, v12, v12, v0.t
1566 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1567 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1568 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1569 ; ZVFHMIN-NEXT:    vmfeq.vv v8, v12, v12, v0.t
1570 ; ZVFHMIN-NEXT:    vmand.mm v0, v8, v10
1571 ; ZVFHMIN-NEXT:    ret
1572   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ord", <vscale x 8 x i1> %m, i32 %evl)
1573   ret <vscale x 8 x i1> %v
1576 define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1577 ; ZVFH-LABEL: fcmp_ord_vf_nxv8f16:
1578 ; ZVFH:       # %bb.0:
1579 ; ZVFH-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1580 ; ZVFH-NEXT:    vfmv.v.f v10, fa0
1581 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1582 ; ZVFH-NEXT:    vmfeq.vf v12, v10, fa0, v0.t
1583 ; ZVFH-NEXT:    vmfeq.vv v10, v8, v8, v0.t
1584 ; ZVFH-NEXT:    vmand.mm v0, v10, v12
1585 ; ZVFH-NEXT:    ret
1587 ; ZVFHMIN-LABEL: fcmp_ord_vf_nxv8f16:
1588 ; ZVFHMIN:       # %bb.0:
1589 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1590 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1591 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1592 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1593 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1594 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1595 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1596 ; ZVFHMIN-NEXT:    vmfeq.vv v8, v12, v12, v0.t
1597 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1598 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
1599 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1600 ; ZVFHMIN-NEXT:    vmfeq.vv v9, v12, v12, v0.t
1601 ; ZVFHMIN-NEXT:    vmand.mm v0, v8, v9
1602 ; ZVFHMIN-NEXT:    ret
1603   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1604   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1605   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ord", <vscale x 8 x i1> %m, i32 %evl)
1606   ret <vscale x 8 x i1> %v
1609 define <vscale x 8 x i1> @fcmp_ord_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1610 ; ZVFH-LABEL: fcmp_ord_vf_swap_nxv8f16:
1611 ; ZVFH:       # %bb.0:
1612 ; ZVFH-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1613 ; ZVFH-NEXT:    vfmv.v.f v10, fa0
1614 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1615 ; ZVFH-NEXT:    vmfeq.vf v12, v10, fa0, v0.t
1616 ; ZVFH-NEXT:    vmfeq.vv v10, v8, v8, v0.t
1617 ; ZVFH-NEXT:    vmand.mm v0, v12, v10
1618 ; ZVFH-NEXT:    ret
1620 ; ZVFHMIN-LABEL: fcmp_ord_vf_swap_nxv8f16:
1621 ; ZVFHMIN:       # %bb.0:
1622 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1623 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1624 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1625 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1626 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1627 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1628 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1629 ; ZVFHMIN-NEXT:    vmfeq.vv v8, v12, v12, v0.t
1630 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1631 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
1632 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1633 ; ZVFHMIN-NEXT:    vmfeq.vv v9, v12, v12, v0.t
1634 ; ZVFHMIN-NEXT:    vmand.mm v0, v9, v8
1635 ; ZVFHMIN-NEXT:    ret
1636   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1637   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1638   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"ord", <vscale x 8 x i1> %m, i32 %evl)
1639   ret <vscale x 8 x i1> %v
1642 define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1643 ; ZVFH-LABEL: fcmp_ueq_vv_nxv8f16:
1644 ; ZVFH:       # %bb.0:
1645 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1646 ; ZVFH-NEXT:    vmflt.vv v12, v8, v10, v0.t
1647 ; ZVFH-NEXT:    vmflt.vv v13, v10, v8, v0.t
1648 ; ZVFH-NEXT:    vmnor.mm v0, v13, v12
1649 ; ZVFH-NEXT:    ret
1651 ; ZVFHMIN-LABEL: fcmp_ueq_vv_nxv8f16:
1652 ; ZVFHMIN:       # %bb.0:
1653 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1654 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
1655 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8
1656 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1657 ; ZVFHMIN-NEXT:    vmflt.vv v8, v16, v12, v0.t
1658 ; ZVFHMIN-NEXT:    vmflt.vv v9, v12, v16, v0.t
1659 ; ZVFHMIN-NEXT:    vmnor.mm v0, v9, v8
1660 ; ZVFHMIN-NEXT:    ret
1661   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ueq", <vscale x 8 x i1> %m, i32 %evl)
1662   ret <vscale x 8 x i1> %v
1665 define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1666 ; ZVFH-LABEL: fcmp_ueq_vf_nxv8f16:
1667 ; ZVFH:       # %bb.0:
1668 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1669 ; ZVFH-NEXT:    vmflt.vf v10, v8, fa0, v0.t
1670 ; ZVFH-NEXT:    vmfgt.vf v11, v8, fa0, v0.t
1671 ; ZVFH-NEXT:    vmnor.mm v0, v11, v10
1672 ; ZVFH-NEXT:    ret
1674 ; ZVFHMIN-LABEL: fcmp_ueq_vf_nxv8f16:
1675 ; ZVFHMIN:       # %bb.0:
1676 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1677 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1678 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1679 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1680 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1681 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1682 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1683 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1684 ; ZVFHMIN-NEXT:    vmflt.vv v8, v12, v16, v0.t
1685 ; ZVFHMIN-NEXT:    vmflt.vv v9, v16, v12, v0.t
1686 ; ZVFHMIN-NEXT:    vmnor.mm v0, v9, v8
1687 ; ZVFHMIN-NEXT:    ret
1688   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1689   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1690   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ueq", <vscale x 8 x i1> %m, i32 %evl)
1691   ret <vscale x 8 x i1> %v
1694 define <vscale x 8 x i1> @fcmp_ueq_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1695 ; ZVFH-LABEL: fcmp_ueq_vf_swap_nxv8f16:
1696 ; ZVFH:       # %bb.0:
1697 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1698 ; ZVFH-NEXT:    vmfgt.vf v10, v8, fa0, v0.t
1699 ; ZVFH-NEXT:    vmflt.vf v11, v8, fa0, v0.t
1700 ; ZVFH-NEXT:    vmnor.mm v0, v11, v10
1701 ; ZVFH-NEXT:    ret
1703 ; ZVFHMIN-LABEL: fcmp_ueq_vf_swap_nxv8f16:
1704 ; ZVFHMIN:       # %bb.0:
1705 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1706 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1707 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1708 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1709 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1710 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1711 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1712 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1713 ; ZVFHMIN-NEXT:    vmflt.vv v8, v16, v12, v0.t
1714 ; ZVFHMIN-NEXT:    vmflt.vv v9, v12, v16, v0.t
1715 ; ZVFHMIN-NEXT:    vmnor.mm v0, v9, v8
1716 ; ZVFHMIN-NEXT:    ret
1717   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1718   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1719   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"ueq", <vscale x 8 x i1> %m, i32 %evl)
1720   ret <vscale x 8 x i1> %v
1723 define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1724 ; ZVFH-LABEL: fcmp_ugt_vv_nxv8f16:
1725 ; ZVFH:       # %bb.0:
1726 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1727 ; ZVFH-NEXT:    vmfle.vv v12, v8, v10, v0.t
1728 ; ZVFH-NEXT:    vmnot.m v0, v12
1729 ; ZVFH-NEXT:    ret
1731 ; ZVFHMIN-LABEL: fcmp_ugt_vv_nxv8f16:
1732 ; ZVFHMIN:       # %bb.0:
1733 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1734 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
1735 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8
1736 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1737 ; ZVFHMIN-NEXT:    vmfle.vv v8, v16, v12, v0.t
1738 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
1739 ; ZVFHMIN-NEXT:    ret
1740   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
1741   ret <vscale x 8 x i1> %v
1744 define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1745 ; ZVFH-LABEL: fcmp_ugt_vf_nxv8f16:
1746 ; ZVFH:       # %bb.0:
1747 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1748 ; ZVFH-NEXT:    vmfle.vf v10, v8, fa0, v0.t
1749 ; ZVFH-NEXT:    vmnot.m v0, v10
1750 ; ZVFH-NEXT:    ret
1752 ; ZVFHMIN-LABEL: fcmp_ugt_vf_nxv8f16:
1753 ; ZVFHMIN:       # %bb.0:
1754 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1755 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1756 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1757 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1758 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1759 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1760 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1761 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1762 ; ZVFHMIN-NEXT:    vmfle.vv v8, v12, v16, v0.t
1763 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
1764 ; ZVFHMIN-NEXT:    ret
1765   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1766   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1767   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
1768   ret <vscale x 8 x i1> %v
1771 define <vscale x 8 x i1> @fcmp_ugt_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1772 ; ZVFH-LABEL: fcmp_ugt_vf_swap_nxv8f16:
1773 ; ZVFH:       # %bb.0:
1774 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1775 ; ZVFH-NEXT:    vmfge.vf v10, v8, fa0, v0.t
1776 ; ZVFH-NEXT:    vmnot.m v0, v10
1777 ; ZVFH-NEXT:    ret
1779 ; ZVFHMIN-LABEL: fcmp_ugt_vf_swap_nxv8f16:
1780 ; ZVFHMIN:       # %bb.0:
1781 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1782 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1783 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1784 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1785 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1786 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1787 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1788 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1789 ; ZVFHMIN-NEXT:    vmfle.vv v8, v16, v12, v0.t
1790 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
1791 ; ZVFHMIN-NEXT:    ret
1792   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1793   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1794   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
1795   ret <vscale x 8 x i1> %v
1798 define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1799 ; ZVFH-LABEL: fcmp_uge_vv_nxv8f16:
1800 ; ZVFH:       # %bb.0:
1801 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1802 ; ZVFH-NEXT:    vmflt.vv v12, v8, v10, v0.t
1803 ; ZVFH-NEXT:    vmnot.m v0, v12
1804 ; ZVFH-NEXT:    ret
1806 ; ZVFHMIN-LABEL: fcmp_uge_vv_nxv8f16:
1807 ; ZVFHMIN:       # %bb.0:
1808 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1809 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
1810 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8
1811 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1812 ; ZVFHMIN-NEXT:    vmflt.vv v8, v16, v12, v0.t
1813 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
1814 ; ZVFHMIN-NEXT:    ret
1815   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
1816   ret <vscale x 8 x i1> %v
1819 define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1820 ; ZVFH-LABEL: fcmp_uge_vf_nxv8f16:
1821 ; ZVFH:       # %bb.0:
1822 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1823 ; ZVFH-NEXT:    vmflt.vf v10, v8, fa0, v0.t
1824 ; ZVFH-NEXT:    vmnot.m v0, v10
1825 ; ZVFH-NEXT:    ret
1827 ; ZVFHMIN-LABEL: fcmp_uge_vf_nxv8f16:
1828 ; ZVFHMIN:       # %bb.0:
1829 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1830 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1831 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1832 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1833 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1834 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1835 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1836 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1837 ; ZVFHMIN-NEXT:    vmflt.vv v8, v12, v16, v0.t
1838 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
1839 ; ZVFHMIN-NEXT:    ret
1840   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1841   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1842   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
1843   ret <vscale x 8 x i1> %v
1846 define <vscale x 8 x i1> @fcmp_uge_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1847 ; ZVFH-LABEL: fcmp_uge_vf_swap_nxv8f16:
1848 ; ZVFH:       # %bb.0:
1849 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1850 ; ZVFH-NEXT:    vmfgt.vf v10, v8, fa0, v0.t
1851 ; ZVFH-NEXT:    vmnot.m v0, v10
1852 ; ZVFH-NEXT:    ret
1854 ; ZVFHMIN-LABEL: fcmp_uge_vf_swap_nxv8f16:
1855 ; ZVFHMIN:       # %bb.0:
1856 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1857 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1858 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1859 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1860 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1861 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1862 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1863 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1864 ; ZVFHMIN-NEXT:    vmflt.vv v8, v16, v12, v0.t
1865 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
1866 ; ZVFHMIN-NEXT:    ret
1867   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1868   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1869   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
1870   ret <vscale x 8 x i1> %v
1873 define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1874 ; ZVFH-LABEL: fcmp_ult_vv_nxv8f16:
1875 ; ZVFH:       # %bb.0:
1876 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1877 ; ZVFH-NEXT:    vmfle.vv v12, v10, v8, v0.t
1878 ; ZVFH-NEXT:    vmnot.m v0, v12
1879 ; ZVFH-NEXT:    ret
1881 ; ZVFHMIN-LABEL: fcmp_ult_vv_nxv8f16:
1882 ; ZVFHMIN:       # %bb.0:
1883 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1884 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1885 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1886 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1887 ; ZVFHMIN-NEXT:    vmfle.vv v8, v16, v12, v0.t
1888 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
1889 ; ZVFHMIN-NEXT:    ret
1890   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
1891   ret <vscale x 8 x i1> %v
1894 define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1895 ; ZVFH-LABEL: fcmp_ult_vf_nxv8f16:
1896 ; ZVFH:       # %bb.0:
1897 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1898 ; ZVFH-NEXT:    vmfge.vf v10, v8, fa0, v0.t
1899 ; ZVFH-NEXT:    vmnot.m v0, v10
1900 ; ZVFH-NEXT:    ret
1902 ; ZVFHMIN-LABEL: fcmp_ult_vf_nxv8f16:
1903 ; ZVFHMIN:       # %bb.0:
1904 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1905 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1906 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1907 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1908 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1909 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1910 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1911 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1912 ; ZVFHMIN-NEXT:    vmfle.vv v8, v16, v12, v0.t
1913 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
1914 ; ZVFHMIN-NEXT:    ret
1915   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1916   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1917   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
1918   ret <vscale x 8 x i1> %v
1921 define <vscale x 8 x i1> @fcmp_ult_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1922 ; ZVFH-LABEL: fcmp_ult_vf_swap_nxv8f16:
1923 ; ZVFH:       # %bb.0:
1924 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1925 ; ZVFH-NEXT:    vmfle.vf v10, v8, fa0, v0.t
1926 ; ZVFH-NEXT:    vmnot.m v0, v10
1927 ; ZVFH-NEXT:    ret
1929 ; ZVFHMIN-LABEL: fcmp_ult_vf_swap_nxv8f16:
1930 ; ZVFHMIN:       # %bb.0:
1931 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1932 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1933 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1934 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1935 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1936 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1937 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1938 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1939 ; ZVFHMIN-NEXT:    vmfle.vv v8, v12, v16, v0.t
1940 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
1941 ; ZVFHMIN-NEXT:    ret
1942   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1943   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1944   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
1945   ret <vscale x 8 x i1> %v
1948 define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1949 ; ZVFH-LABEL: fcmp_ule_vv_nxv8f16:
1950 ; ZVFH:       # %bb.0:
1951 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1952 ; ZVFH-NEXT:    vmflt.vv v12, v10, v8, v0.t
1953 ; ZVFH-NEXT:    vmnot.m v0, v12
1954 ; ZVFH-NEXT:    ret
1956 ; ZVFHMIN-LABEL: fcmp_ule_vv_nxv8f16:
1957 ; ZVFHMIN:       # %bb.0:
1958 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
1959 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1960 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1961 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1962 ; ZVFHMIN-NEXT:    vmflt.vv v8, v16, v12, v0.t
1963 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
1964 ; ZVFHMIN-NEXT:    ret
1965   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ule", <vscale x 8 x i1> %m, i32 %evl)
1966   ret <vscale x 8 x i1> %v
1969 define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1970 ; ZVFH-LABEL: fcmp_ule_vf_nxv8f16:
1971 ; ZVFH:       # %bb.0:
1972 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1973 ; ZVFH-NEXT:    vmfgt.vf v10, v8, fa0, v0.t
1974 ; ZVFH-NEXT:    vmnot.m v0, v10
1975 ; ZVFH-NEXT:    ret
1977 ; ZVFHMIN-LABEL: fcmp_ule_vf_nxv8f16:
1978 ; ZVFHMIN:       # %bb.0:
1979 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
1980 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
1981 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
1982 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1983 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
1984 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
1985 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
1986 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1987 ; ZVFHMIN-NEXT:    vmflt.vv v8, v16, v12, v0.t
1988 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
1989 ; ZVFHMIN-NEXT:    ret
1990   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
1991   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
1992   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ule", <vscale x 8 x i1> %m, i32 %evl)
1993   ret <vscale x 8 x i1> %v
1996 define <vscale x 8 x i1> @fcmp_ule_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1997 ; ZVFH-LABEL: fcmp_ule_vf_swap_nxv8f16:
1998 ; ZVFH:       # %bb.0:
1999 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2000 ; ZVFH-NEXT:    vmflt.vf v10, v8, fa0, v0.t
2001 ; ZVFH-NEXT:    vmnot.m v0, v10
2002 ; ZVFH-NEXT:    ret
2004 ; ZVFHMIN-LABEL: fcmp_ule_vf_swap_nxv8f16:
2005 ; ZVFHMIN:       # %bb.0:
2006 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
2007 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
2008 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
2009 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
2010 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
2011 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
2012 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
2013 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2014 ; ZVFHMIN-NEXT:    vmflt.vv v8, v12, v16, v0.t
2015 ; ZVFHMIN-NEXT:    vmnot.m v0, v8
2016 ; ZVFHMIN-NEXT:    ret
2017   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2018   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2019   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"ule", <vscale x 8 x i1> %m, i32 %evl)
2020   ret <vscale x 8 x i1> %v
2023 define <vscale x 8 x i1> @fcmp_une_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2024 ; ZVFH-LABEL: fcmp_une_vv_nxv8f16:
2025 ; ZVFH:       # %bb.0:
2026 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2027 ; ZVFH-NEXT:    vmfne.vv v12, v8, v10, v0.t
2028 ; ZVFH-NEXT:    vmv1r.v v0, v12
2029 ; ZVFH-NEXT:    ret
2031 ; ZVFHMIN-LABEL: fcmp_une_vv_nxv8f16:
2032 ; ZVFHMIN:       # %bb.0:
2033 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
2034 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
2035 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8
2036 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2037 ; ZVFHMIN-NEXT:    vmfne.vv v8, v16, v12, v0.t
2038 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
2039 ; ZVFHMIN-NEXT:    ret
2040   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"une", <vscale x 8 x i1> %m, i32 %evl)
2041   ret <vscale x 8 x i1> %v
2044 define <vscale x 8 x i1> @fcmp_une_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2045 ; ZVFH-LABEL: fcmp_une_vf_nxv8f16:
2046 ; ZVFH:       # %bb.0:
2047 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2048 ; ZVFH-NEXT:    vmfne.vf v10, v8, fa0, v0.t
2049 ; ZVFH-NEXT:    vmv1r.v v0, v10
2050 ; ZVFH-NEXT:    ret
2052 ; ZVFHMIN-LABEL: fcmp_une_vf_nxv8f16:
2053 ; ZVFHMIN:       # %bb.0:
2054 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
2055 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
2056 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
2057 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
2058 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
2059 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
2060 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
2061 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2062 ; ZVFHMIN-NEXT:    vmfne.vv v8, v12, v16, v0.t
2063 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
2064 ; ZVFHMIN-NEXT:    ret
2065   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2066   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2067   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"une", <vscale x 8 x i1> %m, i32 %evl)
2068   ret <vscale x 8 x i1> %v
2071 define <vscale x 8 x i1> @fcmp_une_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2072 ; ZVFH-LABEL: fcmp_une_vf_swap_nxv8f16:
2073 ; ZVFH:       # %bb.0:
2074 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2075 ; ZVFH-NEXT:    vmfne.vf v10, v8, fa0, v0.t
2076 ; ZVFH-NEXT:    vmv1r.v v0, v10
2077 ; ZVFH-NEXT:    ret
2079 ; ZVFHMIN-LABEL: fcmp_une_vf_swap_nxv8f16:
2080 ; ZVFHMIN:       # %bb.0:
2081 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
2082 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
2083 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
2084 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
2085 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
2086 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
2087 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v10
2088 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2089 ; ZVFHMIN-NEXT:    vmfne.vv v8, v16, v12, v0.t
2090 ; ZVFHMIN-NEXT:    vmv1r.v v0, v8
2091 ; ZVFHMIN-NEXT:    ret
2092   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2093   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2094   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"une", <vscale x 8 x i1> %m, i32 %evl)
2095   ret <vscale x 8 x i1> %v
2098 define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2099 ; ZVFH-LABEL: fcmp_uno_vv_nxv8f16:
2100 ; ZVFH:       # %bb.0:
2101 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2102 ; ZVFH-NEXT:    vmfne.vv v12, v10, v10, v0.t
2103 ; ZVFH-NEXT:    vmfne.vv v10, v8, v8, v0.t
2104 ; ZVFH-NEXT:    vmor.mm v0, v10, v12
2105 ; ZVFH-NEXT:    ret
2107 ; ZVFHMIN-LABEL: fcmp_uno_vv_nxv8f16:
2108 ; ZVFHMIN:       # %bb.0:
2109 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
2110 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
2111 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2112 ; ZVFHMIN-NEXT:    vmfne.vv v10, v12, v12, v0.t
2113 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
2114 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
2115 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2116 ; ZVFHMIN-NEXT:    vmfne.vv v8, v12, v12, v0.t
2117 ; ZVFHMIN-NEXT:    vmor.mm v0, v8, v10
2118 ; ZVFHMIN-NEXT:    ret
2119   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uno", <vscale x 8 x i1> %m, i32 %evl)
2120   ret <vscale x 8 x i1> %v
2123 define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2124 ; ZVFH-LABEL: fcmp_uno_vf_nxv8f16:
2125 ; ZVFH:       # %bb.0:
2126 ; ZVFH-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
2127 ; ZVFH-NEXT:    vfmv.v.f v10, fa0
2128 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2129 ; ZVFH-NEXT:    vmfne.vf v12, v10, fa0, v0.t
2130 ; ZVFH-NEXT:    vmfne.vv v10, v8, v8, v0.t
2131 ; ZVFH-NEXT:    vmor.mm v0, v10, v12
2132 ; ZVFH-NEXT:    ret
2134 ; ZVFHMIN-LABEL: fcmp_uno_vf_nxv8f16:
2135 ; ZVFHMIN:       # %bb.0:
2136 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
2137 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
2138 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
2139 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
2140 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
2141 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
2142 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2143 ; ZVFHMIN-NEXT:    vmfne.vv v8, v12, v12, v0.t
2144 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
2145 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
2146 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2147 ; ZVFHMIN-NEXT:    vmfne.vv v9, v12, v12, v0.t
2148 ; ZVFHMIN-NEXT:    vmor.mm v0, v8, v9
2149 ; ZVFHMIN-NEXT:    ret
2150   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2151   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2152   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uno", <vscale x 8 x i1> %m, i32 %evl)
2153   ret <vscale x 8 x i1> %v
2156 define <vscale x 8 x i1> @fcmp_uno_vf_swap_nxv8f16(<vscale x 8 x half> %va, half %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2157 ; ZVFH-LABEL: fcmp_uno_vf_swap_nxv8f16:
2158 ; ZVFH:       # %bb.0:
2159 ; ZVFH-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
2160 ; ZVFH-NEXT:    vfmv.v.f v10, fa0
2161 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
2162 ; ZVFH-NEXT:    vmfne.vf v12, v10, fa0, v0.t
2163 ; ZVFH-NEXT:    vmfne.vv v10, v8, v8, v0.t
2164 ; ZVFH-NEXT:    vmor.mm v0, v12, v10
2165 ; ZVFH-NEXT:    ret
2167 ; ZVFHMIN-LABEL: fcmp_uno_vf_swap_nxv8f16:
2168 ; ZVFHMIN:       # %bb.0:
2169 ; ZVFHMIN-NEXT:    fcvt.s.h fa5, fa0
2170 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e32, m4, ta, ma
2171 ; ZVFHMIN-NEXT:    vfmv.v.f v12, fa5
2172 ; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
2173 ; ZVFHMIN-NEXT:    vfncvt.f.f.w v10, v12
2174 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
2175 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2176 ; ZVFHMIN-NEXT:    vmfne.vv v8, v12, v12, v0.t
2177 ; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m2, ta, ma
2178 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
2179 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2180 ; ZVFHMIN-NEXT:    vmfne.vv v9, v12, v12, v0.t
2181 ; ZVFHMIN-NEXT:    vmor.mm v0, v9, v8
2182 ; ZVFHMIN-NEXT:    ret
2183   %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2184   %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2185   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f16(<vscale x 8 x half> %vb, <vscale x 8 x half> %va, metadata !"uno", <vscale x 8 x i1> %m, i32 %evl)
2186   ret <vscale x 8 x i1> %v
2189 declare <vscale x 64 x i1> @llvm.vp.fcmp.nxv64f16(<vscale x 64 x half>, <vscale x 64 x half>, metadata, <vscale x 64 x i1>, i32)
2191 define <vscale x 64 x i1> @fcmp_oeq_vv_nxv64f16(<vscale x 64 x half> %va, <vscale x 64 x half> %vb, <vscale x 64 x i1> %m, i32 zeroext %evl) {
2192 ; ZVFH-LABEL: fcmp_oeq_vv_nxv64f16:
2193 ; ZVFH:       # %bb.0:
2194 ; ZVFH-NEXT:    addi sp, sp, -16
2195 ; ZVFH-NEXT:    .cfi_def_cfa_offset 16
2196 ; ZVFH-NEXT:    csrr a1, vlenb
2197 ; ZVFH-NEXT:    slli a1, a1, 4
2198 ; ZVFH-NEXT:    sub sp, sp, a1
2199 ; ZVFH-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x10, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 16 * vlenb
2200 ; ZVFH-NEXT:    vmv1r.v v24, v0
2201 ; ZVFH-NEXT:    csrr a1, vlenb
2202 ; ZVFH-NEXT:    slli a1, a1, 3
2203 ; ZVFH-NEXT:    add a1, sp, a1
2204 ; ZVFH-NEXT:    addi a1, a1, 16
2205 ; ZVFH-NEXT:    vs8r.v v8, (a1) # Unknown-size Folded Spill
2206 ; ZVFH-NEXT:    csrr a3, vlenb
2207 ; ZVFH-NEXT:    srli a1, a3, 1
2208 ; ZVFH-NEXT:    slli a4, a3, 3
2209 ; ZVFH-NEXT:    add a4, a0, a4
2210 ; ZVFH-NEXT:    vl8re16.v v8, (a4)
2211 ; ZVFH-NEXT:    slli a3, a3, 2
2212 ; ZVFH-NEXT:    sub a4, a2, a3
2213 ; ZVFH-NEXT:    sltu a5, a2, a4
2214 ; ZVFH-NEXT:    addi a5, a5, -1
2215 ; ZVFH-NEXT:    vl8re16.v v0, (a0)
2216 ; ZVFH-NEXT:    addi a0, sp, 16
2217 ; ZVFH-NEXT:    vs8r.v v0, (a0) # Unknown-size Folded Spill
2218 ; ZVFH-NEXT:    vsetvli a0, zero, e8, m1, ta, ma
2219 ; ZVFH-NEXT:    vslidedown.vx v0, v24, a1
2220 ; ZVFH-NEXT:    and a4, a5, a4
2221 ; ZVFH-NEXT:    vsetvli zero, a4, e16, m8, ta, ma
2222 ; ZVFH-NEXT:    vmfeq.vv v7, v16, v8, v0.t
2223 ; ZVFH-NEXT:    bltu a2, a3, .LBB85_2
2224 ; ZVFH-NEXT:  # %bb.1:
2225 ; ZVFH-NEXT:    mv a2, a3
2226 ; ZVFH-NEXT:  .LBB85_2:
2227 ; ZVFH-NEXT:    vmv1r.v v0, v24
2228 ; ZVFH-NEXT:    csrr a0, vlenb
2229 ; ZVFH-NEXT:    slli a0, a0, 3
2230 ; ZVFH-NEXT:    add a0, sp, a0
2231 ; ZVFH-NEXT:    addi a0, a0, 16
2232 ; ZVFH-NEXT:    vl8r.v v8, (a0) # Unknown-size Folded Reload
2233 ; ZVFH-NEXT:    addi a0, sp, 16
2234 ; ZVFH-NEXT:    vl8r.v v24, (a0) # Unknown-size Folded Reload
2235 ; ZVFH-NEXT:    vsetvli zero, a2, e16, m8, ta, ma
2236 ; ZVFH-NEXT:    vmfeq.vv v16, v8, v24, v0.t
2237 ; ZVFH-NEXT:    add a0, a1, a1
2238 ; ZVFH-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
2239 ; ZVFH-NEXT:    vslideup.vx v16, v7, a1
2240 ; ZVFH-NEXT:    vmv.v.v v0, v16
2241 ; ZVFH-NEXT:    csrr a0, vlenb
2242 ; ZVFH-NEXT:    slli a0, a0, 4
2243 ; ZVFH-NEXT:    add sp, sp, a0
2244 ; ZVFH-NEXT:    addi sp, sp, 16
2245 ; ZVFH-NEXT:    ret
2247 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv64f16:
2248 ; ZVFHMIN:       # %bb.0:
2249 ; ZVFHMIN-NEXT:    addi sp, sp, -16
2250 ; ZVFHMIN-NEXT:    .cfi_def_cfa_offset 16
2251 ; ZVFHMIN-NEXT:    csrr a1, vlenb
2252 ; ZVFHMIN-NEXT:    li a3, 34
2253 ; ZVFHMIN-NEXT:    mul a1, a1, a3
2254 ; ZVFHMIN-NEXT:    sub sp, sp, a1
2255 ; ZVFHMIN-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x22, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 34 * vlenb
2256 ; ZVFHMIN-NEXT:    vmv8r.v v24, v16
2257 ; ZVFHMIN-NEXT:    csrr a1, vlenb
2258 ; ZVFHMIN-NEXT:    li a3, 18
2259 ; ZVFHMIN-NEXT:    mul a1, a1, a3
2260 ; ZVFHMIN-NEXT:    add a1, sp, a1
2261 ; ZVFHMIN-NEXT:    addi a1, a1, 16
2262 ; ZVFHMIN-NEXT:    vs8r.v v8, (a1) # Unknown-size Folded Spill
2263 ; ZVFHMIN-NEXT:    csrr a3, vlenb
2264 ; ZVFHMIN-NEXT:    slli a1, a3, 3
2265 ; ZVFHMIN-NEXT:    add a1, a0, a1
2266 ; ZVFHMIN-NEXT:    vl8re16.v v16, (a1)
2267 ; ZVFHMIN-NEXT:    slli a5, a3, 2
2268 ; ZVFHMIN-NEXT:    sub a1, a2, a5
2269 ; ZVFHMIN-NEXT:    sltu a4, a2, a1
2270 ; ZVFHMIN-NEXT:    addi a4, a4, -1
2271 ; ZVFHMIN-NEXT:    and a6, a4, a1
2272 ; ZVFHMIN-NEXT:    slli a4, a3, 1
2273 ; ZVFHMIN-NEXT:    sub a1, a6, a4
2274 ; ZVFHMIN-NEXT:    sltu a7, a6, a1
2275 ; ZVFHMIN-NEXT:    addi a7, a7, -1
2276 ; ZVFHMIN-NEXT:    and a7, a7, a1
2277 ; ZVFHMIN-NEXT:    srli a1, a3, 1
2278 ; ZVFHMIN-NEXT:    csrr t0, vlenb
2279 ; ZVFHMIN-NEXT:    add t0, sp, t0
2280 ; ZVFHMIN-NEXT:    addi t0, t0, 16
2281 ; ZVFHMIN-NEXT:    vs1r.v v0, (t0) # Unknown-size Folded Spill
2282 ; ZVFHMIN-NEXT:    vsetvli t0, zero, e8, m1, ta, ma
2283 ; ZVFHMIN-NEXT:    vslidedown.vx v8, v0, a1
2284 ; ZVFHMIN-NEXT:    srli a3, a3, 2
2285 ; ZVFHMIN-NEXT:    addi t0, sp, 16
2286 ; ZVFHMIN-NEXT:    vs1r.v v8, (t0) # Unknown-size Folded Spill
2287 ; ZVFHMIN-NEXT:    vsetvli t0, zero, e8, mf2, ta, ma
2288 ; ZVFHMIN-NEXT:    vslidedown.vx v0, v8, a3
2289 ; ZVFHMIN-NEXT:    vl8re16.v v8, (a0)
2290 ; ZVFHMIN-NEXT:    csrr a0, vlenb
2291 ; ZVFHMIN-NEXT:    li t0, 26
2292 ; ZVFHMIN-NEXT:    mul a0, a0, t0
2293 ; ZVFHMIN-NEXT:    add a0, sp, a0
2294 ; ZVFHMIN-NEXT:    addi a0, a0, 16
2295 ; ZVFHMIN-NEXT:    vs8r.v v8, (a0) # Unknown-size Folded Spill
2296 ; ZVFHMIN-NEXT:    csrr a0, vlenb
2297 ; ZVFHMIN-NEXT:    slli a0, a0, 1
2298 ; ZVFHMIN-NEXT:    add a0, sp, a0
2299 ; ZVFHMIN-NEXT:    addi a0, a0, 16
2300 ; ZVFHMIN-NEXT:    vs8r.v v16, (a0) # Unknown-size Folded Spill
2301 ; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2302 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v20
2303 ; ZVFHMIN-NEXT:    vmv4r.v v16, v24
2304 ; ZVFHMIN-NEXT:    csrr a0, vlenb
2305 ; ZVFHMIN-NEXT:    li t0, 10
2306 ; ZVFHMIN-NEXT:    mul a0, a0, t0
2307 ; ZVFHMIN-NEXT:    add a0, sp, a0
2308 ; ZVFHMIN-NEXT:    addi a0, a0, 16
2309 ; ZVFHMIN-NEXT:    vs8r.v v16, (a0) # Unknown-size Folded Spill
2310 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v28
2311 ; ZVFHMIN-NEXT:    vsetvli zero, a7, e32, m8, ta, ma
2312 ; ZVFHMIN-NEXT:    vmfeq.vv v26, v16, v8, v0.t
2313 ; ZVFHMIN-NEXT:    bltu a6, a4, .LBB85_2
2314 ; ZVFHMIN-NEXT:  # %bb.1:
2315 ; ZVFHMIN-NEXT:    mv a6, a4
2316 ; ZVFHMIN-NEXT:  .LBB85_2:
2317 ; ZVFHMIN-NEXT:    csrr a0, vlenb
2318 ; ZVFHMIN-NEXT:    slli a0, a0, 1
2319 ; ZVFHMIN-NEXT:    add a0, sp, a0
2320 ; ZVFHMIN-NEXT:    addi a0, a0, 16
2321 ; ZVFHMIN-NEXT:    vl8r.v v16, (a0) # Unknown-size Folded Reload
2322 ; ZVFHMIN-NEXT:    vsetvli a0, zero, e16, m4, ta, ma
2323 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v16
2324 ; ZVFHMIN-NEXT:    csrr a0, vlenb
2325 ; ZVFHMIN-NEXT:    li a7, 10
2326 ; ZVFHMIN-NEXT:    mul a0, a0, a7
2327 ; ZVFHMIN-NEXT:    add a0, sp, a0
2328 ; ZVFHMIN-NEXT:    addi a0, a0, 16
2329 ; ZVFHMIN-NEXT:    vl8r.v v0, (a0) # Unknown-size Folded Reload
2330 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v0
2331 ; ZVFHMIN-NEXT:    addi a0, sp, 16
2332 ; ZVFHMIN-NEXT:    vl1r.v v0, (a0) # Unknown-size Folded Reload
2333 ; ZVFHMIN-NEXT:    vsetvli zero, a6, e32, m8, ta, ma
2334 ; ZVFHMIN-NEXT:    vmfeq.vv v6, v16, v8, v0.t
2335 ; ZVFHMIN-NEXT:    add a0, a3, a3
2336 ; ZVFHMIN-NEXT:    bltu a2, a5, .LBB85_4
2337 ; ZVFHMIN-NEXT:  # %bb.3:
2338 ; ZVFHMIN-NEXT:    mv a2, a5
2339 ; ZVFHMIN-NEXT:  .LBB85_4:
2340 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
2341 ; ZVFHMIN-NEXT:    vslideup.vx v6, v26, a3
2342 ; ZVFHMIN-NEXT:    sub a5, a2, a4
2343 ; ZVFHMIN-NEXT:    sltu a6, a2, a5
2344 ; ZVFHMIN-NEXT:    addi a6, a6, -1
2345 ; ZVFHMIN-NEXT:    and a5, a6, a5
2346 ; ZVFHMIN-NEXT:    csrr a6, vlenb
2347 ; ZVFHMIN-NEXT:    add a6, sp, a6
2348 ; ZVFHMIN-NEXT:    addi a6, a6, 16
2349 ; ZVFHMIN-NEXT:    vl1r.v v8, (a6) # Unknown-size Folded Reload
2350 ; ZVFHMIN-NEXT:    vmv1r.v v7, v8
2351 ; ZVFHMIN-NEXT:    vsetvli a6, zero, e8, mf2, ta, ma
2352 ; ZVFHMIN-NEXT:    vslidedown.vx v0, v8, a3
2353 ; ZVFHMIN-NEXT:    csrr a6, vlenb
2354 ; ZVFHMIN-NEXT:    li a7, 18
2355 ; ZVFHMIN-NEXT:    mul a6, a6, a7
2356 ; ZVFHMIN-NEXT:    add a6, sp, a6
2357 ; ZVFHMIN-NEXT:    addi a6, a6, 16
2358 ; ZVFHMIN-NEXT:    vl8r.v v24, (a6) # Unknown-size Folded Reload
2359 ; ZVFHMIN-NEXT:    vsetvli a6, zero, e16, m4, ta, ma
2360 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v28
2361 ; ZVFHMIN-NEXT:    csrr a6, vlenb
2362 ; ZVFHMIN-NEXT:    li a7, 10
2363 ; ZVFHMIN-NEXT:    mul a6, a6, a7
2364 ; ZVFHMIN-NEXT:    add a6, sp, a6
2365 ; ZVFHMIN-NEXT:    addi a6, a6, 16
2366 ; ZVFHMIN-NEXT:    vs8r.v v8, (a6) # Unknown-size Folded Spill
2367 ; ZVFHMIN-NEXT:    csrr a6, vlenb
2368 ; ZVFHMIN-NEXT:    li a7, 26
2369 ; ZVFHMIN-NEXT:    mul a6, a6, a7
2370 ; ZVFHMIN-NEXT:    add a6, sp, a6
2371 ; ZVFHMIN-NEXT:    addi a6, a6, 16
2372 ; ZVFHMIN-NEXT:    vl8r.v v16, (a6) # Unknown-size Folded Reload
2373 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v20
2374 ; ZVFHMIN-NEXT:    csrr a6, vlenb
2375 ; ZVFHMIN-NEXT:    li a7, 10
2376 ; ZVFHMIN-NEXT:    mul a6, a6, a7
2377 ; ZVFHMIN-NEXT:    add a6, sp, a6
2378 ; ZVFHMIN-NEXT:    addi a6, a6, 16
2379 ; ZVFHMIN-NEXT:    vl8r.v v16, (a6) # Unknown-size Folded Reload
2380 ; ZVFHMIN-NEXT:    vsetvli zero, a5, e32, m8, ta, ma
2381 ; ZVFHMIN-NEXT:    vmfeq.vv v5, v16, v8, v0.t
2382 ; ZVFHMIN-NEXT:    bltu a2, a4, .LBB85_6
2383 ; ZVFHMIN-NEXT:  # %bb.5:
2384 ; ZVFHMIN-NEXT:    mv a2, a4
2385 ; ZVFHMIN-NEXT:  .LBB85_6:
2386 ; ZVFHMIN-NEXT:    vsetvli a4, zero, e16, m4, ta, ma
2387 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v24
2388 ; ZVFHMIN-NEXT:    csrr a4, vlenb
2389 ; ZVFHMIN-NEXT:    li a5, 26
2390 ; ZVFHMIN-NEXT:    mul a4, a4, a5
2391 ; ZVFHMIN-NEXT:    add a4, sp, a4
2392 ; ZVFHMIN-NEXT:    addi a4, a4, 16
2393 ; ZVFHMIN-NEXT:    vl8r.v v8, (a4) # Unknown-size Folded Reload
2394 ; ZVFHMIN-NEXT:    vfwcvt.f.f.v v24, v8
2395 ; ZVFHMIN-NEXT:    vmv1r.v v0, v7
2396 ; ZVFHMIN-NEXT:    vsetvli zero, a2, e32, m8, ta, ma
2397 ; ZVFHMIN-NEXT:    vmfeq.vv v8, v16, v24, v0.t
2398 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
2399 ; ZVFHMIN-NEXT:    vslideup.vx v8, v5, a3
2400 ; ZVFHMIN-NEXT:    add a0, a1, a1
2401 ; ZVFHMIN-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
2402 ; ZVFHMIN-NEXT:    vslideup.vx v8, v6, a1
2403 ; ZVFHMIN-NEXT:    vmv.v.v v0, v8
2404 ; ZVFHMIN-NEXT:    csrr a0, vlenb
2405 ; ZVFHMIN-NEXT:    li a1, 34
2406 ; ZVFHMIN-NEXT:    mul a0, a0, a1
2407 ; ZVFHMIN-NEXT:    add sp, sp, a0
2408 ; ZVFHMIN-NEXT:    addi sp, sp, 16
2409 ; ZVFHMIN-NEXT:    ret
2410   %v = call <vscale x 64 x i1> @llvm.vp.fcmp.nxv64f16(<vscale x 64 x half> %va, <vscale x 64 x half> %vb, metadata !"oeq", <vscale x 64 x i1> %m, i32 %evl)
2411   ret <vscale x 64 x i1> %v
2414 declare <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double>, <vscale x 1 x double>, metadata, <vscale x 1 x i1>, i32)
2416 define <vscale x 1 x i1> @fcmp_oeq_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2417 ; CHECK-LABEL: fcmp_oeq_vv_nxv1f64:
2418 ; CHECK:       # %bb.0:
2419 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2420 ; CHECK-NEXT:    vmfeq.vv v0, v8, v9, v0.t
2421 ; CHECK-NEXT:    ret
2422   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oeq", <vscale x 1 x i1> %m, i32 %evl)
2423   ret <vscale x 1 x i1> %v
2426 define <vscale x 1 x i1> @fcmp_oeq_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2427 ; CHECK-LABEL: fcmp_oeq_vf_nxv1f64:
2428 ; CHECK:       # %bb.0:
2429 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2430 ; CHECK-NEXT:    vmfeq.vf v0, v8, fa0, v0.t
2431 ; CHECK-NEXT:    ret
2432   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2433   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2434   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oeq", <vscale x 1 x i1> %m, i32 %evl)
2435   ret <vscale x 1 x i1> %v
2438 define <vscale x 1 x i1> @fcmp_oeq_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2439 ; CHECK-LABEL: fcmp_oeq_vf_swap_nxv1f64:
2440 ; CHECK:       # %bb.0:
2441 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2442 ; CHECK-NEXT:    vmfeq.vf v0, v8, fa0, v0.t
2443 ; CHECK-NEXT:    ret
2444   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2445   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2446   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"oeq", <vscale x 1 x i1> %m, i32 %evl)
2447   ret <vscale x 1 x i1> %v
2450 define <vscale x 1 x i1> @fcmp_ogt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2451 ; CHECK-LABEL: fcmp_ogt_vv_nxv1f64:
2452 ; CHECK:       # %bb.0:
2453 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2454 ; CHECK-NEXT:    vmflt.vv v0, v9, v8, v0.t
2455 ; CHECK-NEXT:    ret
2456   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ogt", <vscale x 1 x i1> %m, i32 %evl)
2457   ret <vscale x 1 x i1> %v
2460 define <vscale x 1 x i1> @fcmp_ogt_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2461 ; CHECK-LABEL: fcmp_ogt_vf_nxv1f64:
2462 ; CHECK:       # %bb.0:
2463 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2464 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0, v0.t
2465 ; CHECK-NEXT:    ret
2466   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2467   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2468   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ogt", <vscale x 1 x i1> %m, i32 %evl)
2469   ret <vscale x 1 x i1> %v
2472 define <vscale x 1 x i1> @fcmp_ogt_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2473 ; CHECK-LABEL: fcmp_ogt_vf_swap_nxv1f64:
2474 ; CHECK:       # %bb.0:
2475 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2476 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0, v0.t
2477 ; CHECK-NEXT:    ret
2478   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2479   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2480   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"ogt", <vscale x 1 x i1> %m, i32 %evl)
2481   ret <vscale x 1 x i1> %v
2484 define <vscale x 1 x i1> @fcmp_oge_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2485 ; CHECK-LABEL: fcmp_oge_vv_nxv1f64:
2486 ; CHECK:       # %bb.0:
2487 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2488 ; CHECK-NEXT:    vmfle.vv v0, v9, v8, v0.t
2489 ; CHECK-NEXT:    ret
2490   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oge", <vscale x 1 x i1> %m, i32 %evl)
2491   ret <vscale x 1 x i1> %v
2494 define <vscale x 1 x i1> @fcmp_oge_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2495 ; CHECK-LABEL: fcmp_oge_vf_nxv1f64:
2496 ; CHECK:       # %bb.0:
2497 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2498 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0, v0.t
2499 ; CHECK-NEXT:    ret
2500   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2501   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2502   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oge", <vscale x 1 x i1> %m, i32 %evl)
2503   ret <vscale x 1 x i1> %v
2506 define <vscale x 1 x i1> @fcmp_oge_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2507 ; CHECK-LABEL: fcmp_oge_vf_swap_nxv1f64:
2508 ; CHECK:       # %bb.0:
2509 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2510 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0, v0.t
2511 ; CHECK-NEXT:    ret
2512   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2513   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2514   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"oge", <vscale x 1 x i1> %m, i32 %evl)
2515   ret <vscale x 1 x i1> %v
2518 define <vscale x 1 x i1> @fcmp_olt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2519 ; CHECK-LABEL: fcmp_olt_vv_nxv1f64:
2520 ; CHECK:       # %bb.0:
2521 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2522 ; CHECK-NEXT:    vmflt.vv v0, v8, v9, v0.t
2523 ; CHECK-NEXT:    ret
2524   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"olt", <vscale x 1 x i1> %m, i32 %evl)
2525   ret <vscale x 1 x i1> %v
2528 define <vscale x 1 x i1> @fcmp_olt_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2529 ; CHECK-LABEL: fcmp_olt_vf_nxv1f64:
2530 ; CHECK:       # %bb.0:
2531 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2532 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0, v0.t
2533 ; CHECK-NEXT:    ret
2534   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2535   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2536   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"olt", <vscale x 1 x i1> %m, i32 %evl)
2537   ret <vscale x 1 x i1> %v
2540 define <vscale x 1 x i1> @fcmp_olt_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2541 ; CHECK-LABEL: fcmp_olt_vf_swap_nxv1f64:
2542 ; CHECK:       # %bb.0:
2543 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2544 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0, v0.t
2545 ; CHECK-NEXT:    ret
2546   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2547   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2548   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"olt", <vscale x 1 x i1> %m, i32 %evl)
2549   ret <vscale x 1 x i1> %v
2552 define <vscale x 1 x i1> @fcmp_ole_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2553 ; CHECK-LABEL: fcmp_ole_vv_nxv1f64:
2554 ; CHECK:       # %bb.0:
2555 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2556 ; CHECK-NEXT:    vmfle.vv v0, v8, v9, v0.t
2557 ; CHECK-NEXT:    ret
2558   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ole", <vscale x 1 x i1> %m, i32 %evl)
2559   ret <vscale x 1 x i1> %v
2562 define <vscale x 1 x i1> @fcmp_ole_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2563 ; CHECK-LABEL: fcmp_ole_vf_nxv1f64:
2564 ; CHECK:       # %bb.0:
2565 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2566 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0, v0.t
2567 ; CHECK-NEXT:    ret
2568   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2569   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2570   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ole", <vscale x 1 x i1> %m, i32 %evl)
2571   ret <vscale x 1 x i1> %v
2574 define <vscale x 1 x i1> @fcmp_ole_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2575 ; CHECK-LABEL: fcmp_ole_vf_swap_nxv1f64:
2576 ; CHECK:       # %bb.0:
2577 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2578 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0, v0.t
2579 ; CHECK-NEXT:    ret
2580   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2581   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2582   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"ole", <vscale x 1 x i1> %m, i32 %evl)
2583   ret <vscale x 1 x i1> %v
2586 define <vscale x 1 x i1> @fcmp_one_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2587 ; CHECK-LABEL: fcmp_one_vv_nxv1f64:
2588 ; CHECK:       # %bb.0:
2589 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2590 ; CHECK-NEXT:    vmflt.vv v10, v8, v9, v0.t
2591 ; CHECK-NEXT:    vmflt.vv v8, v9, v8, v0.t
2592 ; CHECK-NEXT:    vmor.mm v0, v8, v10
2593 ; CHECK-NEXT:    ret
2594   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"one", <vscale x 1 x i1> %m, i32 %evl)
2595   ret <vscale x 1 x i1> %v
2598 define <vscale x 1 x i1> @fcmp_one_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2599 ; CHECK-LABEL: fcmp_one_vf_nxv1f64:
2600 ; CHECK:       # %bb.0:
2601 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2602 ; CHECK-NEXT:    vmflt.vf v9, v8, fa0, v0.t
2603 ; CHECK-NEXT:    vmfgt.vf v8, v8, fa0, v0.t
2604 ; CHECK-NEXT:    vmor.mm v0, v8, v9
2605 ; CHECK-NEXT:    ret
2606   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2607   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2608   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"one", <vscale x 1 x i1> %m, i32 %evl)
2609   ret <vscale x 1 x i1> %v
2612 define <vscale x 1 x i1> @fcmp_one_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2613 ; CHECK-LABEL: fcmp_one_vf_swap_nxv1f64:
2614 ; CHECK:       # %bb.0:
2615 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2616 ; CHECK-NEXT:    vmfgt.vf v9, v8, fa0, v0.t
2617 ; CHECK-NEXT:    vmflt.vf v8, v8, fa0, v0.t
2618 ; CHECK-NEXT:    vmor.mm v0, v8, v9
2619 ; CHECK-NEXT:    ret
2620   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2621   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2622   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"one", <vscale x 1 x i1> %m, i32 %evl)
2623   ret <vscale x 1 x i1> %v
2626 define <vscale x 1 x i1> @fcmp_ord_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2627 ; CHECK-LABEL: fcmp_ord_vv_nxv1f64:
2628 ; CHECK:       # %bb.0:
2629 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2630 ; CHECK-NEXT:    vmfeq.vv v9, v9, v9, v0.t
2631 ; CHECK-NEXT:    vmfeq.vv v8, v8, v8, v0.t
2632 ; CHECK-NEXT:    vmand.mm v0, v8, v9
2633 ; CHECK-NEXT:    ret
2634   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ord", <vscale x 1 x i1> %m, i32 %evl)
2635   ret <vscale x 1 x i1> %v
2638 define <vscale x 1 x i1> @fcmp_ord_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2639 ; CHECK-LABEL: fcmp_ord_vf_nxv1f64:
2640 ; CHECK:       # %bb.0:
2641 ; CHECK-NEXT:    vsetvli a1, zero, e64, m1, ta, ma
2642 ; CHECK-NEXT:    vfmv.v.f v9, fa0
2643 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2644 ; CHECK-NEXT:    vmfeq.vf v9, v9, fa0, v0.t
2645 ; CHECK-NEXT:    vmfeq.vv v8, v8, v8, v0.t
2646 ; CHECK-NEXT:    vmand.mm v0, v8, v9
2647 ; CHECK-NEXT:    ret
2648   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2649   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2650   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ord", <vscale x 1 x i1> %m, i32 %evl)
2651   ret <vscale x 1 x i1> %v
2654 define <vscale x 1 x i1> @fcmp_ord_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2655 ; CHECK-LABEL: fcmp_ord_vf_swap_nxv1f64:
2656 ; CHECK:       # %bb.0:
2657 ; CHECK-NEXT:    vsetvli a1, zero, e64, m1, ta, ma
2658 ; CHECK-NEXT:    vfmv.v.f v9, fa0
2659 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2660 ; CHECK-NEXT:    vmfeq.vf v9, v9, fa0, v0.t
2661 ; CHECK-NEXT:    vmfeq.vv v8, v8, v8, v0.t
2662 ; CHECK-NEXT:    vmand.mm v0, v9, v8
2663 ; CHECK-NEXT:    ret
2664   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2665   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2666   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"ord", <vscale x 1 x i1> %m, i32 %evl)
2667   ret <vscale x 1 x i1> %v
2670 define <vscale x 1 x i1> @fcmp_ueq_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2671 ; CHECK-LABEL: fcmp_ueq_vv_nxv1f64:
2672 ; CHECK:       # %bb.0:
2673 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2674 ; CHECK-NEXT:    vmflt.vv v10, v8, v9, v0.t
2675 ; CHECK-NEXT:    vmflt.vv v8, v9, v8, v0.t
2676 ; CHECK-NEXT:    vmnor.mm v0, v8, v10
2677 ; CHECK-NEXT:    ret
2678   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ueq", <vscale x 1 x i1> %m, i32 %evl)
2679   ret <vscale x 1 x i1> %v
2682 define <vscale x 1 x i1> @fcmp_ueq_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2683 ; CHECK-LABEL: fcmp_ueq_vf_nxv1f64:
2684 ; CHECK:       # %bb.0:
2685 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2686 ; CHECK-NEXT:    vmflt.vf v9, v8, fa0, v0.t
2687 ; CHECK-NEXT:    vmfgt.vf v8, v8, fa0, v0.t
2688 ; CHECK-NEXT:    vmnor.mm v0, v8, v9
2689 ; CHECK-NEXT:    ret
2690   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2691   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2692   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ueq", <vscale x 1 x i1> %m, i32 %evl)
2693   ret <vscale x 1 x i1> %v
2696 define <vscale x 1 x i1> @fcmp_ueq_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2697 ; CHECK-LABEL: fcmp_ueq_vf_swap_nxv1f64:
2698 ; CHECK:       # %bb.0:
2699 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2700 ; CHECK-NEXT:    vmfgt.vf v9, v8, fa0, v0.t
2701 ; CHECK-NEXT:    vmflt.vf v8, v8, fa0, v0.t
2702 ; CHECK-NEXT:    vmnor.mm v0, v8, v9
2703 ; CHECK-NEXT:    ret
2704   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2705   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2706   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"ueq", <vscale x 1 x i1> %m, i32 %evl)
2707   ret <vscale x 1 x i1> %v
2710 define <vscale x 1 x i1> @fcmp_ugt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2711 ; CHECK-LABEL: fcmp_ugt_vv_nxv1f64:
2712 ; CHECK:       # %bb.0:
2713 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2714 ; CHECK-NEXT:    vmfle.vv v8, v8, v9, v0.t
2715 ; CHECK-NEXT:    vmnot.m v0, v8
2716 ; CHECK-NEXT:    ret
2717   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
2718   ret <vscale x 1 x i1> %v
2721 define <vscale x 1 x i1> @fcmp_ugt_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2722 ; CHECK-LABEL: fcmp_ugt_vf_nxv1f64:
2723 ; CHECK:       # %bb.0:
2724 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2725 ; CHECK-NEXT:    vmfle.vf v8, v8, fa0, v0.t
2726 ; CHECK-NEXT:    vmnot.m v0, v8
2727 ; CHECK-NEXT:    ret
2728   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2729   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2730   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
2731   ret <vscale x 1 x i1> %v
2734 define <vscale x 1 x i1> @fcmp_ugt_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2735 ; CHECK-LABEL: fcmp_ugt_vf_swap_nxv1f64:
2736 ; CHECK:       # %bb.0:
2737 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2738 ; CHECK-NEXT:    vmfge.vf v8, v8, fa0, v0.t
2739 ; CHECK-NEXT:    vmnot.m v0, v8
2740 ; CHECK-NEXT:    ret
2741   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2742   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2743   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
2744   ret <vscale x 1 x i1> %v
2747 define <vscale x 1 x i1> @fcmp_uge_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2748 ; CHECK-LABEL: fcmp_uge_vv_nxv1f64:
2749 ; CHECK:       # %bb.0:
2750 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2751 ; CHECK-NEXT:    vmflt.vv v8, v8, v9, v0.t
2752 ; CHECK-NEXT:    vmnot.m v0, v8
2753 ; CHECK-NEXT:    ret
2754   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
2755   ret <vscale x 1 x i1> %v
2758 define <vscale x 1 x i1> @fcmp_uge_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2759 ; CHECK-LABEL: fcmp_uge_vf_nxv1f64:
2760 ; CHECK:       # %bb.0:
2761 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2762 ; CHECK-NEXT:    vmflt.vf v8, v8, fa0, v0.t
2763 ; CHECK-NEXT:    vmnot.m v0, v8
2764 ; CHECK-NEXT:    ret
2765   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2766   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2767   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
2768   ret <vscale x 1 x i1> %v
2771 define <vscale x 1 x i1> @fcmp_uge_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2772 ; CHECK-LABEL: fcmp_uge_vf_swap_nxv1f64:
2773 ; CHECK:       # %bb.0:
2774 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2775 ; CHECK-NEXT:    vmfgt.vf v8, v8, fa0, v0.t
2776 ; CHECK-NEXT:    vmnot.m v0, v8
2777 ; CHECK-NEXT:    ret
2778   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2779   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2780   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
2781   ret <vscale x 1 x i1> %v
2784 define <vscale x 1 x i1> @fcmp_ult_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2785 ; CHECK-LABEL: fcmp_ult_vv_nxv1f64:
2786 ; CHECK:       # %bb.0:
2787 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2788 ; CHECK-NEXT:    vmfle.vv v8, v9, v8, v0.t
2789 ; CHECK-NEXT:    vmnot.m v0, v8
2790 ; CHECK-NEXT:    ret
2791   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
2792   ret <vscale x 1 x i1> %v
2795 define <vscale x 1 x i1> @fcmp_ult_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2796 ; CHECK-LABEL: fcmp_ult_vf_nxv1f64:
2797 ; CHECK:       # %bb.0:
2798 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2799 ; CHECK-NEXT:    vmfge.vf v8, v8, fa0, v0.t
2800 ; CHECK-NEXT:    vmnot.m v0, v8
2801 ; CHECK-NEXT:    ret
2802   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2803   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2804   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
2805   ret <vscale x 1 x i1> %v
2808 define <vscale x 1 x i1> @fcmp_ult_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2809 ; CHECK-LABEL: fcmp_ult_vf_swap_nxv1f64:
2810 ; CHECK:       # %bb.0:
2811 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2812 ; CHECK-NEXT:    vmfle.vf v8, v8, fa0, v0.t
2813 ; CHECK-NEXT:    vmnot.m v0, v8
2814 ; CHECK-NEXT:    ret
2815   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2816   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2817   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
2818   ret <vscale x 1 x i1> %v
2821 define <vscale x 1 x i1> @fcmp_ule_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2822 ; CHECK-LABEL: fcmp_ule_vv_nxv1f64:
2823 ; CHECK:       # %bb.0:
2824 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2825 ; CHECK-NEXT:    vmflt.vv v8, v9, v8, v0.t
2826 ; CHECK-NEXT:    vmnot.m v0, v8
2827 ; CHECK-NEXT:    ret
2828   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ule", <vscale x 1 x i1> %m, i32 %evl)
2829   ret <vscale x 1 x i1> %v
2832 define <vscale x 1 x i1> @fcmp_ule_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2833 ; CHECK-LABEL: fcmp_ule_vf_nxv1f64:
2834 ; CHECK:       # %bb.0:
2835 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2836 ; CHECK-NEXT:    vmfgt.vf v8, v8, fa0, v0.t
2837 ; CHECK-NEXT:    vmnot.m v0, v8
2838 ; CHECK-NEXT:    ret
2839   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2840   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2841   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ule", <vscale x 1 x i1> %m, i32 %evl)
2842   ret <vscale x 1 x i1> %v
2845 define <vscale x 1 x i1> @fcmp_ule_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2846 ; CHECK-LABEL: fcmp_ule_vf_swap_nxv1f64:
2847 ; CHECK:       # %bb.0:
2848 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2849 ; CHECK-NEXT:    vmflt.vf v8, v8, fa0, v0.t
2850 ; CHECK-NEXT:    vmnot.m v0, v8
2851 ; CHECK-NEXT:    ret
2852   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2853   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2854   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"ule", <vscale x 1 x i1> %m, i32 %evl)
2855   ret <vscale x 1 x i1> %v
2858 define <vscale x 1 x i1> @fcmp_une_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2859 ; CHECK-LABEL: fcmp_une_vv_nxv1f64:
2860 ; CHECK:       # %bb.0:
2861 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2862 ; CHECK-NEXT:    vmfne.vv v0, v8, v9, v0.t
2863 ; CHECK-NEXT:    ret
2864   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"une", <vscale x 1 x i1> %m, i32 %evl)
2865   ret <vscale x 1 x i1> %v
2868 define <vscale x 1 x i1> @fcmp_une_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2869 ; CHECK-LABEL: fcmp_une_vf_nxv1f64:
2870 ; CHECK:       # %bb.0:
2871 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2872 ; CHECK-NEXT:    vmfne.vf v0, v8, fa0, v0.t
2873 ; CHECK-NEXT:    ret
2874   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2875   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2876   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"une", <vscale x 1 x i1> %m, i32 %evl)
2877   ret <vscale x 1 x i1> %v
2880 define <vscale x 1 x i1> @fcmp_une_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2881 ; CHECK-LABEL: fcmp_une_vf_swap_nxv1f64:
2882 ; CHECK:       # %bb.0:
2883 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2884 ; CHECK-NEXT:    vmfne.vf v0, v8, fa0, v0.t
2885 ; CHECK-NEXT:    ret
2886   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2887   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2888   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"une", <vscale x 1 x i1> %m, i32 %evl)
2889   ret <vscale x 1 x i1> %v
2892 define <vscale x 1 x i1> @fcmp_uno_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2893 ; CHECK-LABEL: fcmp_uno_vv_nxv1f64:
2894 ; CHECK:       # %bb.0:
2895 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2896 ; CHECK-NEXT:    vmfne.vv v9, v9, v9, v0.t
2897 ; CHECK-NEXT:    vmfne.vv v8, v8, v8, v0.t
2898 ; CHECK-NEXT:    vmor.mm v0, v8, v9
2899 ; CHECK-NEXT:    ret
2900   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uno", <vscale x 1 x i1> %m, i32 %evl)
2901   ret <vscale x 1 x i1> %v
2904 define <vscale x 1 x i1> @fcmp_uno_vf_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2905 ; CHECK-LABEL: fcmp_uno_vf_nxv1f64:
2906 ; CHECK:       # %bb.0:
2907 ; CHECK-NEXT:    vsetvli a1, zero, e64, m1, ta, ma
2908 ; CHECK-NEXT:    vfmv.v.f v9, fa0
2909 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2910 ; CHECK-NEXT:    vmfne.vf v9, v9, fa0, v0.t
2911 ; CHECK-NEXT:    vmfne.vv v8, v8, v8, v0.t
2912 ; CHECK-NEXT:    vmor.mm v0, v8, v9
2913 ; CHECK-NEXT:    ret
2914   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2915   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2916   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uno", <vscale x 1 x i1> %m, i32 %evl)
2917   ret <vscale x 1 x i1> %v
2920 define <vscale x 1 x i1> @fcmp_uno_vf_swap_nxv1f64(<vscale x 1 x double> %va, double %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2921 ; CHECK-LABEL: fcmp_uno_vf_swap_nxv1f64:
2922 ; CHECK:       # %bb.0:
2923 ; CHECK-NEXT:    vsetvli a1, zero, e64, m1, ta, ma
2924 ; CHECK-NEXT:    vfmv.v.f v9, fa0
2925 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2926 ; CHECK-NEXT:    vmfne.vf v9, v9, fa0, v0.t
2927 ; CHECK-NEXT:    vmfne.vv v8, v8, v8, v0.t
2928 ; CHECK-NEXT:    vmor.mm v0, v9, v8
2929 ; CHECK-NEXT:    ret
2930   %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
2931   %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
2932   %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1f64(<vscale x 1 x double> %vb, <vscale x 1 x double> %va, metadata !"uno", <vscale x 1 x i1> %m, i32 %evl)
2933   ret <vscale x 1 x i1> %v
2936 declare <vscale x 3 x i1> @llvm.vp.fcmp.nxv3f64(<vscale x 3 x double>, <vscale x 3 x double>, metadata, <vscale x 3 x i1>, i32)
2938 define <vscale x 3 x i1> @fcmp_oeq_vv_nxv3f64(<vscale x 3 x double> %va, <vscale x 3 x double> %vb, <vscale x 3 x i1> %m, i32 zeroext %evl) {
2939 ; CHECK-LABEL: fcmp_oeq_vv_nxv3f64:
2940 ; CHECK:       # %bb.0:
2941 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
2942 ; CHECK-NEXT:    vmfeq.vv v16, v8, v12, v0.t
2943 ; CHECK-NEXT:    vmv1r.v v0, v16
2944 ; CHECK-NEXT:    ret
2945   %v = call <vscale x 3 x i1> @llvm.vp.fcmp.nxv3f64(<vscale x 3 x double> %va, <vscale x 3 x double> %vb, metadata !"oeq", <vscale x 3 x i1> %m, i32 %evl)
2946   ret <vscale x 3 x i1> %v
2949 declare <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double>, <vscale x 8 x double>, metadata, <vscale x 8 x i1>, i32)
2951 define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2952 ; CHECK-LABEL: fcmp_oeq_vv_nxv8f64:
2953 ; CHECK:       # %bb.0:
2954 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2955 ; CHECK-NEXT:    vmfeq.vv v24, v8, v16, v0.t
2956 ; CHECK-NEXT:    vmv1r.v v0, v24
2957 ; CHECK-NEXT:    ret
2958   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oeq", <vscale x 8 x i1> %m, i32 %evl)
2959   ret <vscale x 8 x i1> %v
2962 define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2963 ; CHECK-LABEL: fcmp_oeq_vf_nxv8f64:
2964 ; CHECK:       # %bb.0:
2965 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2966 ; CHECK-NEXT:    vmfeq.vf v16, v8, fa0, v0.t
2967 ; CHECK-NEXT:    vmv1r.v v0, v16
2968 ; CHECK-NEXT:    ret
2969   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
2970   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
2971   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oeq", <vscale x 8 x i1> %m, i32 %evl)
2972   ret <vscale x 8 x i1> %v
2975 define <vscale x 8 x i1> @fcmp_oeq_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2976 ; CHECK-LABEL: fcmp_oeq_vf_swap_nxv8f64:
2977 ; CHECK:       # %bb.0:
2978 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2979 ; CHECK-NEXT:    vmfeq.vf v16, v8, fa0, v0.t
2980 ; CHECK-NEXT:    vmv1r.v v0, v16
2981 ; CHECK-NEXT:    ret
2982   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
2983   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
2984   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"oeq", <vscale x 8 x i1> %m, i32 %evl)
2985   ret <vscale x 8 x i1> %v
2988 define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2989 ; CHECK-LABEL: fcmp_ogt_vv_nxv8f64:
2990 ; CHECK:       # %bb.0:
2991 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
2992 ; CHECK-NEXT:    vmflt.vv v24, v16, v8, v0.t
2993 ; CHECK-NEXT:    vmv1r.v v0, v24
2994 ; CHECK-NEXT:    ret
2995   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ogt", <vscale x 8 x i1> %m, i32 %evl)
2996   ret <vscale x 8 x i1> %v
2999 define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3000 ; CHECK-LABEL: fcmp_ogt_vf_nxv8f64:
3001 ; CHECK:       # %bb.0:
3002 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3003 ; CHECK-NEXT:    vmfgt.vf v16, v8, fa0, v0.t
3004 ; CHECK-NEXT:    vmv1r.v v0, v16
3005 ; CHECK-NEXT:    ret
3006   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3007   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3008   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ogt", <vscale x 8 x i1> %m, i32 %evl)
3009   ret <vscale x 8 x i1> %v
3012 define <vscale x 8 x i1> @fcmp_ogt_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3013 ; CHECK-LABEL: fcmp_ogt_vf_swap_nxv8f64:
3014 ; CHECK:       # %bb.0:
3015 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3016 ; CHECK-NEXT:    vmflt.vf v16, v8, fa0, v0.t
3017 ; CHECK-NEXT:    vmv1r.v v0, v16
3018 ; CHECK-NEXT:    ret
3019   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3020   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3021   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"ogt", <vscale x 8 x i1> %m, i32 %evl)
3022   ret <vscale x 8 x i1> %v
3025 define <vscale x 8 x i1> @fcmp_oge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3026 ; CHECK-LABEL: fcmp_oge_vv_nxv8f64:
3027 ; CHECK:       # %bb.0:
3028 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3029 ; CHECK-NEXT:    vmfle.vv v24, v16, v8, v0.t
3030 ; CHECK-NEXT:    vmv1r.v v0, v24
3031 ; CHECK-NEXT:    ret
3032   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oge", <vscale x 8 x i1> %m, i32 %evl)
3033   ret <vscale x 8 x i1> %v
3036 define <vscale x 8 x i1> @fcmp_oge_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3037 ; CHECK-LABEL: fcmp_oge_vf_nxv8f64:
3038 ; CHECK:       # %bb.0:
3039 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3040 ; CHECK-NEXT:    vmfge.vf v16, v8, fa0, v0.t
3041 ; CHECK-NEXT:    vmv1r.v v0, v16
3042 ; CHECK-NEXT:    ret
3043   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3044   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3045   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oge", <vscale x 8 x i1> %m, i32 %evl)
3046   ret <vscale x 8 x i1> %v
3049 define <vscale x 8 x i1> @fcmp_oge_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3050 ; CHECK-LABEL: fcmp_oge_vf_swap_nxv8f64:
3051 ; CHECK:       # %bb.0:
3052 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3053 ; CHECK-NEXT:    vmfle.vf v16, v8, fa0, v0.t
3054 ; CHECK-NEXT:    vmv1r.v v0, v16
3055 ; CHECK-NEXT:    ret
3056   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3057   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3058   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"oge", <vscale x 8 x i1> %m, i32 %evl)
3059   ret <vscale x 8 x i1> %v
3062 define <vscale x 8 x i1> @fcmp_olt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3063 ; CHECK-LABEL: fcmp_olt_vv_nxv8f64:
3064 ; CHECK:       # %bb.0:
3065 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3066 ; CHECK-NEXT:    vmflt.vv v24, v8, v16, v0.t
3067 ; CHECK-NEXT:    vmv1r.v v0, v24
3068 ; CHECK-NEXT:    ret
3069   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"olt", <vscale x 8 x i1> %m, i32 %evl)
3070   ret <vscale x 8 x i1> %v
3073 define <vscale x 8 x i1> @fcmp_olt_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3074 ; CHECK-LABEL: fcmp_olt_vf_nxv8f64:
3075 ; CHECK:       # %bb.0:
3076 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3077 ; CHECK-NEXT:    vmflt.vf v16, v8, fa0, v0.t
3078 ; CHECK-NEXT:    vmv1r.v v0, v16
3079 ; CHECK-NEXT:    ret
3080   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3081   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3082   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"olt", <vscale x 8 x i1> %m, i32 %evl)
3083   ret <vscale x 8 x i1> %v
3086 define <vscale x 8 x i1> @fcmp_olt_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3087 ; CHECK-LABEL: fcmp_olt_vf_swap_nxv8f64:
3088 ; CHECK:       # %bb.0:
3089 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3090 ; CHECK-NEXT:    vmfgt.vf v16, v8, fa0, v0.t
3091 ; CHECK-NEXT:    vmv1r.v v0, v16
3092 ; CHECK-NEXT:    ret
3093   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3094   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3095   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"olt", <vscale x 8 x i1> %m, i32 %evl)
3096   ret <vscale x 8 x i1> %v
3099 define <vscale x 8 x i1> @fcmp_ole_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3100 ; CHECK-LABEL: fcmp_ole_vv_nxv8f64:
3101 ; CHECK:       # %bb.0:
3102 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3103 ; CHECK-NEXT:    vmfle.vv v24, v8, v16, v0.t
3104 ; CHECK-NEXT:    vmv1r.v v0, v24
3105 ; CHECK-NEXT:    ret
3106   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ole", <vscale x 8 x i1> %m, i32 %evl)
3107   ret <vscale x 8 x i1> %v
3110 define <vscale x 8 x i1> @fcmp_ole_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3111 ; CHECK-LABEL: fcmp_ole_vf_nxv8f64:
3112 ; CHECK:       # %bb.0:
3113 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3114 ; CHECK-NEXT:    vmfle.vf v16, v8, fa0, v0.t
3115 ; CHECK-NEXT:    vmv1r.v v0, v16
3116 ; CHECK-NEXT:    ret
3117   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3118   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3119   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ole", <vscale x 8 x i1> %m, i32 %evl)
3120   ret <vscale x 8 x i1> %v
3123 define <vscale x 8 x i1> @fcmp_ole_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3124 ; CHECK-LABEL: fcmp_ole_vf_swap_nxv8f64:
3125 ; CHECK:       # %bb.0:
3126 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3127 ; CHECK-NEXT:    vmfge.vf v16, v8, fa0, v0.t
3128 ; CHECK-NEXT:    vmv1r.v v0, v16
3129 ; CHECK-NEXT:    ret
3130   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3131   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3132   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"ole", <vscale x 8 x i1> %m, i32 %evl)
3133   ret <vscale x 8 x i1> %v
3136 define <vscale x 8 x i1> @fcmp_one_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3137 ; CHECK-LABEL: fcmp_one_vv_nxv8f64:
3138 ; CHECK:       # %bb.0:
3139 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3140 ; CHECK-NEXT:    vmflt.vv v24, v8, v16, v0.t
3141 ; CHECK-NEXT:    vmflt.vv v25, v16, v8, v0.t
3142 ; CHECK-NEXT:    vmor.mm v0, v25, v24
3143 ; CHECK-NEXT:    ret
3144   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"one", <vscale x 8 x i1> %m, i32 %evl)
3145   ret <vscale x 8 x i1> %v
3148 define <vscale x 8 x i1> @fcmp_one_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3149 ; CHECK-LABEL: fcmp_one_vf_nxv8f64:
3150 ; CHECK:       # %bb.0:
3151 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3152 ; CHECK-NEXT:    vmflt.vf v16, v8, fa0, v0.t
3153 ; CHECK-NEXT:    vmfgt.vf v17, v8, fa0, v0.t
3154 ; CHECK-NEXT:    vmor.mm v0, v17, v16
3155 ; CHECK-NEXT:    ret
3156   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3157   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3158   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"one", <vscale x 8 x i1> %m, i32 %evl)
3159   ret <vscale x 8 x i1> %v
3162 define <vscale x 8 x i1> @fcmp_one_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3163 ; CHECK-LABEL: fcmp_one_vf_swap_nxv8f64:
3164 ; CHECK:       # %bb.0:
3165 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3166 ; CHECK-NEXT:    vmfgt.vf v16, v8, fa0, v0.t
3167 ; CHECK-NEXT:    vmflt.vf v17, v8, fa0, v0.t
3168 ; CHECK-NEXT:    vmor.mm v0, v17, v16
3169 ; CHECK-NEXT:    ret
3170   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3171   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3172   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"one", <vscale x 8 x i1> %m, i32 %evl)
3173   ret <vscale x 8 x i1> %v
3176 define <vscale x 8 x i1> @fcmp_ord_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3177 ; CHECK-LABEL: fcmp_ord_vv_nxv8f64:
3178 ; CHECK:       # %bb.0:
3179 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3180 ; CHECK-NEXT:    vmfeq.vv v24, v16, v16, v0.t
3181 ; CHECK-NEXT:    vmfeq.vv v16, v8, v8, v0.t
3182 ; CHECK-NEXT:    vmand.mm v0, v16, v24
3183 ; CHECK-NEXT:    ret
3184   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ord", <vscale x 8 x i1> %m, i32 %evl)
3185   ret <vscale x 8 x i1> %v
3188 define <vscale x 8 x i1> @fcmp_ord_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3189 ; CHECK-LABEL: fcmp_ord_vf_nxv8f64:
3190 ; CHECK:       # %bb.0:
3191 ; CHECK-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
3192 ; CHECK-NEXT:    vfmv.v.f v16, fa0
3193 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3194 ; CHECK-NEXT:    vmfeq.vf v24, v16, fa0, v0.t
3195 ; CHECK-NEXT:    vmfeq.vv v16, v8, v8, v0.t
3196 ; CHECK-NEXT:    vmand.mm v0, v16, v24
3197 ; CHECK-NEXT:    ret
3198   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3199   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3200   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ord", <vscale x 8 x i1> %m, i32 %evl)
3201   ret <vscale x 8 x i1> %v
3204 define <vscale x 8 x i1> @fcmp_ord_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3205 ; CHECK-LABEL: fcmp_ord_vf_swap_nxv8f64:
3206 ; CHECK:       # %bb.0:
3207 ; CHECK-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
3208 ; CHECK-NEXT:    vfmv.v.f v16, fa0
3209 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3210 ; CHECK-NEXT:    vmfeq.vf v24, v16, fa0, v0.t
3211 ; CHECK-NEXT:    vmfeq.vv v16, v8, v8, v0.t
3212 ; CHECK-NEXT:    vmand.mm v0, v24, v16
3213 ; CHECK-NEXT:    ret
3214   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3215   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3216   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"ord", <vscale x 8 x i1> %m, i32 %evl)
3217   ret <vscale x 8 x i1> %v
3220 define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3221 ; CHECK-LABEL: fcmp_ueq_vv_nxv8f64:
3222 ; CHECK:       # %bb.0:
3223 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3224 ; CHECK-NEXT:    vmflt.vv v24, v8, v16, v0.t
3225 ; CHECK-NEXT:    vmflt.vv v25, v16, v8, v0.t
3226 ; CHECK-NEXT:    vmnor.mm v0, v25, v24
3227 ; CHECK-NEXT:    ret
3228   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ueq", <vscale x 8 x i1> %m, i32 %evl)
3229   ret <vscale x 8 x i1> %v
3232 define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3233 ; CHECK-LABEL: fcmp_ueq_vf_nxv8f64:
3234 ; CHECK:       # %bb.0:
3235 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3236 ; CHECK-NEXT:    vmflt.vf v16, v8, fa0, v0.t
3237 ; CHECK-NEXT:    vmfgt.vf v17, v8, fa0, v0.t
3238 ; CHECK-NEXT:    vmnor.mm v0, v17, v16
3239 ; CHECK-NEXT:    ret
3240   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3241   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3242   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ueq", <vscale x 8 x i1> %m, i32 %evl)
3243   ret <vscale x 8 x i1> %v
3246 define <vscale x 8 x i1> @fcmp_ueq_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3247 ; CHECK-LABEL: fcmp_ueq_vf_swap_nxv8f64:
3248 ; CHECK:       # %bb.0:
3249 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3250 ; CHECK-NEXT:    vmfgt.vf v16, v8, fa0, v0.t
3251 ; CHECK-NEXT:    vmflt.vf v17, v8, fa0, v0.t
3252 ; CHECK-NEXT:    vmnor.mm v0, v17, v16
3253 ; CHECK-NEXT:    ret
3254   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3255   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3256   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"ueq", <vscale x 8 x i1> %m, i32 %evl)
3257   ret <vscale x 8 x i1> %v
3260 define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3261 ; CHECK-LABEL: fcmp_ugt_vv_nxv8f64:
3262 ; CHECK:       # %bb.0:
3263 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3264 ; CHECK-NEXT:    vmfle.vv v24, v8, v16, v0.t
3265 ; CHECK-NEXT:    vmnot.m v0, v24
3266 ; CHECK-NEXT:    ret
3267   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
3268   ret <vscale x 8 x i1> %v
3271 define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3272 ; CHECK-LABEL: fcmp_ugt_vf_nxv8f64:
3273 ; CHECK:       # %bb.0:
3274 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3275 ; CHECK-NEXT:    vmfle.vf v16, v8, fa0, v0.t
3276 ; CHECK-NEXT:    vmnot.m v0, v16
3277 ; CHECK-NEXT:    ret
3278   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3279   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3280   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
3281   ret <vscale x 8 x i1> %v
3284 define <vscale x 8 x i1> @fcmp_ugt_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3285 ; CHECK-LABEL: fcmp_ugt_vf_swap_nxv8f64:
3286 ; CHECK:       # %bb.0:
3287 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3288 ; CHECK-NEXT:    vmfge.vf v16, v8, fa0, v0.t
3289 ; CHECK-NEXT:    vmnot.m v0, v16
3290 ; CHECK-NEXT:    ret
3291   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3292   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3293   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
3294   ret <vscale x 8 x i1> %v
3297 define <vscale x 8 x i1> @fcmp_uge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3298 ; CHECK-LABEL: fcmp_uge_vv_nxv8f64:
3299 ; CHECK:       # %bb.0:
3300 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3301 ; CHECK-NEXT:    vmflt.vv v24, v8, v16, v0.t
3302 ; CHECK-NEXT:    vmnot.m v0, v24
3303 ; CHECK-NEXT:    ret
3304   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
3305   ret <vscale x 8 x i1> %v
3308 define <vscale x 8 x i1> @fcmp_uge_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3309 ; CHECK-LABEL: fcmp_uge_vf_nxv8f64:
3310 ; CHECK:       # %bb.0:
3311 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3312 ; CHECK-NEXT:    vmflt.vf v16, v8, fa0, v0.t
3313 ; CHECK-NEXT:    vmnot.m v0, v16
3314 ; CHECK-NEXT:    ret
3315   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3316   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3317   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
3318   ret <vscale x 8 x i1> %v
3321 define <vscale x 8 x i1> @fcmp_uge_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3322 ; CHECK-LABEL: fcmp_uge_vf_swap_nxv8f64:
3323 ; CHECK:       # %bb.0:
3324 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3325 ; CHECK-NEXT:    vmfgt.vf v16, v8, fa0, v0.t
3326 ; CHECK-NEXT:    vmnot.m v0, v16
3327 ; CHECK-NEXT:    ret
3328   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3329   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3330   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
3331   ret <vscale x 8 x i1> %v
3334 define <vscale x 8 x i1> @fcmp_ult_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3335 ; CHECK-LABEL: fcmp_ult_vv_nxv8f64:
3336 ; CHECK:       # %bb.0:
3337 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3338 ; CHECK-NEXT:    vmfle.vv v24, v16, v8, v0.t
3339 ; CHECK-NEXT:    vmnot.m v0, v24
3340 ; CHECK-NEXT:    ret
3341   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
3342   ret <vscale x 8 x i1> %v
3345 define <vscale x 8 x i1> @fcmp_ult_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3346 ; CHECK-LABEL: fcmp_ult_vf_nxv8f64:
3347 ; CHECK:       # %bb.0:
3348 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3349 ; CHECK-NEXT:    vmfge.vf v16, v8, fa0, v0.t
3350 ; CHECK-NEXT:    vmnot.m v0, v16
3351 ; CHECK-NEXT:    ret
3352   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3353   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3354   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
3355   ret <vscale x 8 x i1> %v
3358 define <vscale x 8 x i1> @fcmp_ult_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3359 ; CHECK-LABEL: fcmp_ult_vf_swap_nxv8f64:
3360 ; CHECK:       # %bb.0:
3361 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3362 ; CHECK-NEXT:    vmfle.vf v16, v8, fa0, v0.t
3363 ; CHECK-NEXT:    vmnot.m v0, v16
3364 ; CHECK-NEXT:    ret
3365   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3366   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3367   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
3368   ret <vscale x 8 x i1> %v
3371 define <vscale x 8 x i1> @fcmp_ule_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3372 ; CHECK-LABEL: fcmp_ule_vv_nxv8f64:
3373 ; CHECK:       # %bb.0:
3374 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3375 ; CHECK-NEXT:    vmflt.vv v24, v16, v8, v0.t
3376 ; CHECK-NEXT:    vmnot.m v0, v24
3377 ; CHECK-NEXT:    ret
3378   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ule", <vscale x 8 x i1> %m, i32 %evl)
3379   ret <vscale x 8 x i1> %v
3382 define <vscale x 8 x i1> @fcmp_ule_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3383 ; CHECK-LABEL: fcmp_ule_vf_nxv8f64:
3384 ; CHECK:       # %bb.0:
3385 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3386 ; CHECK-NEXT:    vmfgt.vf v16, v8, fa0, v0.t
3387 ; CHECK-NEXT:    vmnot.m v0, v16
3388 ; CHECK-NEXT:    ret
3389   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3390   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3391   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ule", <vscale x 8 x i1> %m, i32 %evl)
3392   ret <vscale x 8 x i1> %v
3395 define <vscale x 8 x i1> @fcmp_ule_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3396 ; CHECK-LABEL: fcmp_ule_vf_swap_nxv8f64:
3397 ; CHECK:       # %bb.0:
3398 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3399 ; CHECK-NEXT:    vmflt.vf v16, v8, fa0, v0.t
3400 ; CHECK-NEXT:    vmnot.m v0, v16
3401 ; CHECK-NEXT:    ret
3402   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3403   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3404   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"ule", <vscale x 8 x i1> %m, i32 %evl)
3405   ret <vscale x 8 x i1> %v
3408 define <vscale x 8 x i1> @fcmp_une_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3409 ; CHECK-LABEL: fcmp_une_vv_nxv8f64:
3410 ; CHECK:       # %bb.0:
3411 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3412 ; CHECK-NEXT:    vmfne.vv v24, v8, v16, v0.t
3413 ; CHECK-NEXT:    vmv1r.v v0, v24
3414 ; CHECK-NEXT:    ret
3415   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"une", <vscale x 8 x i1> %m, i32 %evl)
3416   ret <vscale x 8 x i1> %v
3419 define <vscale x 8 x i1> @fcmp_une_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3420 ; CHECK-LABEL: fcmp_une_vf_nxv8f64:
3421 ; CHECK:       # %bb.0:
3422 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3423 ; CHECK-NEXT:    vmfne.vf v16, v8, fa0, v0.t
3424 ; CHECK-NEXT:    vmv1r.v v0, v16
3425 ; CHECK-NEXT:    ret
3426   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3427   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3428   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"une", <vscale x 8 x i1> %m, i32 %evl)
3429   ret <vscale x 8 x i1> %v
3432 define <vscale x 8 x i1> @fcmp_une_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3433 ; CHECK-LABEL: fcmp_une_vf_swap_nxv8f64:
3434 ; CHECK:       # %bb.0:
3435 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3436 ; CHECK-NEXT:    vmfne.vf v16, v8, fa0, v0.t
3437 ; CHECK-NEXT:    vmv1r.v v0, v16
3438 ; CHECK-NEXT:    ret
3439   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3440   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3441   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"une", <vscale x 8 x i1> %m, i32 %evl)
3442   ret <vscale x 8 x i1> %v
3445 define <vscale x 8 x i1> @fcmp_uno_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3446 ; CHECK-LABEL: fcmp_uno_vv_nxv8f64:
3447 ; CHECK:       # %bb.0:
3448 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3449 ; CHECK-NEXT:    vmfne.vv v24, v16, v16, v0.t
3450 ; CHECK-NEXT:    vmfne.vv v16, v8, v8, v0.t
3451 ; CHECK-NEXT:    vmor.mm v0, v16, v24
3452 ; CHECK-NEXT:    ret
3453   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uno", <vscale x 8 x i1> %m, i32 %evl)
3454   ret <vscale x 8 x i1> %v
3457 define <vscale x 8 x i1> @fcmp_uno_vf_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3458 ; CHECK-LABEL: fcmp_uno_vf_nxv8f64:
3459 ; CHECK:       # %bb.0:
3460 ; CHECK-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
3461 ; CHECK-NEXT:    vfmv.v.f v16, fa0
3462 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3463 ; CHECK-NEXT:    vmfne.vf v24, v16, fa0, v0.t
3464 ; CHECK-NEXT:    vmfne.vv v16, v8, v8, v0.t
3465 ; CHECK-NEXT:    vmor.mm v0, v16, v24
3466 ; CHECK-NEXT:    ret
3467   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3468   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3469   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uno", <vscale x 8 x i1> %m, i32 %evl)
3470   ret <vscale x 8 x i1> %v
3473 define <vscale x 8 x i1> @fcmp_uno_vf_swap_nxv8f64(<vscale x 8 x double> %va, double %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3474 ; CHECK-LABEL: fcmp_uno_vf_swap_nxv8f64:
3475 ; CHECK:       # %bb.0:
3476 ; CHECK-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
3477 ; CHECK-NEXT:    vfmv.v.f v16, fa0
3478 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3479 ; CHECK-NEXT:    vmfne.vf v24, v16, fa0, v0.t
3480 ; CHECK-NEXT:    vmfne.vv v16, v8, v8, v0.t
3481 ; CHECK-NEXT:    vmor.mm v0, v24, v16
3482 ; CHECK-NEXT:    ret
3483   %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
3484   %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
3485   %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8f64(<vscale x 8 x double> %vb, <vscale x 8 x double> %va, metadata !"uno", <vscale x 8 x i1> %m, i32 %evl)
3486   ret <vscale x 8 x i1> %v
3489 declare <vscale x 32 x i1> @llvm.vp.fcmp.nxv32f64(<vscale x 32 x double>, <vscale x 32 x double>, metadata, <vscale x 32 x i1>, i32)
3491 define <vscale x 32 x i1> @fcmp_oeq_vv_nxv32f64(<vscale x 32 x double> %va, <vscale x 32 x double> %vb, <vscale x 32 x i1> %m, i32 zeroext %evl) {
3492 ; CHECK-LABEL: fcmp_oeq_vv_nxv32f64:
3493 ; CHECK:       # %bb.0:
3494 ; CHECK-NEXT:    addi sp, sp, -16
3495 ; CHECK-NEXT:    .cfi_def_cfa_offset 16
3496 ; CHECK-NEXT:    csrr a1, vlenb
3497 ; CHECK-NEXT:    li a3, 48
3498 ; CHECK-NEXT:    mul a1, a1, a3
3499 ; CHECK-NEXT:    sub sp, sp, a1
3500 ; CHECK-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x30, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 48 * vlenb
3501 ; CHECK-NEXT:    vmv1r.v v24, v0
3502 ; CHECK-NEXT:    csrr a1, vlenb
3503 ; CHECK-NEXT:    slli a1, a1, 5
3504 ; CHECK-NEXT:    add a1, sp, a1
3505 ; CHECK-NEXT:    addi a1, a1, 16
3506 ; CHECK-NEXT:    vs8r.v v16, (a1) # Unknown-size Folded Spill
3507 ; CHECK-NEXT:    csrr a1, vlenb
3508 ; CHECK-NEXT:    li a3, 40
3509 ; CHECK-NEXT:    mul a1, a1, a3
3510 ; CHECK-NEXT:    add a1, sp, a1
3511 ; CHECK-NEXT:    addi a1, a1, 16
3512 ; CHECK-NEXT:    vs8r.v v8, (a1) # Unknown-size Folded Spill
3513 ; CHECK-NEXT:    csrr a4, vlenb
3514 ; CHECK-NEXT:    slli t0, a4, 3
3515 ; CHECK-NEXT:    slli a1, a4, 5
3516 ; CHECK-NEXT:    sub t1, a1, t0
3517 ; CHECK-NEXT:    srli a1, a4, 2
3518 ; CHECK-NEXT:    vsetvli a3, zero, e8, mf2, ta, ma
3519 ; CHECK-NEXT:    vslidedown.vx v7, v0, a1
3520 ; CHECK-NEXT:    srli a3, a4, 3
3521 ; CHECK-NEXT:    add a5, a2, t0
3522 ; CHECK-NEXT:    vl8re64.v v8, (a5)
3523 ; CHECK-NEXT:    slli t3, a4, 4
3524 ; CHECK-NEXT:    slli a5, a4, 1
3525 ; CHECK-NEXT:    vsetvli a7, zero, e8, mf4, ta, ma
3526 ; CHECK-NEXT:    vslidedown.vx v0, v0, a3
3527 ; CHECK-NEXT:    mv a7, a6
3528 ; CHECK-NEXT:    bltu a6, a5, .LBB171_2
3529 ; CHECK-NEXT:  # %bb.1:
3530 ; CHECK-NEXT:    mv a7, a5
3531 ; CHECK-NEXT:  .LBB171_2:
3532 ; CHECK-NEXT:    add t2, a0, t0
3533 ; CHECK-NEXT:    add t1, a2, t1
3534 ; CHECK-NEXT:    add t0, a2, t3
3535 ; CHECK-NEXT:    vl8re64.v v16, (a2)
3536 ; CHECK-NEXT:    csrr a2, vlenb
3537 ; CHECK-NEXT:    slli a2, a2, 4
3538 ; CHECK-NEXT:    add a2, sp, a2
3539 ; CHECK-NEXT:    addi a2, a2, 16
3540 ; CHECK-NEXT:    vs8r.v v16, (a2) # Unknown-size Folded Spill
3541 ; CHECK-NEXT:    sub a2, a7, a4
3542 ; CHECK-NEXT:    sltu t3, a7, a2
3543 ; CHECK-NEXT:    addi t3, t3, -1
3544 ; CHECK-NEXT:    and a2, t3, a2
3545 ; CHECK-NEXT:    csrr t3, vlenb
3546 ; CHECK-NEXT:    slli t3, t3, 5
3547 ; CHECK-NEXT:    add t3, sp, t3
3548 ; CHECK-NEXT:    addi t3, t3, 16
3549 ; CHECK-NEXT:    vl8r.v v16, (t3) # Unknown-size Folded Reload
3550 ; CHECK-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3551 ; CHECK-NEXT:    vmfeq.vv v6, v16, v8, v0.t
3552 ; CHECK-NEXT:    bltu a7, a4, .LBB171_4
3553 ; CHECK-NEXT:  # %bb.3:
3554 ; CHECK-NEXT:    mv a7, a4
3555 ; CHECK-NEXT:  .LBB171_4:
3556 ; CHECK-NEXT:    vl8re64.v v8, (t2)
3557 ; CHECK-NEXT:    csrr a2, vlenb
3558 ; CHECK-NEXT:    slli a2, a2, 5
3559 ; CHECK-NEXT:    add a2, sp, a2
3560 ; CHECK-NEXT:    addi a2, a2, 16
3561 ; CHECK-NEXT:    vs8r.v v8, (a2) # Unknown-size Folded Spill
3562 ; CHECK-NEXT:    vl8re64.v v8, (t1)
3563 ; CHECK-NEXT:    csrr a2, vlenb
3564 ; CHECK-NEXT:    li t1, 24
3565 ; CHECK-NEXT:    mul a2, a2, t1
3566 ; CHECK-NEXT:    add a2, sp, a2
3567 ; CHECK-NEXT:    addi a2, a2, 16
3568 ; CHECK-NEXT:    vs8r.v v8, (a2) # Unknown-size Folded Spill
3569 ; CHECK-NEXT:    vsetvli a2, zero, e8, mf4, ta, ma
3570 ; CHECK-NEXT:    vslidedown.vx v18, v7, a3
3571 ; CHECK-NEXT:    vl8re64.v v8, (t0)
3572 ; CHECK-NEXT:    csrr a2, vlenb
3573 ; CHECK-NEXT:    slli a2, a2, 3
3574 ; CHECK-NEXT:    add a2, sp, a2
3575 ; CHECK-NEXT:    addi a2, a2, 16
3576 ; CHECK-NEXT:    vs8r.v v8, (a2) # Unknown-size Folded Spill
3577 ; CHECK-NEXT:    vl8re64.v v8, (a0)
3578 ; CHECK-NEXT:    addi a0, sp, 16
3579 ; CHECK-NEXT:    vs8r.v v8, (a0) # Unknown-size Folded Spill
3580 ; CHECK-NEXT:    vmv1r.v v0, v24
3581 ; CHECK-NEXT:    csrr a0, vlenb
3582 ; CHECK-NEXT:    li a2, 40
3583 ; CHECK-NEXT:    mul a0, a0, a2
3584 ; CHECK-NEXT:    add a0, sp, a0
3585 ; CHECK-NEXT:    addi a0, a0, 16
3586 ; CHECK-NEXT:    vl8r.v v24, (a0) # Unknown-size Folded Reload
3587 ; CHECK-NEXT:    csrr a0, vlenb
3588 ; CHECK-NEXT:    slli a0, a0, 4
3589 ; CHECK-NEXT:    add a0, sp, a0
3590 ; CHECK-NEXT:    addi a0, a0, 16
3591 ; CHECK-NEXT:    vl8r.v v8, (a0) # Unknown-size Folded Reload
3592 ; CHECK-NEXT:    vsetvli zero, a7, e64, m8, ta, ma
3593 ; CHECK-NEXT:    vmfeq.vv v17, v24, v8, v0.t
3594 ; CHECK-NEXT:    add a2, a3, a3
3595 ; CHECK-NEXT:    sub a0, a6, a5
3596 ; CHECK-NEXT:    sltu a5, a6, a0
3597 ; CHECK-NEXT:    addi a5, a5, -1
3598 ; CHECK-NEXT:    and a0, a5, a0
3599 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, tu, ma
3600 ; CHECK-NEXT:    vslideup.vx v17, v6, a3
3601 ; CHECK-NEXT:    mv a2, a0
3602 ; CHECK-NEXT:    bltu a0, a4, .LBB171_6
3603 ; CHECK-NEXT:  # %bb.5:
3604 ; CHECK-NEXT:    mv a2, a4
3605 ; CHECK-NEXT:  .LBB171_6:
3606 ; CHECK-NEXT:    vmv1r.v v0, v7
3607 ; CHECK-NEXT:    csrr a5, vlenb
3608 ; CHECK-NEXT:    slli a5, a5, 3
3609 ; CHECK-NEXT:    add a5, sp, a5
3610 ; CHECK-NEXT:    addi a5, a5, 16
3611 ; CHECK-NEXT:    vl8r.v v8, (a5) # Unknown-size Folded Reload
3612 ; CHECK-NEXT:    addi a5, sp, 16
3613 ; CHECK-NEXT:    vl8r.v v24, (a5) # Unknown-size Folded Reload
3614 ; CHECK-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3615 ; CHECK-NEXT:    vmfeq.vv v16, v24, v8, v0.t
3616 ; CHECK-NEXT:    sub a2, a0, a4
3617 ; CHECK-NEXT:    sltu a0, a0, a2
3618 ; CHECK-NEXT:    addi a0, a0, -1
3619 ; CHECK-NEXT:    and a0, a0, a2
3620 ; CHECK-NEXT:    vmv1r.v v0, v18
3621 ; CHECK-NEXT:    csrr a2, vlenb
3622 ; CHECK-NEXT:    slli a2, a2, 5
3623 ; CHECK-NEXT:    add a2, sp, a2
3624 ; CHECK-NEXT:    addi a2, a2, 16
3625 ; CHECK-NEXT:    vl8r.v v24, (a2) # Unknown-size Folded Reload
3626 ; CHECK-NEXT:    csrr a2, vlenb
3627 ; CHECK-NEXT:    li a4, 24
3628 ; CHECK-NEXT:    mul a2, a2, a4
3629 ; CHECK-NEXT:    add a2, sp, a2
3630 ; CHECK-NEXT:    addi a2, a2, 16
3631 ; CHECK-NEXT:    vl8r.v v8, (a2) # Unknown-size Folded Reload
3632 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3633 ; CHECK-NEXT:    vmfeq.vv v18, v24, v8, v0.t
3634 ; CHECK-NEXT:    add a0, a1, a3
3635 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, tu, ma
3636 ; CHECK-NEXT:    vslideup.vx v17, v16, a1
3637 ; CHECK-NEXT:    slli a0, a3, 1
3638 ; CHECK-NEXT:    add a0, a0, a3
3639 ; CHECK-NEXT:    add a3, a0, a3
3640 ; CHECK-NEXT:    vsetvli zero, a3, e8, mf2, ta, ma
3641 ; CHECK-NEXT:    vslideup.vx v17, v18, a0
3642 ; CHECK-NEXT:    vmv1r.v v0, v17
3643 ; CHECK-NEXT:    csrr a0, vlenb
3644 ; CHECK-NEXT:    li a1, 48
3645 ; CHECK-NEXT:    mul a0, a0, a1
3646 ; CHECK-NEXT:    add sp, sp, a0
3647 ; CHECK-NEXT:    addi sp, sp, 16
3648 ; CHECK-NEXT:    ret
3649   %v = call <vscale x 32 x i1> @llvm.vp.fcmp.nxv32f64(<vscale x 32 x double> %va, <vscale x 32 x double> %vb, metadata !"oeq", <vscale x 32 x i1> %m, i32 %evl)
3650   ret <vscale x 32 x i1> %v