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:
16 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
17 ; ZVFH-NEXT: vmfeq.vv v0, v8, v9, v0.t
20 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv1f16:
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
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:
35 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
36 ; ZVFH-NEXT: vmfeq.vf v0, v8, fa0, v0.t
39 ; ZVFHMIN-LABEL: fcmp_oeq_vf_nxv1f16:
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
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:
60 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
61 ; ZVFH-NEXT: vmfeq.vf v0, v8, fa0, v0.t
64 ; ZVFHMIN-LABEL: fcmp_oeq_vf_swap_nxv1f16:
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
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:
85 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
86 ; ZVFH-NEXT: vmflt.vv v0, v9, v8, v0.t
89 ; ZVFHMIN-LABEL: fcmp_ogt_vv_nxv1f16:
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
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:
104 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
105 ; ZVFH-NEXT: vmfgt.vf v0, v8, fa0, v0.t
108 ; ZVFHMIN-LABEL: fcmp_ogt_vf_nxv1f16:
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
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:
129 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
130 ; ZVFH-NEXT: vmflt.vf v0, v8, fa0, v0.t
133 ; ZVFHMIN-LABEL: fcmp_ogt_vf_swap_nxv1f16:
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
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:
154 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
155 ; ZVFH-NEXT: vmfle.vv v0, v9, v8, v0.t
158 ; ZVFHMIN-LABEL: fcmp_oge_vv_nxv1f16:
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
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:
173 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
174 ; ZVFH-NEXT: vmfge.vf v0, v8, fa0, v0.t
177 ; ZVFHMIN-LABEL: fcmp_oge_vf_nxv1f16:
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
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:
198 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
199 ; ZVFH-NEXT: vmfle.vf v0, v8, fa0, v0.t
202 ; ZVFHMIN-LABEL: fcmp_oge_vf_swap_nxv1f16:
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
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:
223 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
224 ; ZVFH-NEXT: vmflt.vv v0, v8, v9, v0.t
227 ; ZVFHMIN-LABEL: fcmp_olt_vv_nxv1f16:
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
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:
242 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
243 ; ZVFH-NEXT: vmflt.vf v0, v8, fa0, v0.t
246 ; ZVFHMIN-LABEL: fcmp_olt_vf_nxv1f16:
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
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:
267 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
268 ; ZVFH-NEXT: vmfgt.vf v0, v8, fa0, v0.t
271 ; ZVFHMIN-LABEL: fcmp_olt_vf_swap_nxv1f16:
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
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:
292 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
293 ; ZVFH-NEXT: vmfle.vv v0, v8, v9, v0.t
296 ; ZVFHMIN-LABEL: fcmp_ole_vv_nxv1f16:
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
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:
311 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
312 ; ZVFH-NEXT: vmfle.vf v0, v8, fa0, v0.t
315 ; ZVFHMIN-LABEL: fcmp_ole_vf_nxv1f16:
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
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:
336 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
337 ; ZVFH-NEXT: vmfge.vf v0, v8, fa0, v0.t
340 ; ZVFHMIN-LABEL: fcmp_ole_vf_swap_nxv1f16:
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
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:
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
367 ; ZVFHMIN-LABEL: fcmp_one_vv_nxv1f16:
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
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:
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
390 ; ZVFHMIN-LABEL: fcmp_one_vf_nxv1f16:
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
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:
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
419 ; ZVFHMIN-LABEL: fcmp_one_vf_swap_nxv1f16:
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
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:
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
448 ; ZVFHMIN-LABEL: fcmp_ord_vv_nxv1f16:
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
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:
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
475 ; ZVFHMIN-LABEL: fcmp_ord_vf_nxv1f16:
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
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:
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
508 ; ZVFHMIN-LABEL: fcmp_ord_vf_swap_nxv1f16:
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
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:
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
539 ; ZVFHMIN-LABEL: fcmp_ueq_vv_nxv1f16:
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
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:
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
562 ; ZVFHMIN-LABEL: fcmp_ueq_vf_nxv1f16:
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
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:
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
591 ; ZVFHMIN-LABEL: fcmp_ueq_vf_swap_nxv1f16:
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
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:
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
619 ; ZVFHMIN-LABEL: fcmp_ugt_vv_nxv1f16:
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
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:
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
640 ; ZVFHMIN-LABEL: fcmp_ugt_vf_nxv1f16:
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
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:
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
667 ; ZVFHMIN-LABEL: fcmp_ugt_vf_swap_nxv1f16:
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
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:
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
694 ; ZVFHMIN-LABEL: fcmp_uge_vv_nxv1f16:
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
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:
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
715 ; ZVFHMIN-LABEL: fcmp_uge_vf_nxv1f16:
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
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:
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
742 ; ZVFHMIN-LABEL: fcmp_uge_vf_swap_nxv1f16:
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
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:
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
769 ; ZVFHMIN-LABEL: fcmp_ult_vv_nxv1f16:
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
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:
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
790 ; ZVFHMIN-LABEL: fcmp_ult_vf_nxv1f16:
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
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:
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
817 ; ZVFHMIN-LABEL: fcmp_ult_vf_swap_nxv1f16:
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
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:
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
844 ; ZVFHMIN-LABEL: fcmp_ule_vv_nxv1f16:
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
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:
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
865 ; ZVFHMIN-LABEL: fcmp_ule_vf_nxv1f16:
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
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:
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
892 ; ZVFHMIN-LABEL: fcmp_ule_vf_swap_nxv1f16:
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
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:
914 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
915 ; ZVFH-NEXT: vmfne.vv v0, v8, v9, v0.t
918 ; ZVFHMIN-LABEL: fcmp_une_vv_nxv1f16:
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
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:
933 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
934 ; ZVFH-NEXT: vmfne.vf v0, v8, fa0, v0.t
937 ; ZVFHMIN-LABEL: fcmp_une_vf_nxv1f16:
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
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:
958 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
959 ; ZVFH-NEXT: vmfne.vf v0, v8, fa0, v0.t
962 ; ZVFHMIN-LABEL: fcmp_une_vf_swap_nxv1f16:
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
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:
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
989 ; ZVFHMIN-LABEL: fcmp_uno_vv_nxv1f16:
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
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:
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
1016 ; ZVFHMIN-LABEL: fcmp_uno_vf_nxv1f16:
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
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:
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
1049 ; ZVFHMIN-LABEL: fcmp_uno_vf_swap_nxv1f16:
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
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:
1076 ; ZVFH-NEXT: vsetvli zero, a0, e16, m1, ta, ma
1077 ; ZVFH-NEXT: vmfeq.vv v0, v8, v9, v0.t
1080 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv3f16:
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
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:
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
1103 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv8f16:
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
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:
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
1124 ; ZVFHMIN-LABEL: fcmp_oeq_vf_nxv8f16:
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
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:
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
1151 ; ZVFHMIN-LABEL: fcmp_oeq_vf_swap_nxv8f16:
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
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:
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
1178 ; ZVFHMIN-LABEL: fcmp_ogt_vv_nxv8f16:
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
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:
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
1199 ; ZVFHMIN-LABEL: fcmp_ogt_vf_nxv8f16:
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
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:
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
1226 ; ZVFHMIN-LABEL: fcmp_ogt_vf_swap_nxv8f16:
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
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:
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
1253 ; ZVFHMIN-LABEL: fcmp_oge_vv_nxv8f16:
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
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:
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
1274 ; ZVFHMIN-LABEL: fcmp_oge_vf_nxv8f16:
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
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:
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
1301 ; ZVFHMIN-LABEL: fcmp_oge_vf_swap_nxv8f16:
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
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:
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
1328 ; ZVFHMIN-LABEL: fcmp_olt_vv_nxv8f16:
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
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:
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
1349 ; ZVFHMIN-LABEL: fcmp_olt_vf_nxv8f16:
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
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:
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
1376 ; ZVFHMIN-LABEL: fcmp_olt_vf_swap_nxv8f16:
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
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:
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
1403 ; ZVFHMIN-LABEL: fcmp_ole_vv_nxv8f16:
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
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:
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
1424 ; ZVFHMIN-LABEL: fcmp_ole_vf_nxv8f16:
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
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:
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
1451 ; ZVFHMIN-LABEL: fcmp_ole_vf_swap_nxv8f16:
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
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:
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
1479 ; ZVFHMIN-LABEL: fcmp_one_vv_nxv8f16:
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
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:
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
1502 ; ZVFHMIN-LABEL: fcmp_one_vf_nxv8f16:
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
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:
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
1531 ; ZVFHMIN-LABEL: fcmp_one_vf_swap_nxv8f16:
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
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:
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
1560 ; ZVFHMIN-LABEL: fcmp_ord_vv_nxv8f16:
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
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:
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
1587 ; ZVFHMIN-LABEL: fcmp_ord_vf_nxv8f16:
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
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:
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
1620 ; ZVFHMIN-LABEL: fcmp_ord_vf_swap_nxv8f16:
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
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:
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
1651 ; ZVFHMIN-LABEL: fcmp_ueq_vv_nxv8f16:
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
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:
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
1674 ; ZVFHMIN-LABEL: fcmp_ueq_vf_nxv8f16:
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
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:
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
1703 ; ZVFHMIN-LABEL: fcmp_ueq_vf_swap_nxv8f16:
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
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:
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
1731 ; ZVFHMIN-LABEL: fcmp_ugt_vv_nxv8f16:
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
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:
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
1752 ; ZVFHMIN-LABEL: fcmp_ugt_vf_nxv8f16:
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
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:
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
1779 ; ZVFHMIN-LABEL: fcmp_ugt_vf_swap_nxv8f16:
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
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:
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
1806 ; ZVFHMIN-LABEL: fcmp_uge_vv_nxv8f16:
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
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:
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
1827 ; ZVFHMIN-LABEL: fcmp_uge_vf_nxv8f16:
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
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:
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
1854 ; ZVFHMIN-LABEL: fcmp_uge_vf_swap_nxv8f16:
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
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:
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
1881 ; ZVFHMIN-LABEL: fcmp_ult_vv_nxv8f16:
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
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:
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
1902 ; ZVFHMIN-LABEL: fcmp_ult_vf_nxv8f16:
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
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:
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
1929 ; ZVFHMIN-LABEL: fcmp_ult_vf_swap_nxv8f16:
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
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:
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
1956 ; ZVFHMIN-LABEL: fcmp_ule_vv_nxv8f16:
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
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:
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
1977 ; ZVFHMIN-LABEL: fcmp_ule_vf_nxv8f16:
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
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:
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
2004 ; ZVFHMIN-LABEL: fcmp_ule_vf_swap_nxv8f16:
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
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:
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
2031 ; ZVFHMIN-LABEL: fcmp_une_vv_nxv8f16:
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
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:
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
2052 ; ZVFHMIN-LABEL: fcmp_une_vf_nxv8f16:
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
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:
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
2079 ; ZVFHMIN-LABEL: fcmp_une_vf_swap_nxv8f16:
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
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:
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
2107 ; ZVFHMIN-LABEL: fcmp_uno_vv_nxv8f16:
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
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:
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
2134 ; ZVFHMIN-LABEL: fcmp_uno_vf_nxv8f16:
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
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:
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
2167 ; ZVFHMIN-LABEL: fcmp_uno_vf_swap_nxv8f16:
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
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:
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 a1, vlenb
2207 ; ZVFH-NEXT: vsetvli a3, zero, e8, m1, ta, ma
2208 ; ZVFH-NEXT: slli a3, a1, 3
2209 ; ZVFH-NEXT: add a3, a0, a3
2210 ; ZVFH-NEXT: vl8re16.v v8, (a3)
2211 ; ZVFH-NEXT: slli a3, a1, 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: and a4, a5, a4
2216 ; ZVFH-NEXT: srli a1, a1, 1
2217 ; ZVFH-NEXT: vl8re16.v v0, (a0)
2218 ; ZVFH-NEXT: addi a0, sp, 16
2219 ; ZVFH-NEXT: vs8r.v v0, (a0) # Unknown-size Folded Spill
2220 ; ZVFH-NEXT: vslidedown.vx v0, v24, a1
2221 ; ZVFH-NEXT: vsetvli zero, a4, e16, m8, ta, ma
2222 ; ZVFH-NEXT: vmfeq.vv v1, 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: vsetvli zero, a2, e16, m8, ta, ma
2228 ; ZVFH-NEXT: vmv1r.v v0, v24
2229 ; ZVFH-NEXT: csrr a0, vlenb
2230 ; ZVFH-NEXT: slli a0, a0, 3
2231 ; ZVFH-NEXT: add a0, sp, a0
2232 ; ZVFH-NEXT: addi a0, a0, 16
2233 ; ZVFH-NEXT: vl8r.v v8, (a0) # Unknown-size Folded Reload
2234 ; ZVFH-NEXT: addi a0, sp, 16
2235 ; ZVFH-NEXT: vl8r.v v24, (a0) # Unknown-size Folded Reload
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, tu, ma
2239 ; ZVFH-NEXT: vslideup.vx v16, v1, a1
2240 ; ZVFH-NEXT: vmv1r.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
2247 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv64f16:
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: vsetvli a1, zero, e8, m1, ta, ma
2265 ; ZVFHMIN-NEXT: slli a1, a3, 3
2266 ; ZVFHMIN-NEXT: add a1, a0, a1
2267 ; ZVFHMIN-NEXT: vl8re16.v v16, (a1)
2268 ; ZVFHMIN-NEXT: slli a5, a3, 2
2269 ; ZVFHMIN-NEXT: sub a1, a2, a5
2270 ; ZVFHMIN-NEXT: sltu a4, a2, a1
2271 ; ZVFHMIN-NEXT: addi a4, a4, -1
2272 ; ZVFHMIN-NEXT: and a6, a4, a1
2273 ; ZVFHMIN-NEXT: slli a4, a3, 1
2274 ; ZVFHMIN-NEXT: sub a1, a6, a4
2275 ; ZVFHMIN-NEXT: sltu a7, a6, a1
2276 ; ZVFHMIN-NEXT: addi a7, a7, -1
2277 ; ZVFHMIN-NEXT: and a7, a7, a1
2278 ; ZVFHMIN-NEXT: srli a1, a3, 1
2279 ; ZVFHMIN-NEXT: csrr t0, vlenb
2280 ; ZVFHMIN-NEXT: add t0, sp, t0
2281 ; ZVFHMIN-NEXT: addi t0, t0, 16
2282 ; ZVFHMIN-NEXT: vs1r.v v0, (t0) # Unknown-size Folded Spill
2283 ; ZVFHMIN-NEXT: vslidedown.vx v0, v0, a1
2284 ; ZVFHMIN-NEXT: srli a3, a3, 2
2285 ; ZVFHMIN-NEXT: vl8re16.v v8, (a0)
2286 ; ZVFHMIN-NEXT: csrr a0, vlenb
2287 ; ZVFHMIN-NEXT: li t0, 26
2288 ; ZVFHMIN-NEXT: mul a0, a0, t0
2289 ; ZVFHMIN-NEXT: add a0, sp, a0
2290 ; ZVFHMIN-NEXT: addi a0, a0, 16
2291 ; ZVFHMIN-NEXT: vs8r.v v8, (a0) # Unknown-size Folded Spill
2292 ; ZVFHMIN-NEXT: vsetvli a0, zero, e8, mf2, ta, ma
2293 ; ZVFHMIN-NEXT: addi a0, sp, 16
2294 ; ZVFHMIN-NEXT: vs1r.v v0, (a0) # Unknown-size Folded Spill
2295 ; ZVFHMIN-NEXT: vslidedown.vx v0, v0, a3
2296 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
2297 ; ZVFHMIN-NEXT: csrr a0, vlenb
2298 ; ZVFHMIN-NEXT: slli a0, a0, 1
2299 ; ZVFHMIN-NEXT: add a0, sp, a0
2300 ; ZVFHMIN-NEXT: addi a0, a0, 16
2301 ; ZVFHMIN-NEXT: vs8r.v v16, (a0) # Unknown-size Folded Spill
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: vsetvli a0, zero, e16, m4, ta, ma
2318 ; ZVFHMIN-NEXT: csrr a0, vlenb
2319 ; ZVFHMIN-NEXT: slli a0, a0, 1
2320 ; ZVFHMIN-NEXT: add a0, sp, a0
2321 ; ZVFHMIN-NEXT: addi a0, a0, 16
2322 ; ZVFHMIN-NEXT: vl8r.v v16, (a0) # Unknown-size Folded Reload
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: vsetvli zero, a6, e32, m8, ta, ma
2332 ; ZVFHMIN-NEXT: addi a0, sp, 16
2333 ; ZVFHMIN-NEXT: vl1r.v v0, (a0) # Unknown-size Folded Reload
2334 ; ZVFHMIN-NEXT: vmfeq.vv v2, 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, tu, ma
2341 ; ZVFHMIN-NEXT: vslideup.vx v2, 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: vsetvli a6, zero, e8, mf2, ta, ma
2347 ; ZVFHMIN-NEXT: csrr a6, vlenb
2348 ; ZVFHMIN-NEXT: add a6, sp, a6
2349 ; ZVFHMIN-NEXT: addi a6, a6, 16
2350 ; ZVFHMIN-NEXT: vl1r.v v8, (a6) # Unknown-size Folded Reload
2351 ; ZVFHMIN-NEXT: vmv1r.v v1, v8
2352 ; ZVFHMIN-NEXT: vslidedown.vx v0, v8, a3
2353 ; ZVFHMIN-NEXT: vsetvli a6, zero, e16, m4, ta, ma
2354 ; ZVFHMIN-NEXT: csrr a6, vlenb
2355 ; ZVFHMIN-NEXT: li a7, 18
2356 ; ZVFHMIN-NEXT: mul a6, a6, a7
2357 ; ZVFHMIN-NEXT: add a6, sp, a6
2358 ; ZVFHMIN-NEXT: addi a6, a6, 16
2359 ; ZVFHMIN-NEXT: vl8r.v v24, (a6) # Unknown-size Folded Reload
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: vsetvli zero, a5, e32, m8, ta, ma
2375 ; ZVFHMIN-NEXT: csrr a5, vlenb
2376 ; ZVFHMIN-NEXT: li a6, 10
2377 ; ZVFHMIN-NEXT: mul a5, a5, a6
2378 ; ZVFHMIN-NEXT: add a5, sp, a5
2379 ; ZVFHMIN-NEXT: addi a5, a5, 16
2380 ; ZVFHMIN-NEXT: vl8r.v v16, (a5) # Unknown-size Folded Reload
2381 ; ZVFHMIN-NEXT: vmfeq.vv v3, 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: vsetvli zero, a2, e32, m8, ta, ma
2396 ; ZVFHMIN-NEXT: vmv1r.v v0, v1
2397 ; ZVFHMIN-NEXT: vmfeq.vv v8, v16, v24, v0.t
2398 ; ZVFHMIN-NEXT: vsetvli zero, a0, e8, mf2, tu, ma
2399 ; ZVFHMIN-NEXT: vslideup.vx v8, v3, a3
2400 ; ZVFHMIN-NEXT: add a0, a1, a1
2401 ; ZVFHMIN-NEXT: vsetvli zero, a0, e8, m1, tu, ma
2402 ; ZVFHMIN-NEXT: vslideup.vx v8, v2, a1
2403 ; ZVFHMIN-NEXT: vmv1r.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
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:
2419 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2420 ; CHECK-NEXT: vmfeq.vv v0, v8, v9, v0.t
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:
2429 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2430 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0, v0.t
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:
2441 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2442 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0, v0.t
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:
2453 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2454 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
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:
2463 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2464 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
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:
2475 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2476 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
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:
2487 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2488 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
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:
2497 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2498 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
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:
2509 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2510 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
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:
2521 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2522 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
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:
2531 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2532 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
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:
2543 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2544 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
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:
2555 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2556 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
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:
2565 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2566 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
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:
2577 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2578 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
2861 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2862 ; CHECK-NEXT: vmfne.vv v0, v8, v9, v0.t
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:
2871 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2872 ; CHECK-NEXT: vmfne.vf v0, v8, fa0, v0.t
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:
2883 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
2884 ; CHECK-NEXT: vmfne.vf v0, v8, fa0, v0.t
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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
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:
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 a3, vlenb
3514 ; CHECK-NEXT: li a1, 24
3515 ; CHECK-NEXT: mul t2, a3, a1
3516 ; CHECK-NEXT: slli t1, a3, 3
3517 ; CHECK-NEXT: srli a4, a3, 2
3518 ; CHECK-NEXT: vsetvli a1, zero, e8, mf2, ta, ma
3519 ; CHECK-NEXT: vslidedown.vx v1, v0, a4
3520 ; CHECK-NEXT: srli a1, a3, 3
3521 ; CHECK-NEXT: vsetvli a5, zero, e8, mf4, ta, ma
3522 ; CHECK-NEXT: add a5, a2, t1
3523 ; CHECK-NEXT: vl8re64.v v8, (a5)
3524 ; CHECK-NEXT: slli t0, a3, 4
3525 ; CHECK-NEXT: slli a5, a3, 1
3526 ; CHECK-NEXT: vslidedown.vx v0, v0, a1
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, a2, t2
3533 ; CHECK-NEXT: add t1, a0, t1
3534 ; CHECK-NEXT: add t0, a2, t0
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, a3
3542 ; CHECK-NEXT: sltu t3, a7, a2
3543 ; CHECK-NEXT: addi t3, t3, -1
3544 ; CHECK-NEXT: and a2, t3, a2
3545 ; CHECK-NEXT: vsetvli zero, a2, e64, m8, ta, ma
3546 ; CHECK-NEXT: csrr a2, vlenb
3547 ; CHECK-NEXT: slli a2, a2, 5
3548 ; CHECK-NEXT: add a2, sp, a2
3549 ; CHECK-NEXT: addi a2, a2, 16
3550 ; CHECK-NEXT: vl8r.v v16, (a2) # Unknown-size Folded Reload
3551 ; CHECK-NEXT: vmfeq.vv v2, v16, v8, v0.t
3552 ; CHECK-NEXT: bltu a7, a3, .LBB171_4
3553 ; CHECK-NEXT: # %bb.3:
3554 ; CHECK-NEXT: mv a7, a3
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, v1, a1
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: vsetvli zero, a7, e64, m8, ta, ma
3581 ; CHECK-NEXT: vmv1r.v v0, v24
3582 ; CHECK-NEXT: csrr a0, vlenb
3583 ; CHECK-NEXT: li a2, 40
3584 ; CHECK-NEXT: mul a0, a0, a2
3585 ; CHECK-NEXT: add a0, sp, a0
3586 ; CHECK-NEXT: addi a0, a0, 16
3587 ; CHECK-NEXT: vl8r.v v24, (a0) # Unknown-size Folded Reload
3588 ; CHECK-NEXT: csrr a0, vlenb
3589 ; CHECK-NEXT: slli a0, a0, 4
3590 ; CHECK-NEXT: add a0, sp, a0
3591 ; CHECK-NEXT: addi a0, a0, 16
3592 ; CHECK-NEXT: vl8r.v v8, (a0) # Unknown-size Folded Reload
3593 ; CHECK-NEXT: vmfeq.vv v17, v24, v8, v0.t
3594 ; CHECK-NEXT: add a0, a1, a1
3595 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, tu, ma
3596 ; CHECK-NEXT: sub a0, a6, a5
3597 ; CHECK-NEXT: sltu a2, a6, a0
3598 ; CHECK-NEXT: addi a2, a2, -1
3599 ; CHECK-NEXT: and a0, a2, a0
3600 ; CHECK-NEXT: vslideup.vx v17, v2, a1
3601 ; CHECK-NEXT: mv a2, a0
3602 ; CHECK-NEXT: bltu a0, a3, .LBB171_6
3603 ; CHECK-NEXT: # %bb.5:
3604 ; CHECK-NEXT: mv a2, a3
3605 ; CHECK-NEXT: .LBB171_6:
3606 ; CHECK-NEXT: vsetvli zero, a2, e64, m8, ta, ma
3607 ; CHECK-NEXT: vmv1r.v v0, v1
3608 ; CHECK-NEXT: csrr a2, vlenb
3609 ; CHECK-NEXT: slli a2, a2, 3
3610 ; CHECK-NEXT: add a2, sp, a2
3611 ; CHECK-NEXT: addi a2, a2, 16
3612 ; CHECK-NEXT: vl8r.v v8, (a2) # Unknown-size Folded Reload
3613 ; CHECK-NEXT: addi a2, sp, 16
3614 ; CHECK-NEXT: vl8r.v v24, (a2) # Unknown-size Folded Reload
3615 ; CHECK-NEXT: vmfeq.vv v16, v24, v8, v0.t
3616 ; CHECK-NEXT: add a2, a4, a1
3617 ; CHECK-NEXT: vsetvli zero, a2, e8, mf2, tu, ma
3618 ; CHECK-NEXT: vslideup.vx v17, v16, a4
3619 ; CHECK-NEXT: sub a2, a0, a3
3620 ; CHECK-NEXT: sltu a0, a0, a2
3621 ; CHECK-NEXT: addi a0, a0, -1
3622 ; CHECK-NEXT: and a0, a0, a2
3623 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
3624 ; CHECK-NEXT: vmv1r.v v0, v18
3625 ; CHECK-NEXT: csrr a0, vlenb
3626 ; CHECK-NEXT: slli a0, a0, 5
3627 ; CHECK-NEXT: add a0, sp, a0
3628 ; CHECK-NEXT: addi a0, a0, 16
3629 ; CHECK-NEXT: vl8r.v v24, (a0) # Unknown-size Folded Reload
3630 ; CHECK-NEXT: csrr a0, vlenb
3631 ; CHECK-NEXT: li a2, 24
3632 ; CHECK-NEXT: mul a0, a0, a2
3633 ; CHECK-NEXT: add a0, sp, a0
3634 ; CHECK-NEXT: addi a0, a0, 16
3635 ; CHECK-NEXT: vl8r.v v8, (a0) # Unknown-size Folded Reload
3636 ; CHECK-NEXT: vmfeq.vv v16, v8, v24, v0.t
3637 ; CHECK-NEXT: slli a0, a1, 1
3638 ; CHECK-NEXT: add a0, a0, a1
3639 ; CHECK-NEXT: add a1, a0, a1
3640 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, tu, ma
3641 ; CHECK-NEXT: vslideup.vx v17, v16, 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
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