1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+zfbfmin,+zvfbfmin,+v \
3 ; RUN: -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s \
4 ; RUN: --check-prefixes=CHECK,ZVFH
5 ; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+zfbfmin,+zvfbfmin,+v \
6 ; RUN: -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s \
7 ; RUN: --check-prefixes=CHECK,ZVFH
8 ; RUN: llc -mtriple=riscv32 -mattr=+d,+zfhmin,+zvfhmin,+zfbfmin,+zvfbfmin,+v \
9 ; RUN: -target-abi=ilp32d -verify-machineinstrs < %s | FileCheck %s \
10 ; RUN: --check-prefixes=CHECK,ZVFHMIN
11 ; RUN: llc -mtriple=riscv64 -mattr=+d,+zfhmin,+zvfhmin,+zfbfmin,+zvfbfmin,+v \
12 ; RUN: -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s \
13 ; RUN: --check-prefixes=CHECK,ZVFHMIN
15 declare <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat>, <vscale x 1 x bfloat>, metadata, <vscale x 1 x i1>, i32)
17 define <vscale x 1 x i1> @fcmp_oeq_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
18 ; CHECK-LABEL: fcmp_oeq_vv_nxv1bf16:
20 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
21 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v9
22 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
23 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
24 ; CHECK-NEXT: vmfeq.vv v0, v9, v10, v0.t
26 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"oeq", <vscale x 1 x i1> %m, i32 %evl)
27 ret <vscale x 1 x i1> %v
30 define <vscale x 1 x i1> @fcmp_oeq_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
31 ; CHECK-LABEL: fcmp_oeq_vf_nxv1bf16:
33 ; CHECK-NEXT: fmv.x.h a1, fa0
34 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
35 ; CHECK-NEXT: vmv.v.x v9, a1
36 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
37 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
38 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
39 ; CHECK-NEXT: vmfeq.vv v0, v10, v8, v0.t
41 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
42 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
43 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"oeq", <vscale x 1 x i1> %m, i32 %evl)
44 ret <vscale x 1 x i1> %v
47 define <vscale x 1 x i1> @fcmp_oeq_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
48 ; CHECK-LABEL: fcmp_oeq_vf_swap_nxv1bf16:
50 ; CHECK-NEXT: fmv.x.h a1, fa0
51 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
52 ; CHECK-NEXT: vmv.v.x v9, a1
53 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
54 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
55 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
56 ; CHECK-NEXT: vmfeq.vv v0, v8, v10, v0.t
58 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
59 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
60 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"oeq", <vscale x 1 x i1> %m, i32 %evl)
61 ret <vscale x 1 x i1> %v
64 define <vscale x 1 x i1> @fcmp_ogt_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
65 ; CHECK-LABEL: fcmp_ogt_vv_nxv1bf16:
67 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
68 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
69 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
70 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
71 ; CHECK-NEXT: vmflt.vv v0, v8, v10, v0.t
73 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ogt", <vscale x 1 x i1> %m, i32 %evl)
74 ret <vscale x 1 x i1> %v
77 define <vscale x 1 x i1> @fcmp_ogt_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
78 ; CHECK-LABEL: fcmp_ogt_vf_nxv1bf16:
80 ; CHECK-NEXT: fmv.x.h a1, fa0
81 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
82 ; CHECK-NEXT: vmv.v.x v9, a1
83 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
84 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
85 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
86 ; CHECK-NEXT: vmflt.vv v0, v8, v10, v0.t
88 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
89 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
90 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ogt", <vscale x 1 x i1> %m, i32 %evl)
91 ret <vscale x 1 x i1> %v
94 define <vscale x 1 x i1> @fcmp_ogt_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
95 ; CHECK-LABEL: fcmp_ogt_vf_swap_nxv1bf16:
97 ; CHECK-NEXT: fmv.x.h a1, fa0
98 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
99 ; CHECK-NEXT: vmv.v.x v9, a1
100 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
101 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
102 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
103 ; CHECK-NEXT: vmflt.vv v0, v10, v8, v0.t
105 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
106 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
107 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"ogt", <vscale x 1 x i1> %m, i32 %evl)
108 ret <vscale x 1 x i1> %v
111 define <vscale x 1 x i1> @fcmp_oge_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
112 ; CHECK-LABEL: fcmp_oge_vv_nxv1bf16:
114 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
115 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
116 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
117 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
118 ; CHECK-NEXT: vmfle.vv v0, v8, v10, v0.t
120 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"oge", <vscale x 1 x i1> %m, i32 %evl)
121 ret <vscale x 1 x i1> %v
124 define <vscale x 1 x i1> @fcmp_oge_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
125 ; CHECK-LABEL: fcmp_oge_vf_nxv1bf16:
127 ; CHECK-NEXT: fmv.x.h a1, fa0
128 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
129 ; CHECK-NEXT: vmv.v.x v9, a1
130 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
131 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
132 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
133 ; CHECK-NEXT: vmfle.vv v0, v8, v10, v0.t
135 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
136 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
137 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"oge", <vscale x 1 x i1> %m, i32 %evl)
138 ret <vscale x 1 x i1> %v
141 define <vscale x 1 x i1> @fcmp_oge_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
142 ; CHECK-LABEL: fcmp_oge_vf_swap_nxv1bf16:
144 ; CHECK-NEXT: fmv.x.h a1, fa0
145 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
146 ; CHECK-NEXT: vmv.v.x v9, a1
147 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
148 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
149 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
150 ; CHECK-NEXT: vmfle.vv v0, v10, v8, v0.t
152 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
153 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
154 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"oge", <vscale x 1 x i1> %m, i32 %evl)
155 ret <vscale x 1 x i1> %v
158 define <vscale x 1 x i1> @fcmp_olt_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
159 ; CHECK-LABEL: fcmp_olt_vv_nxv1bf16:
161 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
162 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v9
163 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
164 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
165 ; CHECK-NEXT: vmflt.vv v0, v9, v10, v0.t
167 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"olt", <vscale x 1 x i1> %m, i32 %evl)
168 ret <vscale x 1 x i1> %v
171 define <vscale x 1 x i1> @fcmp_olt_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
172 ; CHECK-LABEL: fcmp_olt_vf_nxv1bf16:
174 ; CHECK-NEXT: fmv.x.h a1, fa0
175 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
176 ; CHECK-NEXT: vmv.v.x v9, a1
177 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
178 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
179 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
180 ; CHECK-NEXT: vmflt.vv v0, v10, v8, v0.t
182 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
183 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
184 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"olt", <vscale x 1 x i1> %m, i32 %evl)
185 ret <vscale x 1 x i1> %v
188 define <vscale x 1 x i1> @fcmp_olt_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
189 ; CHECK-LABEL: fcmp_olt_vf_swap_nxv1bf16:
191 ; CHECK-NEXT: fmv.x.h a1, fa0
192 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
193 ; CHECK-NEXT: vmv.v.x v9, a1
194 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
195 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
196 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
197 ; CHECK-NEXT: vmflt.vv v0, v8, v10, v0.t
199 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
200 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
201 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"olt", <vscale x 1 x i1> %m, i32 %evl)
202 ret <vscale x 1 x i1> %v
205 define <vscale x 1 x i1> @fcmp_ole_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
206 ; CHECK-LABEL: fcmp_ole_vv_nxv1bf16:
208 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
209 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v9
210 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
211 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
212 ; CHECK-NEXT: vmfle.vv v0, v9, v10, v0.t
214 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ole", <vscale x 1 x i1> %m, i32 %evl)
215 ret <vscale x 1 x i1> %v
218 define <vscale x 1 x i1> @fcmp_ole_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
219 ; CHECK-LABEL: fcmp_ole_vf_nxv1bf16:
221 ; CHECK-NEXT: fmv.x.h a1, fa0
222 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
223 ; CHECK-NEXT: vmv.v.x v9, a1
224 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
225 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
226 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
227 ; CHECK-NEXT: vmfle.vv v0, v10, v8, v0.t
229 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
230 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
231 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ole", <vscale x 1 x i1> %m, i32 %evl)
232 ret <vscale x 1 x i1> %v
235 define <vscale x 1 x i1> @fcmp_ole_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
236 ; CHECK-LABEL: fcmp_ole_vf_swap_nxv1bf16:
238 ; CHECK-NEXT: fmv.x.h a1, fa0
239 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
240 ; CHECK-NEXT: vmv.v.x v9, a1
241 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
242 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
243 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
244 ; CHECK-NEXT: vmfle.vv v0, v8, v10, v0.t
246 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
247 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
248 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"ole", <vscale x 1 x i1> %m, i32 %evl)
249 ret <vscale x 1 x i1> %v
252 define <vscale x 1 x i1> @fcmp_one_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
253 ; CHECK-LABEL: fcmp_one_vv_nxv1bf16:
255 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
256 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v9
257 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
258 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
259 ; CHECK-NEXT: vmflt.vv v8, v9, v10, v0.t
260 ; CHECK-NEXT: vmflt.vv v9, v10, v9, v0.t
261 ; CHECK-NEXT: vmor.mm v0, v9, v8
263 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"one", <vscale x 1 x i1> %m, i32 %evl)
264 ret <vscale x 1 x i1> %v
267 define <vscale x 1 x i1> @fcmp_one_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
268 ; CHECK-LABEL: fcmp_one_vf_nxv1bf16:
270 ; CHECK-NEXT: fmv.x.h a1, fa0
271 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
272 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
273 ; CHECK-NEXT: vmv.v.x v8, a1
274 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
275 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
276 ; CHECK-NEXT: vmflt.vv v8, v9, v10, v0.t
277 ; CHECK-NEXT: vmflt.vv v9, v10, v9, v0.t
278 ; CHECK-NEXT: vmor.mm v0, v9, v8
280 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
281 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
282 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"one", <vscale x 1 x i1> %m, i32 %evl)
283 ret <vscale x 1 x i1> %v
286 define <vscale x 1 x i1> @fcmp_one_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
287 ; CHECK-LABEL: fcmp_one_vf_swap_nxv1bf16:
289 ; CHECK-NEXT: fmv.x.h a1, fa0
290 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
291 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
292 ; CHECK-NEXT: vmv.v.x v8, a1
293 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
294 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
295 ; CHECK-NEXT: vmflt.vv v8, v10, v9, v0.t
296 ; CHECK-NEXT: vmflt.vv v9, v9, v10, v0.t
297 ; CHECK-NEXT: vmor.mm v0, v9, v8
299 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
300 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
301 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"one", <vscale x 1 x i1> %m, i32 %evl)
302 ret <vscale x 1 x i1> %v
305 define <vscale x 1 x i1> @fcmp_ord_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
306 ; CHECK-LABEL: fcmp_ord_vv_nxv1bf16:
308 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
309 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v9
310 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
311 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
312 ; CHECK-NEXT: vmfeq.vv v8, v10, v10, v0.t
313 ; CHECK-NEXT: vmfeq.vv v9, v9, v9, v0.t
314 ; CHECK-NEXT: vmand.mm v0, v9, v8
316 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ord", <vscale x 1 x i1> %m, i32 %evl)
317 ret <vscale x 1 x i1> %v
320 define <vscale x 1 x i1> @fcmp_ord_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
321 ; CHECK-LABEL: fcmp_ord_vf_nxv1bf16:
323 ; CHECK-NEXT: fmv.x.h a1, fa0
324 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
325 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
326 ; CHECK-NEXT: vmv.v.x v8, a1
327 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
328 ; CHECK-NEXT: vmfeq.vv v9, v9, v9, v0.t
329 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
330 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
331 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
332 ; CHECK-NEXT: vmfeq.vv v8, v10, v10, v0.t
333 ; CHECK-NEXT: vmand.mm v0, v9, v8
335 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
336 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
337 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ord", <vscale x 1 x i1> %m, i32 %evl)
338 ret <vscale x 1 x i1> %v
341 define <vscale x 1 x i1> @fcmp_ord_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
342 ; CHECK-LABEL: fcmp_ord_vf_swap_nxv1bf16:
344 ; CHECK-NEXT: fmv.x.h a1, fa0
345 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
346 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
347 ; CHECK-NEXT: vmv.v.x v8, a1
348 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
349 ; CHECK-NEXT: vmfeq.vv v9, v9, v9, v0.t
350 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
351 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
352 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
353 ; CHECK-NEXT: vmfeq.vv v8, v10, v10, v0.t
354 ; CHECK-NEXT: vmand.mm v0, v8, v9
356 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
357 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
358 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"ord", <vscale x 1 x i1> %m, i32 %evl)
359 ret <vscale x 1 x i1> %v
362 define <vscale x 1 x i1> @fcmp_ueq_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
363 ; CHECK-LABEL: fcmp_ueq_vv_nxv1bf16:
365 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
366 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v9
367 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
368 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
369 ; CHECK-NEXT: vmflt.vv v8, v9, v10, v0.t
370 ; CHECK-NEXT: vmflt.vv v9, v10, v9, v0.t
371 ; CHECK-NEXT: vmnor.mm v0, v9, v8
373 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ueq", <vscale x 1 x i1> %m, i32 %evl)
374 ret <vscale x 1 x i1> %v
377 define <vscale x 1 x i1> @fcmp_ueq_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
378 ; CHECK-LABEL: fcmp_ueq_vf_nxv1bf16:
380 ; CHECK-NEXT: fmv.x.h a1, fa0
381 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
382 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
383 ; CHECK-NEXT: vmv.v.x v8, a1
384 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
385 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
386 ; CHECK-NEXT: vmflt.vv v8, v9, v10, v0.t
387 ; CHECK-NEXT: vmflt.vv v9, v10, v9, v0.t
388 ; CHECK-NEXT: vmnor.mm v0, v9, v8
390 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
391 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
392 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ueq", <vscale x 1 x i1> %m, i32 %evl)
393 ret <vscale x 1 x i1> %v
396 define <vscale x 1 x i1> @fcmp_ueq_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
397 ; CHECK-LABEL: fcmp_ueq_vf_swap_nxv1bf16:
399 ; CHECK-NEXT: fmv.x.h a1, fa0
400 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
401 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
402 ; CHECK-NEXT: vmv.v.x v8, a1
403 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
404 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
405 ; CHECK-NEXT: vmflt.vv v8, v10, v9, v0.t
406 ; CHECK-NEXT: vmflt.vv v9, v9, v10, v0.t
407 ; CHECK-NEXT: vmnor.mm v0, v9, v8
409 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
410 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
411 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"ueq", <vscale x 1 x i1> %m, i32 %evl)
412 ret <vscale x 1 x i1> %v
415 define <vscale x 1 x i1> @fcmp_ugt_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
416 ; CHECK-LABEL: fcmp_ugt_vv_nxv1bf16:
418 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
419 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v9
420 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
421 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
422 ; CHECK-NEXT: vmfle.vv v8, v9, v10, v0.t
423 ; CHECK-NEXT: vmnot.m v0, v8
425 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
426 ret <vscale x 1 x i1> %v
429 define <vscale x 1 x i1> @fcmp_ugt_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
430 ; CHECK-LABEL: fcmp_ugt_vf_nxv1bf16:
432 ; CHECK-NEXT: fmv.x.h a1, fa0
433 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
434 ; CHECK-NEXT: vmv.v.x v9, a1
435 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
436 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
437 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
438 ; CHECK-NEXT: vmfle.vv v8, v10, v8, v0.t
439 ; CHECK-NEXT: vmnot.m v0, v8
441 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
442 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
443 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
444 ret <vscale x 1 x i1> %v
447 define <vscale x 1 x i1> @fcmp_ugt_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
448 ; CHECK-LABEL: fcmp_ugt_vf_swap_nxv1bf16:
450 ; CHECK-NEXT: fmv.x.h a1, fa0
451 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
452 ; CHECK-NEXT: vmv.v.x v9, a1
453 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
454 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
455 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
456 ; CHECK-NEXT: vmfle.vv v8, v8, v10, v0.t
457 ; CHECK-NEXT: vmnot.m v0, v8
459 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
460 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
461 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
462 ret <vscale x 1 x i1> %v
465 define <vscale x 1 x i1> @fcmp_uge_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
466 ; CHECK-LABEL: fcmp_uge_vv_nxv1bf16:
468 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
469 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v9
470 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
471 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
472 ; CHECK-NEXT: vmflt.vv v8, v9, v10, v0.t
473 ; CHECK-NEXT: vmnot.m v0, v8
475 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
476 ret <vscale x 1 x i1> %v
479 define <vscale x 1 x i1> @fcmp_uge_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
480 ; CHECK-LABEL: fcmp_uge_vf_nxv1bf16:
482 ; CHECK-NEXT: fmv.x.h a1, fa0
483 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
484 ; CHECK-NEXT: vmv.v.x v9, a1
485 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
486 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
487 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
488 ; CHECK-NEXT: vmflt.vv v8, v10, v8, v0.t
489 ; CHECK-NEXT: vmnot.m v0, v8
491 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
492 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
493 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
494 ret <vscale x 1 x i1> %v
497 define <vscale x 1 x i1> @fcmp_uge_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
498 ; CHECK-LABEL: fcmp_uge_vf_swap_nxv1bf16:
500 ; CHECK-NEXT: fmv.x.h a1, fa0
501 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
502 ; CHECK-NEXT: vmv.v.x v9, a1
503 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
504 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
505 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
506 ; CHECK-NEXT: vmflt.vv v8, v8, v10, v0.t
507 ; CHECK-NEXT: vmnot.m v0, v8
509 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
510 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
511 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
512 ret <vscale x 1 x i1> %v
515 define <vscale x 1 x i1> @fcmp_ult_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
516 ; CHECK-LABEL: fcmp_ult_vv_nxv1bf16:
518 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
519 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
520 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
521 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
522 ; CHECK-NEXT: vmfle.vv v8, v8, v10, v0.t
523 ; CHECK-NEXT: vmnot.m v0, v8
525 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
526 ret <vscale x 1 x i1> %v
529 define <vscale x 1 x i1> @fcmp_ult_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
530 ; CHECK-LABEL: fcmp_ult_vf_nxv1bf16:
532 ; CHECK-NEXT: fmv.x.h a1, fa0
533 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
534 ; CHECK-NEXT: vmv.v.x v9, a1
535 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
536 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
537 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
538 ; CHECK-NEXT: vmfle.vv v8, v8, v10, v0.t
539 ; CHECK-NEXT: vmnot.m v0, v8
541 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
542 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
543 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
544 ret <vscale x 1 x i1> %v
547 define <vscale x 1 x i1> @fcmp_ult_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
548 ; CHECK-LABEL: fcmp_ult_vf_swap_nxv1bf16:
550 ; CHECK-NEXT: fmv.x.h a1, fa0
551 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
552 ; CHECK-NEXT: vmv.v.x v9, a1
553 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
554 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
555 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
556 ; CHECK-NEXT: vmfle.vv v8, v10, v8, v0.t
557 ; CHECK-NEXT: vmnot.m v0, v8
559 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
560 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
561 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
562 ret <vscale x 1 x i1> %v
565 define <vscale x 1 x i1> @fcmp_ule_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
566 ; CHECK-LABEL: fcmp_ule_vv_nxv1bf16:
568 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
569 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
570 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
571 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
572 ; CHECK-NEXT: vmflt.vv v8, v8, v10, v0.t
573 ; CHECK-NEXT: vmnot.m v0, v8
575 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ule", <vscale x 1 x i1> %m, i32 %evl)
576 ret <vscale x 1 x i1> %v
579 define <vscale x 1 x i1> @fcmp_ule_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
580 ; CHECK-LABEL: fcmp_ule_vf_nxv1bf16:
582 ; CHECK-NEXT: fmv.x.h a1, fa0
583 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
584 ; CHECK-NEXT: vmv.v.x v9, a1
585 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
586 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
587 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
588 ; CHECK-NEXT: vmflt.vv v8, v8, v10, v0.t
589 ; CHECK-NEXT: vmnot.m v0, v8
591 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
592 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
593 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"ule", <vscale x 1 x i1> %m, i32 %evl)
594 ret <vscale x 1 x i1> %v
597 define <vscale x 1 x i1> @fcmp_ule_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
598 ; CHECK-LABEL: fcmp_ule_vf_swap_nxv1bf16:
600 ; CHECK-NEXT: fmv.x.h a1, fa0
601 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
602 ; CHECK-NEXT: vmv.v.x v9, a1
603 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
604 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
605 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
606 ; CHECK-NEXT: vmflt.vv v8, v10, v8, v0.t
607 ; CHECK-NEXT: vmnot.m v0, v8
609 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
610 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
611 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"ule", <vscale x 1 x i1> %m, i32 %evl)
612 ret <vscale x 1 x i1> %v
615 define <vscale x 1 x i1> @fcmp_une_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
616 ; CHECK-LABEL: fcmp_une_vv_nxv1bf16:
618 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
619 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v9
620 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
621 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
622 ; CHECK-NEXT: vmfne.vv v0, v9, v10, v0.t
624 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"une", <vscale x 1 x i1> %m, i32 %evl)
625 ret <vscale x 1 x i1> %v
628 define <vscale x 1 x i1> @fcmp_une_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
629 ; CHECK-LABEL: fcmp_une_vf_nxv1bf16:
631 ; CHECK-NEXT: fmv.x.h a1, fa0
632 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
633 ; CHECK-NEXT: vmv.v.x v9, a1
634 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
635 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
636 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
637 ; CHECK-NEXT: vmfne.vv v0, v10, v8, v0.t
639 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
640 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
641 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"une", <vscale x 1 x i1> %m, i32 %evl)
642 ret <vscale x 1 x i1> %v
645 define <vscale x 1 x i1> @fcmp_une_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
646 ; CHECK-LABEL: fcmp_une_vf_swap_nxv1bf16:
648 ; CHECK-NEXT: fmv.x.h a1, fa0
649 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
650 ; CHECK-NEXT: vmv.v.x v9, a1
651 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
652 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v9
653 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
654 ; CHECK-NEXT: vmfne.vv v0, v8, v10, v0.t
656 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
657 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
658 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"une", <vscale x 1 x i1> %m, i32 %evl)
659 ret <vscale x 1 x i1> %v
662 define <vscale x 1 x i1> @fcmp_uno_vv_nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
663 ; CHECK-LABEL: fcmp_uno_vv_nxv1bf16:
665 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
666 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v9
667 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
668 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
669 ; CHECK-NEXT: vmfne.vv v8, v10, v10, v0.t
670 ; CHECK-NEXT: vmfne.vv v9, v9, v9, v0.t
671 ; CHECK-NEXT: vmor.mm v0, v9, v8
673 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"uno", <vscale x 1 x i1> %m, i32 %evl)
674 ret <vscale x 1 x i1> %v
677 define <vscale x 1 x i1> @fcmp_uno_vf_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
678 ; CHECK-LABEL: fcmp_uno_vf_nxv1bf16:
680 ; CHECK-NEXT: fmv.x.h a1, fa0
681 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
682 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
683 ; CHECK-NEXT: vmv.v.x v8, a1
684 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
685 ; CHECK-NEXT: vmfne.vv v9, v9, v9, v0.t
686 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
687 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
688 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
689 ; CHECK-NEXT: vmfne.vv v8, v10, v10, v0.t
690 ; CHECK-NEXT: vmor.mm v0, v9, v8
692 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
693 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
694 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %va, <vscale x 1 x bfloat> %vb, metadata !"uno", <vscale x 1 x i1> %m, i32 %evl)
695 ret <vscale x 1 x i1> %v
698 define <vscale x 1 x i1> @fcmp_uno_vf_swap_nxv1bf16(<vscale x 1 x bfloat> %va, bfloat %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
699 ; CHECK-LABEL: fcmp_uno_vf_swap_nxv1bf16:
701 ; CHECK-NEXT: fmv.x.h a1, fa0
702 ; CHECK-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
703 ; CHECK-NEXT: vfwcvtbf16.f.f.v v9, v8
704 ; CHECK-NEXT: vmv.v.x v8, a1
705 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
706 ; CHECK-NEXT: vmfne.vv v9, v9, v9, v0.t
707 ; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
708 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
709 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
710 ; CHECK-NEXT: vmfne.vv v8, v10, v10, v0.t
711 ; CHECK-NEXT: vmor.mm v0, v8, v9
713 %elt.head = insertelement <vscale x 1 x bfloat> poison, bfloat %b, i32 0
714 %vb = shufflevector <vscale x 1 x bfloat> %elt.head, <vscale x 1 x bfloat> poison, <vscale x 1 x i32> zeroinitializer
715 %v = call <vscale x 1 x i1> @llvm.vp.fcmp.nxv1bf16(<vscale x 1 x bfloat> %vb, <vscale x 1 x bfloat> %va, metadata !"uno", <vscale x 1 x i1> %m, i32 %evl)
716 ret <vscale x 1 x i1> %v
719 declare <vscale x 3 x i1> @llvm.vp.fcmp.nxv3bf16(<vscale x 3 x bfloat>, <vscale x 3 x bfloat>, metadata, <vscale x 3 x i1>, i32)
721 define <vscale x 3 x i1> @fcmp_oeq_vv_nxv3bf16(<vscale x 3 x bfloat> %va, <vscale x 3 x bfloat> %vb, <vscale x 3 x i1> %m, i32 zeroext %evl) {
722 ; CHECK-LABEL: fcmp_oeq_vv_nxv3bf16:
724 ; CHECK-NEXT: vsetvli a1, zero, e16, m1, ta, ma
725 ; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v9
726 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
727 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
728 ; CHECK-NEXT: vmfeq.vv v8, v12, v10, v0.t
729 ; CHECK-NEXT: vmv1r.v v0, v8
731 %v = call <vscale x 3 x i1> @llvm.vp.fcmp.nxv3bf16(<vscale x 3 x bfloat> %va, <vscale x 3 x bfloat> %vb, metadata !"oeq", <vscale x 3 x i1> %m, i32 %evl)
732 ret <vscale x 3 x i1> %v
735 declare <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat>, <vscale x 8 x bfloat>, metadata, <vscale x 8 x i1>, i32)
737 define <vscale x 8 x i1> @fcmp_oeq_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
738 ; CHECK-LABEL: fcmp_oeq_vv_nxv8bf16:
740 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
741 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10
742 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8
743 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
744 ; CHECK-NEXT: vmfeq.vv v8, v16, v12, v0.t
745 ; CHECK-NEXT: vmv1r.v v0, v8
747 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"oeq", <vscale x 8 x i1> %m, i32 %evl)
748 ret <vscale x 8 x i1> %v
751 define <vscale x 8 x i1> @fcmp_oeq_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
752 ; CHECK-LABEL: fcmp_oeq_vf_nxv8bf16:
754 ; CHECK-NEXT: fmv.x.h a1, fa0
755 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
756 ; CHECK-NEXT: vmv.v.x v10, a1
757 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
758 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
759 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
760 ; CHECK-NEXT: vmfeq.vv v8, v12, v16, v0.t
761 ; CHECK-NEXT: vmv1r.v v0, v8
763 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
764 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
765 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"oeq", <vscale x 8 x i1> %m, i32 %evl)
766 ret <vscale x 8 x i1> %v
769 define <vscale x 8 x i1> @fcmp_oeq_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
770 ; CHECK-LABEL: fcmp_oeq_vf_swap_nxv8bf16:
772 ; CHECK-NEXT: fmv.x.h a1, fa0
773 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
774 ; CHECK-NEXT: vmv.v.x v10, a1
775 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
776 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
777 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
778 ; CHECK-NEXT: vmfeq.vv v8, v16, v12, v0.t
779 ; CHECK-NEXT: vmv1r.v v0, v8
781 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
782 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
783 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"oeq", <vscale x 8 x i1> %m, i32 %evl)
784 ret <vscale x 8 x i1> %v
787 define <vscale x 8 x i1> @fcmp_ogt_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
788 ; CHECK-LABEL: fcmp_ogt_vv_nxv8bf16:
790 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
791 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
792 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
793 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
794 ; CHECK-NEXT: vmflt.vv v8, v16, v12, v0.t
795 ; CHECK-NEXT: vmv1r.v v0, v8
797 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ogt", <vscale x 8 x i1> %m, i32 %evl)
798 ret <vscale x 8 x i1> %v
801 define <vscale x 8 x i1> @fcmp_ogt_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
802 ; CHECK-LABEL: fcmp_ogt_vf_nxv8bf16:
804 ; CHECK-NEXT: fmv.x.h a1, fa0
805 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
806 ; CHECK-NEXT: vmv.v.x v10, a1
807 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
808 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
809 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
810 ; CHECK-NEXT: vmflt.vv v8, v16, v12, v0.t
811 ; CHECK-NEXT: vmv1r.v v0, v8
813 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
814 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
815 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ogt", <vscale x 8 x i1> %m, i32 %evl)
816 ret <vscale x 8 x i1> %v
819 define <vscale x 8 x i1> @fcmp_ogt_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
820 ; CHECK-LABEL: fcmp_ogt_vf_swap_nxv8bf16:
822 ; CHECK-NEXT: fmv.x.h a1, fa0
823 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
824 ; CHECK-NEXT: vmv.v.x v10, a1
825 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
826 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
827 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
828 ; CHECK-NEXT: vmflt.vv v8, v12, v16, v0.t
829 ; CHECK-NEXT: vmv1r.v v0, v8
831 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
832 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
833 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"ogt", <vscale x 8 x i1> %m, i32 %evl)
834 ret <vscale x 8 x i1> %v
837 define <vscale x 8 x i1> @fcmp_oge_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
838 ; CHECK-LABEL: fcmp_oge_vv_nxv8bf16:
840 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
841 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
842 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
843 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
844 ; CHECK-NEXT: vmfle.vv v8, v16, v12, v0.t
845 ; CHECK-NEXT: vmv1r.v v0, v8
847 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"oge", <vscale x 8 x i1> %m, i32 %evl)
848 ret <vscale x 8 x i1> %v
851 define <vscale x 8 x i1> @fcmp_oge_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
852 ; CHECK-LABEL: fcmp_oge_vf_nxv8bf16:
854 ; CHECK-NEXT: fmv.x.h a1, fa0
855 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
856 ; CHECK-NEXT: vmv.v.x v10, a1
857 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
858 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
859 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
860 ; CHECK-NEXT: vmfle.vv v8, v16, v12, v0.t
861 ; CHECK-NEXT: vmv1r.v v0, v8
863 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
864 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
865 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"oge", <vscale x 8 x i1> %m, i32 %evl)
866 ret <vscale x 8 x i1> %v
869 define <vscale x 8 x i1> @fcmp_oge_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
870 ; CHECK-LABEL: fcmp_oge_vf_swap_nxv8bf16:
872 ; CHECK-NEXT: fmv.x.h a1, fa0
873 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
874 ; CHECK-NEXT: vmv.v.x v10, a1
875 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
876 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
877 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
878 ; CHECK-NEXT: vmfle.vv v8, v12, v16, v0.t
879 ; CHECK-NEXT: vmv1r.v v0, v8
881 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
882 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
883 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"oge", <vscale x 8 x i1> %m, i32 %evl)
884 ret <vscale x 8 x i1> %v
887 define <vscale x 8 x i1> @fcmp_olt_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
888 ; CHECK-LABEL: fcmp_olt_vv_nxv8bf16:
890 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
891 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10
892 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8
893 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
894 ; CHECK-NEXT: vmflt.vv v8, v16, v12, v0.t
895 ; CHECK-NEXT: vmv1r.v v0, v8
897 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"olt", <vscale x 8 x i1> %m, i32 %evl)
898 ret <vscale x 8 x i1> %v
901 define <vscale x 8 x i1> @fcmp_olt_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
902 ; CHECK-LABEL: fcmp_olt_vf_nxv8bf16:
904 ; CHECK-NEXT: fmv.x.h a1, fa0
905 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
906 ; CHECK-NEXT: vmv.v.x v10, a1
907 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
908 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
909 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
910 ; CHECK-NEXT: vmflt.vv v8, v12, v16, v0.t
911 ; CHECK-NEXT: vmv1r.v v0, v8
913 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
914 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
915 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"olt", <vscale x 8 x i1> %m, i32 %evl)
916 ret <vscale x 8 x i1> %v
919 define <vscale x 8 x i1> @fcmp_olt_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
920 ; CHECK-LABEL: fcmp_olt_vf_swap_nxv8bf16:
922 ; CHECK-NEXT: fmv.x.h a1, fa0
923 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
924 ; CHECK-NEXT: vmv.v.x v10, a1
925 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
926 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
927 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
928 ; CHECK-NEXT: vmflt.vv v8, v16, v12, v0.t
929 ; CHECK-NEXT: vmv1r.v v0, v8
931 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
932 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
933 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"olt", <vscale x 8 x i1> %m, i32 %evl)
934 ret <vscale x 8 x i1> %v
937 define <vscale x 8 x i1> @fcmp_ole_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
938 ; CHECK-LABEL: fcmp_ole_vv_nxv8bf16:
940 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
941 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10
942 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8
943 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
944 ; CHECK-NEXT: vmfle.vv v8, v16, v12, v0.t
945 ; CHECK-NEXT: vmv1r.v v0, v8
947 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ole", <vscale x 8 x i1> %m, i32 %evl)
948 ret <vscale x 8 x i1> %v
951 define <vscale x 8 x i1> @fcmp_ole_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
952 ; CHECK-LABEL: fcmp_ole_vf_nxv8bf16:
954 ; CHECK-NEXT: fmv.x.h a1, fa0
955 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
956 ; CHECK-NEXT: vmv.v.x v10, a1
957 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
958 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
959 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
960 ; CHECK-NEXT: vmfle.vv v8, v12, v16, v0.t
961 ; CHECK-NEXT: vmv1r.v v0, v8
963 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
964 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
965 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ole", <vscale x 8 x i1> %m, i32 %evl)
966 ret <vscale x 8 x i1> %v
969 define <vscale x 8 x i1> @fcmp_ole_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
970 ; CHECK-LABEL: fcmp_ole_vf_swap_nxv8bf16:
972 ; CHECK-NEXT: fmv.x.h a1, fa0
973 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
974 ; CHECK-NEXT: vmv.v.x v10, a1
975 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
976 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
977 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
978 ; CHECK-NEXT: vmfle.vv v8, v16, v12, v0.t
979 ; CHECK-NEXT: vmv1r.v v0, v8
981 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
982 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
983 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"ole", <vscale x 8 x i1> %m, i32 %evl)
984 ret <vscale x 8 x i1> %v
987 define <vscale x 8 x i1> @fcmp_one_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
988 ; CHECK-LABEL: fcmp_one_vv_nxv8bf16:
990 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
991 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10
992 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8
993 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
994 ; CHECK-NEXT: vmflt.vv v8, v16, v12, v0.t
995 ; CHECK-NEXT: vmflt.vv v9, v12, v16, v0.t
996 ; CHECK-NEXT: vmor.mm v0, v9, v8
998 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"one", <vscale x 8 x i1> %m, i32 %evl)
999 ret <vscale x 8 x i1> %v
1002 define <vscale x 8 x i1> @fcmp_one_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1003 ; CHECK-LABEL: fcmp_one_vf_nxv8bf16:
1005 ; CHECK-NEXT: fmv.x.h a1, fa0
1006 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1007 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1008 ; CHECK-NEXT: vmv.v.x v8, a1
1009 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8
1010 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1011 ; CHECK-NEXT: vmflt.vv v8, v12, v16, v0.t
1012 ; CHECK-NEXT: vmflt.vv v9, v16, v12, v0.t
1013 ; CHECK-NEXT: vmor.mm v0, v9, v8
1015 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1016 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1017 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"one", <vscale x 8 x i1> %m, i32 %evl)
1018 ret <vscale x 8 x i1> %v
1021 define <vscale x 8 x i1> @fcmp_one_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1022 ; CHECK-LABEL: fcmp_one_vf_swap_nxv8bf16:
1024 ; CHECK-NEXT: fmv.x.h a1, fa0
1025 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1026 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1027 ; CHECK-NEXT: vmv.v.x v8, a1
1028 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8
1029 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1030 ; CHECK-NEXT: vmflt.vv v8, v16, v12, v0.t
1031 ; CHECK-NEXT: vmflt.vv v9, v12, v16, v0.t
1032 ; CHECK-NEXT: vmor.mm v0, v9, v8
1034 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1035 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1036 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"one", <vscale x 8 x i1> %m, i32 %evl)
1037 ret <vscale x 8 x i1> %v
1040 define <vscale x 8 x i1> @fcmp_ord_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1041 ; CHECK-LABEL: fcmp_ord_vv_nxv8bf16:
1043 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1044 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10
1045 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1046 ; CHECK-NEXT: vmfeq.vv v10, v12, v12, v0.t
1047 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1048 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1049 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1050 ; CHECK-NEXT: vmfeq.vv v8, v12, v12, v0.t
1051 ; CHECK-NEXT: vmand.mm v0, v8, v10
1053 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ord", <vscale x 8 x i1> %m, i32 %evl)
1054 ret <vscale x 8 x i1> %v
1057 define <vscale x 8 x i1> @fcmp_ord_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1058 ; CHECK-LABEL: fcmp_ord_vf_nxv8bf16:
1060 ; CHECK-NEXT: fmv.x.h a1, fa0
1061 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1062 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1063 ; CHECK-NEXT: vmv.v.x v8, a1
1064 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1065 ; CHECK-NEXT: vmfeq.vv v10, v12, v12, v0.t
1066 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1067 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1068 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1069 ; CHECK-NEXT: vmfeq.vv v8, v12, v12, v0.t
1070 ; CHECK-NEXT: vmand.mm v0, v10, v8
1072 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1073 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1074 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ord", <vscale x 8 x i1> %m, i32 %evl)
1075 ret <vscale x 8 x i1> %v
1078 define <vscale x 8 x i1> @fcmp_ord_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1079 ; CHECK-LABEL: fcmp_ord_vf_swap_nxv8bf16:
1081 ; CHECK-NEXT: fmv.x.h a1, fa0
1082 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1083 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1084 ; CHECK-NEXT: vmv.v.x v8, a1
1085 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1086 ; CHECK-NEXT: vmfeq.vv v10, v12, v12, v0.t
1087 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1088 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1089 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1090 ; CHECK-NEXT: vmfeq.vv v8, v12, v12, v0.t
1091 ; CHECK-NEXT: vmand.mm v0, v8, v10
1093 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1094 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1095 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"ord", <vscale x 8 x i1> %m, i32 %evl)
1096 ret <vscale x 8 x i1> %v
1099 define <vscale x 8 x i1> @fcmp_ueq_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1100 ; CHECK-LABEL: fcmp_ueq_vv_nxv8bf16:
1102 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1103 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10
1104 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8
1105 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1106 ; CHECK-NEXT: vmflt.vv v8, v16, v12, v0.t
1107 ; CHECK-NEXT: vmflt.vv v9, v12, v16, v0.t
1108 ; CHECK-NEXT: vmnor.mm v0, v9, v8
1110 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ueq", <vscale x 8 x i1> %m, i32 %evl)
1111 ret <vscale x 8 x i1> %v
1114 define <vscale x 8 x i1> @fcmp_ueq_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1115 ; CHECK-LABEL: fcmp_ueq_vf_nxv8bf16:
1117 ; CHECK-NEXT: fmv.x.h a1, fa0
1118 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1119 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1120 ; CHECK-NEXT: vmv.v.x v8, a1
1121 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8
1122 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1123 ; CHECK-NEXT: vmflt.vv v8, v12, v16, v0.t
1124 ; CHECK-NEXT: vmflt.vv v9, v16, v12, v0.t
1125 ; CHECK-NEXT: vmnor.mm v0, v9, v8
1127 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1128 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1129 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ueq", <vscale x 8 x i1> %m, i32 %evl)
1130 ret <vscale x 8 x i1> %v
1133 define <vscale x 8 x i1> @fcmp_ueq_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1134 ; CHECK-LABEL: fcmp_ueq_vf_swap_nxv8bf16:
1136 ; CHECK-NEXT: fmv.x.h a1, fa0
1137 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1138 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1139 ; CHECK-NEXT: vmv.v.x v8, a1
1140 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8
1141 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1142 ; CHECK-NEXT: vmflt.vv v8, v16, v12, v0.t
1143 ; CHECK-NEXT: vmflt.vv v9, v12, v16, v0.t
1144 ; CHECK-NEXT: vmnor.mm v0, v9, v8
1146 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1147 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1148 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"ueq", <vscale x 8 x i1> %m, i32 %evl)
1149 ret <vscale x 8 x i1> %v
1152 define <vscale x 8 x i1> @fcmp_ugt_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1153 ; CHECK-LABEL: fcmp_ugt_vv_nxv8bf16:
1155 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1156 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10
1157 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8
1158 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1159 ; CHECK-NEXT: vmfle.vv v8, v16, v12, v0.t
1160 ; CHECK-NEXT: vmnot.m v0, v8
1162 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
1163 ret <vscale x 8 x i1> %v
1166 define <vscale x 8 x i1> @fcmp_ugt_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1167 ; CHECK-LABEL: fcmp_ugt_vf_nxv8bf16:
1169 ; CHECK-NEXT: fmv.x.h a1, fa0
1170 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1171 ; CHECK-NEXT: vmv.v.x v10, a1
1172 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1173 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
1174 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1175 ; CHECK-NEXT: vmfle.vv v8, v12, v16, v0.t
1176 ; CHECK-NEXT: vmnot.m v0, v8
1178 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1179 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1180 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
1181 ret <vscale x 8 x i1> %v
1184 define <vscale x 8 x i1> @fcmp_ugt_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1185 ; CHECK-LABEL: fcmp_ugt_vf_swap_nxv8bf16:
1187 ; CHECK-NEXT: fmv.x.h a1, fa0
1188 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1189 ; CHECK-NEXT: vmv.v.x v10, a1
1190 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1191 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
1192 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1193 ; CHECK-NEXT: vmfle.vv v8, v16, v12, v0.t
1194 ; CHECK-NEXT: vmnot.m v0, v8
1196 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1197 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1198 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
1199 ret <vscale x 8 x i1> %v
1202 define <vscale x 8 x i1> @fcmp_uge_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1203 ; CHECK-LABEL: fcmp_uge_vv_nxv8bf16:
1205 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1206 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10
1207 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8
1208 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1209 ; CHECK-NEXT: vmflt.vv v8, v16, v12, v0.t
1210 ; CHECK-NEXT: vmnot.m v0, v8
1212 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
1213 ret <vscale x 8 x i1> %v
1216 define <vscale x 8 x i1> @fcmp_uge_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1217 ; CHECK-LABEL: fcmp_uge_vf_nxv8bf16:
1219 ; CHECK-NEXT: fmv.x.h a1, fa0
1220 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1221 ; CHECK-NEXT: vmv.v.x v10, a1
1222 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1223 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
1224 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1225 ; CHECK-NEXT: vmflt.vv v8, v12, v16, v0.t
1226 ; CHECK-NEXT: vmnot.m v0, v8
1228 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1229 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1230 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
1231 ret <vscale x 8 x i1> %v
1234 define <vscale x 8 x i1> @fcmp_uge_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1235 ; CHECK-LABEL: fcmp_uge_vf_swap_nxv8bf16:
1237 ; CHECK-NEXT: fmv.x.h a1, fa0
1238 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1239 ; CHECK-NEXT: vmv.v.x v10, a1
1240 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1241 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
1242 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1243 ; CHECK-NEXT: vmflt.vv v8, v16, v12, v0.t
1244 ; CHECK-NEXT: vmnot.m v0, v8
1246 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1247 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1248 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
1249 ret <vscale x 8 x i1> %v
1252 define <vscale x 8 x i1> @fcmp_ult_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1253 ; CHECK-LABEL: fcmp_ult_vv_nxv8bf16:
1255 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1256 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1257 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
1258 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1259 ; CHECK-NEXT: vmfle.vv v8, v16, v12, v0.t
1260 ; CHECK-NEXT: vmnot.m v0, v8
1262 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
1263 ret <vscale x 8 x i1> %v
1266 define <vscale x 8 x i1> @fcmp_ult_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1267 ; CHECK-LABEL: fcmp_ult_vf_nxv8bf16:
1269 ; CHECK-NEXT: fmv.x.h a1, fa0
1270 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1271 ; CHECK-NEXT: vmv.v.x v10, a1
1272 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1273 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
1274 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1275 ; CHECK-NEXT: vmfle.vv v8, v16, v12, v0.t
1276 ; CHECK-NEXT: vmnot.m v0, v8
1278 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1279 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1280 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
1281 ret <vscale x 8 x i1> %v
1284 define <vscale x 8 x i1> @fcmp_ult_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1285 ; CHECK-LABEL: fcmp_ult_vf_swap_nxv8bf16:
1287 ; CHECK-NEXT: fmv.x.h a1, fa0
1288 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1289 ; CHECK-NEXT: vmv.v.x v10, a1
1290 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1291 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
1292 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1293 ; CHECK-NEXT: vmfle.vv v8, v12, v16, v0.t
1294 ; CHECK-NEXT: vmnot.m v0, v8
1296 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1297 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1298 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
1299 ret <vscale x 8 x i1> %v
1302 define <vscale x 8 x i1> @fcmp_ule_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1303 ; CHECK-LABEL: fcmp_ule_vv_nxv8bf16:
1305 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1306 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1307 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
1308 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1309 ; CHECK-NEXT: vmflt.vv v8, v16, v12, v0.t
1310 ; CHECK-NEXT: vmnot.m v0, v8
1312 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ule", <vscale x 8 x i1> %m, i32 %evl)
1313 ret <vscale x 8 x i1> %v
1316 define <vscale x 8 x i1> @fcmp_ule_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1317 ; CHECK-LABEL: fcmp_ule_vf_nxv8bf16:
1319 ; CHECK-NEXT: fmv.x.h a1, fa0
1320 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1321 ; CHECK-NEXT: vmv.v.x v10, a1
1322 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1323 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
1324 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1325 ; CHECK-NEXT: vmflt.vv v8, v16, v12, v0.t
1326 ; CHECK-NEXT: vmnot.m v0, v8
1328 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1329 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1330 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"ule", <vscale x 8 x i1> %m, i32 %evl)
1331 ret <vscale x 8 x i1> %v
1334 define <vscale x 8 x i1> @fcmp_ule_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1335 ; CHECK-LABEL: fcmp_ule_vf_swap_nxv8bf16:
1337 ; CHECK-NEXT: fmv.x.h a1, fa0
1338 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1339 ; CHECK-NEXT: vmv.v.x v10, a1
1340 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1341 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
1342 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1343 ; CHECK-NEXT: vmflt.vv v8, v12, v16, v0.t
1344 ; CHECK-NEXT: vmnot.m v0, v8
1346 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1347 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1348 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"ule", <vscale x 8 x i1> %m, i32 %evl)
1349 ret <vscale x 8 x i1> %v
1352 define <vscale x 8 x i1> @fcmp_une_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1353 ; CHECK-LABEL: fcmp_une_vv_nxv8bf16:
1355 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1356 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10
1357 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8
1358 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1359 ; CHECK-NEXT: vmfne.vv v8, v16, v12, v0.t
1360 ; CHECK-NEXT: vmv1r.v v0, v8
1362 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"une", <vscale x 8 x i1> %m, i32 %evl)
1363 ret <vscale x 8 x i1> %v
1366 define <vscale x 8 x i1> @fcmp_une_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1367 ; CHECK-LABEL: fcmp_une_vf_nxv8bf16:
1369 ; CHECK-NEXT: fmv.x.h a1, fa0
1370 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1371 ; CHECK-NEXT: vmv.v.x v10, a1
1372 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1373 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
1374 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1375 ; CHECK-NEXT: vmfne.vv v8, v12, v16, v0.t
1376 ; CHECK-NEXT: vmv1r.v v0, v8
1378 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1379 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1380 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"une", <vscale x 8 x i1> %m, i32 %evl)
1381 ret <vscale x 8 x i1> %v
1384 define <vscale x 8 x i1> @fcmp_une_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1385 ; CHECK-LABEL: fcmp_une_vf_swap_nxv8bf16:
1387 ; CHECK-NEXT: fmv.x.h a1, fa0
1388 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1389 ; CHECK-NEXT: vmv.v.x v10, a1
1390 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1391 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v10
1392 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1393 ; CHECK-NEXT: vmfne.vv v8, v16, v12, v0.t
1394 ; CHECK-NEXT: vmv1r.v v0, v8
1396 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1397 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1398 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"une", <vscale x 8 x i1> %m, i32 %evl)
1399 ret <vscale x 8 x i1> %v
1402 define <vscale x 8 x i1> @fcmp_uno_vv_nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1403 ; CHECK-LABEL: fcmp_uno_vv_nxv8bf16:
1405 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1406 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v10
1407 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1408 ; CHECK-NEXT: vmfne.vv v10, v12, v12, v0.t
1409 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1410 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1411 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1412 ; CHECK-NEXT: vmfne.vv v8, v12, v12, v0.t
1413 ; CHECK-NEXT: vmor.mm v0, v8, v10
1415 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"uno", <vscale x 8 x i1> %m, i32 %evl)
1416 ret <vscale x 8 x i1> %v
1419 define <vscale x 8 x i1> @fcmp_uno_vf_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1420 ; CHECK-LABEL: fcmp_uno_vf_nxv8bf16:
1422 ; CHECK-NEXT: fmv.x.h a1, fa0
1423 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1424 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1425 ; CHECK-NEXT: vmv.v.x v8, a1
1426 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1427 ; CHECK-NEXT: vmfne.vv v10, v12, v12, v0.t
1428 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1429 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1430 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1431 ; CHECK-NEXT: vmfne.vv v8, v12, v12, v0.t
1432 ; CHECK-NEXT: vmor.mm v0, v10, v8
1434 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1435 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1436 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %va, <vscale x 8 x bfloat> %vb, metadata !"uno", <vscale x 8 x i1> %m, i32 %evl)
1437 ret <vscale x 8 x i1> %v
1440 define <vscale x 8 x i1> @fcmp_uno_vf_swap_nxv8bf16(<vscale x 8 x bfloat> %va, bfloat %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1441 ; CHECK-LABEL: fcmp_uno_vf_swap_nxv8bf16:
1443 ; CHECK-NEXT: fmv.x.h a1, fa0
1444 ; CHECK-NEXT: vsetvli a2, zero, e16, m2, ta, ma
1445 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1446 ; CHECK-NEXT: vmv.v.x v8, a1
1447 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1448 ; CHECK-NEXT: vmfne.vv v10, v12, v12, v0.t
1449 ; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, ma
1450 ; CHECK-NEXT: vfwcvtbf16.f.f.v v12, v8
1451 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
1452 ; CHECK-NEXT: vmfne.vv v8, v12, v12, v0.t
1453 ; CHECK-NEXT: vmor.mm v0, v8, v10
1455 %elt.head = insertelement <vscale x 8 x bfloat> poison, bfloat %b, i32 0
1456 %vb = shufflevector <vscale x 8 x bfloat> %elt.head, <vscale x 8 x bfloat> poison, <vscale x 8 x i32> zeroinitializer
1457 %v = call <vscale x 8 x i1> @llvm.vp.fcmp.nxv8bf16(<vscale x 8 x bfloat> %vb, <vscale x 8 x bfloat> %va, metadata !"uno", <vscale x 8 x i1> %m, i32 %evl)
1458 ret <vscale x 8 x i1> %v
1461 declare <vscale x 64 x i1> @llvm.vp.fcmp.nxv64bf16(<vscale x 64 x bfloat>, <vscale x 64 x bfloat>, metadata, <vscale x 64 x i1>, i32)
1463 define <vscale x 64 x i1> @fcmp_oeq_vv_nxv64bf16(<vscale x 64 x bfloat> %va, <vscale x 64 x bfloat> %vb, <vscale x 64 x i1> %m, i32 zeroext %evl) {
1464 ; CHECK-LABEL: fcmp_oeq_vv_nxv64bf16:
1466 ; CHECK-NEXT: addi sp, sp, -16
1467 ; CHECK-NEXT: .cfi_def_cfa_offset 16
1468 ; CHECK-NEXT: csrr a1, vlenb
1469 ; CHECK-NEXT: mv a3, a1
1470 ; CHECK-NEXT: slli a1, a1, 3
1471 ; CHECK-NEXT: add a3, a3, a1
1472 ; CHECK-NEXT: slli a1, a1, 2
1473 ; CHECK-NEXT: add a1, a1, a3
1474 ; CHECK-NEXT: sub sp, sp, a1
1475 ; CHECK-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x29, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 41 * vlenb
1476 ; CHECK-NEXT: vmv1r.v v24, v0
1477 ; CHECK-NEXT: csrr a1, vlenb
1478 ; CHECK-NEXT: mv a3, a1
1479 ; CHECK-NEXT: slli a1, a1, 3
1480 ; CHECK-NEXT: add a3, a3, a1
1481 ; CHECK-NEXT: slli a1, a1, 1
1482 ; CHECK-NEXT: add a1, a1, a3
1483 ; CHECK-NEXT: add a1, sp, a1
1484 ; CHECK-NEXT: addi a1, a1, 16
1485 ; CHECK-NEXT: vs8r.v v8, (a1) # Unknown-size Folded Spill
1486 ; CHECK-NEXT: csrr a3, vlenb
1487 ; CHECK-NEXT: slli a1, a3, 3
1488 ; CHECK-NEXT: slli a5, a3, 2
1489 ; CHECK-NEXT: slli a4, a3, 1
1490 ; CHECK-NEXT: add a1, a0, a1
1491 ; CHECK-NEXT: sub a6, a2, a5
1492 ; CHECK-NEXT: vl8re16.v v0, (a1)
1493 ; CHECK-NEXT: sltu a1, a2, a6
1494 ; CHECK-NEXT: addi a1, a1, -1
1495 ; CHECK-NEXT: and a6, a1, a6
1496 ; CHECK-NEXT: sub a1, a6, a4
1497 ; CHECK-NEXT: sltu a7, a6, a1
1498 ; CHECK-NEXT: addi a7, a7, -1
1499 ; CHECK-NEXT: and a7, a7, a1
1500 ; CHECK-NEXT: srli a1, a3, 1
1501 ; CHECK-NEXT: srli a3, a3, 2
1502 ; CHECK-NEXT: csrr t0, vlenb
1503 ; CHECK-NEXT: slli t0, t0, 3
1504 ; CHECK-NEXT: add t0, sp, t0
1505 ; CHECK-NEXT: addi t0, t0, 16
1506 ; CHECK-NEXT: vs1r.v v24, (t0) # Unknown-size Folded Spill
1507 ; CHECK-NEXT: vsetvli t0, zero, e8, m1, ta, ma
1508 ; CHECK-NEXT: vslidedown.vx v25, v24, a1
1509 ; CHECK-NEXT: vsetvli t0, zero, e8, mf2, ta, ma
1510 ; CHECK-NEXT: vslidedown.vx v24, v25, a3
1511 ; CHECK-NEXT: vl8re16.v v8, (a0)
1512 ; CHECK-NEXT: csrr a0, vlenb
1513 ; CHECK-NEXT: slli t0, a0, 5
1514 ; CHECK-NEXT: add a0, t0, a0
1515 ; CHECK-NEXT: add a0, sp, a0
1516 ; CHECK-NEXT: addi a0, a0, 16
1517 ; CHECK-NEXT: vs8r.v v8, (a0) # Unknown-size Folded Spill
1518 ; CHECK-NEXT: csrr a0, vlenb
1519 ; CHECK-NEXT: slli t0, a0, 3
1520 ; CHECK-NEXT: add a0, t0, a0
1521 ; CHECK-NEXT: add a0, sp, a0
1522 ; CHECK-NEXT: addi a0, a0, 16
1523 ; CHECK-NEXT: vs8r.v v0, (a0) # Unknown-size Folded Spill
1524 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1525 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v4
1526 ; CHECK-NEXT: addi a0, sp, 16
1527 ; CHECK-NEXT: vs8r.v v8, (a0) # Unknown-size Folded Spill
1528 ; CHECK-NEXT: vmv8r.v v8, v16
1529 ; CHECK-NEXT: csrr a0, vlenb
1530 ; CHECK-NEXT: slli t0, a0, 4
1531 ; CHECK-NEXT: add a0, t0, a0
1532 ; CHECK-NEXT: add a0, sp, a0
1533 ; CHECK-NEXT: addi a0, a0, 16
1534 ; CHECK-NEXT: vs8r.v v16, (a0) # Unknown-size Folded Spill
1535 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v12
1536 ; CHECK-NEXT: vmv1r.v v0, v24
1537 ; CHECK-NEXT: addi a0, sp, 16
1538 ; CHECK-NEXT: vl8r.v v8, (a0) # Unknown-size Folded Reload
1539 ; CHECK-NEXT: vsetvli zero, a7, e32, m8, ta, ma
1540 ; CHECK-NEXT: vmfeq.vv v6, v16, v8, v0.t
1541 ; CHECK-NEXT: bltu a6, a4, .LBB85_2
1542 ; CHECK-NEXT: # %bb.1:
1543 ; CHECK-NEXT: mv a6, a4
1544 ; CHECK-NEXT: .LBB85_2:
1545 ; CHECK-NEXT: vmv1r.v v0, v25
1546 ; CHECK-NEXT: csrr a0, vlenb
1547 ; CHECK-NEXT: slli a7, a0, 3
1548 ; CHECK-NEXT: add a0, a7, a0
1549 ; CHECK-NEXT: add a0, sp, a0
1550 ; CHECK-NEXT: addi a0, a0, 16
1551 ; CHECK-NEXT: vl8r.v v16, (a0) # Unknown-size Folded Reload
1552 ; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1553 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v16
1554 ; CHECK-NEXT: csrr a0, vlenb
1555 ; CHECK-NEXT: slli a7, a0, 4
1556 ; CHECK-NEXT: add a0, a7, a0
1557 ; CHECK-NEXT: add a0, sp, a0
1558 ; CHECK-NEXT: addi a0, a0, 16
1559 ; CHECK-NEXT: vl8r.v v16, (a0) # Unknown-size Folded Reload
1560 ; CHECK-NEXT: vfwcvtbf16.f.f.v v24, v16
1561 ; CHECK-NEXT: vsetvli zero, a6, e32, m8, ta, ma
1562 ; CHECK-NEXT: vmfeq.vv v5, v24, v8, v0.t
1563 ; CHECK-NEXT: add a0, a3, a3
1564 ; CHECK-NEXT: bltu a2, a5, .LBB85_4
1565 ; CHECK-NEXT: # %bb.3:
1566 ; CHECK-NEXT: mv a2, a5
1567 ; CHECK-NEXT: .LBB85_4:
1568 ; CHECK-NEXT: sub a5, a2, a4
1569 ; CHECK-NEXT: csrr a6, vlenb
1570 ; CHECK-NEXT: slli a6, a6, 3
1571 ; CHECK-NEXT: add a6, sp, a6
1572 ; CHECK-NEXT: addi a6, a6, 16
1573 ; CHECK-NEXT: vl1r.v v7, (a6) # Unknown-size Folded Reload
1574 ; CHECK-NEXT: vsetvli a6, zero, e8, mf2, ta, ma
1575 ; CHECK-NEXT: vslidedown.vx v0, v7, a3
1576 ; CHECK-NEXT: csrr a6, vlenb
1577 ; CHECK-NEXT: mv a7, a6
1578 ; CHECK-NEXT: slli a6, a6, 3
1579 ; CHECK-NEXT: add a7, a7, a6
1580 ; CHECK-NEXT: slli a6, a6, 1
1581 ; CHECK-NEXT: add a6, a6, a7
1582 ; CHECK-NEXT: add a6, sp, a6
1583 ; CHECK-NEXT: addi a6, a6, 16
1584 ; CHECK-NEXT: vl8r.v v16, (a6) # Unknown-size Folded Reload
1585 ; CHECK-NEXT: vsetvli a6, zero, e16, m4, ta, ma
1586 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v20
1587 ; CHECK-NEXT: csrr a6, vlenb
1588 ; CHECK-NEXT: slli a7, a6, 4
1589 ; CHECK-NEXT: add a6, a7, a6
1590 ; CHECK-NEXT: add a6, sp, a6
1591 ; CHECK-NEXT: addi a6, a6, 16
1592 ; CHECK-NEXT: vs8r.v v8, (a6) # Unknown-size Folded Spill
1593 ; CHECK-NEXT: csrr a6, vlenb
1594 ; CHECK-NEXT: slli a7, a6, 5
1595 ; CHECK-NEXT: add a6, a7, a6
1596 ; CHECK-NEXT: add a6, sp, a6
1597 ; CHECK-NEXT: addi a6, a6, 16
1598 ; CHECK-NEXT: vl8r.v v24, (a6) # Unknown-size Folded Reload
1599 ; CHECK-NEXT: vfwcvtbf16.f.f.v v8, v28
1600 ; CHECK-NEXT: sltu a6, a2, a5
1601 ; CHECK-NEXT: addi a6, a6, -1
1602 ; CHECK-NEXT: and a5, a6, a5
1603 ; CHECK-NEXT: csrr a6, vlenb
1604 ; CHECK-NEXT: slli a7, a6, 4
1605 ; CHECK-NEXT: add a6, a7, a6
1606 ; CHECK-NEXT: add a6, sp, a6
1607 ; CHECK-NEXT: addi a6, a6, 16
1608 ; CHECK-NEXT: vl8r.v v24, (a6) # Unknown-size Folded Reload
1609 ; CHECK-NEXT: vsetvli zero, a5, e32, m8, ta, ma
1610 ; CHECK-NEXT: vmfeq.vv v4, v24, v8, v0.t
1611 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
1612 ; CHECK-NEXT: vslideup.vx v5, v6, a3
1613 ; CHECK-NEXT: bltu a2, a4, .LBB85_6
1614 ; CHECK-NEXT: # %bb.5:
1615 ; CHECK-NEXT: mv a2, a4
1616 ; CHECK-NEXT: .LBB85_6:
1617 ; CHECK-NEXT: vmv1r.v v0, v7
1618 ; CHECK-NEXT: vsetvli a4, zero, e16, m4, ta, ma
1619 ; CHECK-NEXT: vfwcvtbf16.f.f.v v24, v16
1620 ; CHECK-NEXT: csrr a4, vlenb
1621 ; CHECK-NEXT: slli a5, a4, 5
1622 ; CHECK-NEXT: add a4, a5, a4
1623 ; CHECK-NEXT: add a4, sp, a4
1624 ; CHECK-NEXT: addi a4, a4, 16
1625 ; CHECK-NEXT: vl8r.v v8, (a4) # Unknown-size Folded Reload
1626 ; CHECK-NEXT: vfwcvtbf16.f.f.v v16, v8
1627 ; CHECK-NEXT: vsetvli zero, a2, e32, m8, ta, ma
1628 ; CHECK-NEXT: vmfeq.vv v8, v24, v16, v0.t
1629 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
1630 ; CHECK-NEXT: vslideup.vx v8, v4, a3
1631 ; CHECK-NEXT: add a0, a1, a1
1632 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
1633 ; CHECK-NEXT: vslideup.vx v8, v5, a1
1634 ; CHECK-NEXT: vmv.v.v v0, v8
1635 ; CHECK-NEXT: csrr a0, vlenb
1636 ; CHECK-NEXT: mv a1, a0
1637 ; CHECK-NEXT: slli a0, a0, 3
1638 ; CHECK-NEXT: add a1, a1, a0
1639 ; CHECK-NEXT: slli a0, a0, 2
1640 ; CHECK-NEXT: add a0, a0, a1
1641 ; CHECK-NEXT: add sp, sp, a0
1642 ; CHECK-NEXT: .cfi_def_cfa sp, 16
1643 ; CHECK-NEXT: addi sp, sp, 16
1644 ; CHECK-NEXT: .cfi_def_cfa_offset 0
1646 %v = call <vscale x 64 x i1> @llvm.vp.fcmp.nxv64bf16(<vscale x 64 x bfloat> %va, <vscale x 64 x bfloat> %vb, metadata !"oeq", <vscale x 64 x i1> %m, i32 %evl)
1647 ret <vscale x 64 x i1> %v
1650 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)
1652 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) {
1653 ; ZVFH-LABEL: fcmp_oeq_vv_nxv1f16:
1655 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1656 ; ZVFH-NEXT: vmfeq.vv v0, v8, v9, v0.t
1659 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv1f16:
1661 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
1662 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v9
1663 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
1664 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1665 ; ZVFHMIN-NEXT: vmfeq.vv v0, v9, v10, v0.t
1667 %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)
1668 ret <vscale x 1 x i1> %v
1671 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) {
1672 ; ZVFH-LABEL: fcmp_oeq_vf_nxv1f16:
1674 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1675 ; ZVFH-NEXT: vmfeq.vf v0, v8, fa0, v0.t
1678 ; ZVFHMIN-LABEL: fcmp_oeq_vf_nxv1f16:
1680 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
1681 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
1682 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
1683 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
1684 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
1685 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1686 ; ZVFHMIN-NEXT: vmfeq.vv v0, v10, v8, v0.t
1688 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1689 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1690 %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)
1691 ret <vscale x 1 x i1> %v
1694 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) {
1695 ; ZVFH-LABEL: fcmp_oeq_vf_swap_nxv1f16:
1697 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1698 ; ZVFH-NEXT: vmfeq.vf v0, v8, fa0, v0.t
1701 ; ZVFHMIN-LABEL: fcmp_oeq_vf_swap_nxv1f16:
1703 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
1704 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
1705 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
1706 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
1707 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
1708 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1709 ; ZVFHMIN-NEXT: vmfeq.vv v0, v8, v10, v0.t
1711 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1712 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1713 %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)
1714 ret <vscale x 1 x i1> %v
1717 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) {
1718 ; ZVFH-LABEL: fcmp_ogt_vv_nxv1f16:
1720 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1721 ; ZVFH-NEXT: vmflt.vv v0, v9, v8, v0.t
1724 ; ZVFHMIN-LABEL: fcmp_ogt_vv_nxv1f16:
1726 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
1727 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
1728 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
1729 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1730 ; ZVFHMIN-NEXT: vmflt.vv v0, v8, v10, v0.t
1732 %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)
1733 ret <vscale x 1 x i1> %v
1736 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) {
1737 ; ZVFH-LABEL: fcmp_ogt_vf_nxv1f16:
1739 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1740 ; ZVFH-NEXT: vmfgt.vf v0, v8, fa0, v0.t
1743 ; ZVFHMIN-LABEL: fcmp_ogt_vf_nxv1f16:
1745 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
1746 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
1747 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
1748 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
1749 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
1750 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1751 ; ZVFHMIN-NEXT: vmflt.vv v0, v8, v10, v0.t
1753 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1754 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1755 %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)
1756 ret <vscale x 1 x i1> %v
1759 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) {
1760 ; ZVFH-LABEL: fcmp_ogt_vf_swap_nxv1f16:
1762 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1763 ; ZVFH-NEXT: vmflt.vf v0, v8, fa0, v0.t
1766 ; ZVFHMIN-LABEL: fcmp_ogt_vf_swap_nxv1f16:
1768 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
1769 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
1770 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
1771 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
1772 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
1773 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1774 ; ZVFHMIN-NEXT: vmflt.vv v0, v10, v8, v0.t
1776 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1777 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1778 %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)
1779 ret <vscale x 1 x i1> %v
1782 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) {
1783 ; ZVFH-LABEL: fcmp_oge_vv_nxv1f16:
1785 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1786 ; ZVFH-NEXT: vmfle.vv v0, v9, v8, v0.t
1789 ; ZVFHMIN-LABEL: fcmp_oge_vv_nxv1f16:
1791 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
1792 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
1793 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
1794 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1795 ; ZVFHMIN-NEXT: vmfle.vv v0, v8, v10, v0.t
1797 %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)
1798 ret <vscale x 1 x i1> %v
1801 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) {
1802 ; ZVFH-LABEL: fcmp_oge_vf_nxv1f16:
1804 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1805 ; ZVFH-NEXT: vmfge.vf v0, v8, fa0, v0.t
1808 ; ZVFHMIN-LABEL: fcmp_oge_vf_nxv1f16:
1810 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
1811 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
1812 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
1813 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
1814 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
1815 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1816 ; ZVFHMIN-NEXT: vmfle.vv v0, v8, v10, v0.t
1818 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1819 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1820 %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)
1821 ret <vscale x 1 x i1> %v
1824 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) {
1825 ; ZVFH-LABEL: fcmp_oge_vf_swap_nxv1f16:
1827 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1828 ; ZVFH-NEXT: vmfle.vf v0, v8, fa0, v0.t
1831 ; ZVFHMIN-LABEL: fcmp_oge_vf_swap_nxv1f16:
1833 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
1834 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
1835 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
1836 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
1837 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
1838 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1839 ; ZVFHMIN-NEXT: vmfle.vv v0, v10, v8, v0.t
1841 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1842 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1843 %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)
1844 ret <vscale x 1 x i1> %v
1847 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) {
1848 ; ZVFH-LABEL: fcmp_olt_vv_nxv1f16:
1850 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1851 ; ZVFH-NEXT: vmflt.vv v0, v8, v9, v0.t
1854 ; ZVFHMIN-LABEL: fcmp_olt_vv_nxv1f16:
1856 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
1857 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v9
1858 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
1859 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1860 ; ZVFHMIN-NEXT: vmflt.vv v0, v9, v10, v0.t
1862 %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)
1863 ret <vscale x 1 x i1> %v
1866 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) {
1867 ; ZVFH-LABEL: fcmp_olt_vf_nxv1f16:
1869 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1870 ; ZVFH-NEXT: vmflt.vf v0, v8, fa0, v0.t
1873 ; ZVFHMIN-LABEL: fcmp_olt_vf_nxv1f16:
1875 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
1876 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
1877 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
1878 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
1879 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
1880 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1881 ; ZVFHMIN-NEXT: vmflt.vv v0, v10, v8, v0.t
1883 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1884 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1885 %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)
1886 ret <vscale x 1 x i1> %v
1889 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) {
1890 ; ZVFH-LABEL: fcmp_olt_vf_swap_nxv1f16:
1892 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1893 ; ZVFH-NEXT: vmfgt.vf v0, v8, fa0, v0.t
1896 ; ZVFHMIN-LABEL: fcmp_olt_vf_swap_nxv1f16:
1898 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
1899 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
1900 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
1901 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
1902 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
1903 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1904 ; ZVFHMIN-NEXT: vmflt.vv v0, v8, v10, v0.t
1906 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1907 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1908 %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)
1909 ret <vscale x 1 x i1> %v
1912 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) {
1913 ; ZVFH-LABEL: fcmp_ole_vv_nxv1f16:
1915 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1916 ; ZVFH-NEXT: vmfle.vv v0, v8, v9, v0.t
1919 ; ZVFHMIN-LABEL: fcmp_ole_vv_nxv1f16:
1921 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
1922 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v9
1923 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
1924 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1925 ; ZVFHMIN-NEXT: vmfle.vv v0, v9, v10, v0.t
1927 %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)
1928 ret <vscale x 1 x i1> %v
1931 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) {
1932 ; ZVFH-LABEL: fcmp_ole_vf_nxv1f16:
1934 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1935 ; ZVFH-NEXT: vmfle.vf v0, v8, fa0, v0.t
1938 ; ZVFHMIN-LABEL: fcmp_ole_vf_nxv1f16:
1940 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
1941 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
1942 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
1943 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
1944 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
1945 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1946 ; ZVFHMIN-NEXT: vmfle.vv v0, v10, v8, v0.t
1948 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1949 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1950 %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)
1951 ret <vscale x 1 x i1> %v
1954 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) {
1955 ; ZVFH-LABEL: fcmp_ole_vf_swap_nxv1f16:
1957 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1958 ; ZVFH-NEXT: vmfge.vf v0, v8, fa0, v0.t
1961 ; ZVFHMIN-LABEL: fcmp_ole_vf_swap_nxv1f16:
1963 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
1964 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
1965 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
1966 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
1967 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
1968 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1969 ; ZVFHMIN-NEXT: vmfle.vv v0, v8, v10, v0.t
1971 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
1972 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
1973 %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)
1974 ret <vscale x 1 x i1> %v
1977 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) {
1978 ; ZVFH-LABEL: fcmp_one_vv_nxv1f16:
1980 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
1981 ; ZVFH-NEXT: vmflt.vv v10, v8, v9, v0.t
1982 ; ZVFH-NEXT: vmflt.vv v8, v9, v8, v0.t
1983 ; ZVFH-NEXT: vmor.mm v0, v8, v10
1986 ; ZVFHMIN-LABEL: fcmp_one_vv_nxv1f16:
1988 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
1989 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v9
1990 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
1991 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
1992 ; ZVFHMIN-NEXT: vmflt.vv v8, v9, v10, v0.t
1993 ; ZVFHMIN-NEXT: vmflt.vv v9, v10, v9, v0.t
1994 ; ZVFHMIN-NEXT: vmor.mm v0, v9, v8
1996 %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)
1997 ret <vscale x 1 x i1> %v
2000 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) {
2001 ; ZVFH-LABEL: fcmp_one_vf_nxv1f16:
2003 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2004 ; ZVFH-NEXT: vmflt.vf v9, v8, fa0, v0.t
2005 ; ZVFH-NEXT: vmfgt.vf v8, v8, fa0, v0.t
2006 ; ZVFH-NEXT: vmor.mm v0, v8, v9
2009 ; ZVFHMIN-LABEL: fcmp_one_vf_nxv1f16:
2011 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2012 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2013 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2014 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
2015 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2016 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2017 ; ZVFHMIN-NEXT: vmflt.vv v8, v9, v10, v0.t
2018 ; ZVFHMIN-NEXT: vmflt.vv v9, v10, v9, v0.t
2019 ; ZVFHMIN-NEXT: vmor.mm v0, v9, v8
2021 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2022 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2023 %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)
2024 ret <vscale x 1 x i1> %v
2027 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) {
2028 ; ZVFH-LABEL: fcmp_one_vf_swap_nxv1f16:
2030 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2031 ; ZVFH-NEXT: vmfgt.vf v9, v8, fa0, v0.t
2032 ; ZVFH-NEXT: vmflt.vf v8, v8, fa0, v0.t
2033 ; ZVFH-NEXT: vmor.mm v0, v8, v9
2036 ; ZVFHMIN-LABEL: fcmp_one_vf_swap_nxv1f16:
2038 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2039 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2040 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2041 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
2042 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2043 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2044 ; ZVFHMIN-NEXT: vmflt.vv v8, v10, v9, v0.t
2045 ; ZVFHMIN-NEXT: vmflt.vv v9, v9, v10, v0.t
2046 ; ZVFHMIN-NEXT: vmor.mm v0, v9, v8
2048 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2049 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2050 %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)
2051 ret <vscale x 1 x i1> %v
2054 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) {
2055 ; ZVFH-LABEL: fcmp_ord_vv_nxv1f16:
2057 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2058 ; ZVFH-NEXT: vmfeq.vv v9, v9, v9, v0.t
2059 ; ZVFH-NEXT: vmfeq.vv v8, v8, v8, v0.t
2060 ; ZVFH-NEXT: vmand.mm v0, v8, v9
2063 ; ZVFHMIN-LABEL: fcmp_ord_vv_nxv1f16:
2065 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2066 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v9
2067 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2068 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2069 ; ZVFHMIN-NEXT: vmfeq.vv v8, v10, v10, v0.t
2070 ; ZVFHMIN-NEXT: vmfeq.vv v9, v9, v9, v0.t
2071 ; ZVFHMIN-NEXT: vmand.mm v0, v9, v8
2073 %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)
2074 ret <vscale x 1 x i1> %v
2077 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) {
2078 ; ZVFH-LABEL: fcmp_ord_vf_nxv1f16:
2080 ; ZVFH-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2081 ; ZVFH-NEXT: vfmv.v.f v9, fa0
2082 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2083 ; ZVFH-NEXT: vmfeq.vf v9, v9, fa0, v0.t
2084 ; ZVFH-NEXT: vmfeq.vv v8, v8, v8, v0.t
2085 ; ZVFH-NEXT: vmand.mm v0, v8, v9
2088 ; ZVFHMIN-LABEL: fcmp_ord_vf_nxv1f16:
2090 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2091 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2092 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2093 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
2094 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2095 ; ZVFHMIN-NEXT: vmfeq.vv v9, v9, v9, v0.t
2096 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2097 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2098 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2099 ; ZVFHMIN-NEXT: vmfeq.vv v8, v10, v10, v0.t
2100 ; ZVFHMIN-NEXT: vmand.mm v0, v9, v8
2102 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2103 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2104 %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)
2105 ret <vscale x 1 x i1> %v
2108 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) {
2109 ; ZVFH-LABEL: fcmp_ord_vf_swap_nxv1f16:
2111 ; ZVFH-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2112 ; ZVFH-NEXT: vfmv.v.f v9, fa0
2113 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2114 ; ZVFH-NEXT: vmfeq.vf v9, v9, fa0, v0.t
2115 ; ZVFH-NEXT: vmfeq.vv v8, v8, v8, v0.t
2116 ; ZVFH-NEXT: vmand.mm v0, v9, v8
2119 ; ZVFHMIN-LABEL: fcmp_ord_vf_swap_nxv1f16:
2121 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2122 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2123 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2124 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
2125 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2126 ; ZVFHMIN-NEXT: vmfeq.vv v9, v9, v9, v0.t
2127 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2128 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2129 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2130 ; ZVFHMIN-NEXT: vmfeq.vv v8, v10, v10, v0.t
2131 ; ZVFHMIN-NEXT: vmand.mm v0, v8, v9
2133 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2134 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2135 %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)
2136 ret <vscale x 1 x i1> %v
2139 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) {
2140 ; ZVFH-LABEL: fcmp_ueq_vv_nxv1f16:
2142 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2143 ; ZVFH-NEXT: vmflt.vv v10, v8, v9, v0.t
2144 ; ZVFH-NEXT: vmflt.vv v8, v9, v8, v0.t
2145 ; ZVFH-NEXT: vmnor.mm v0, v8, v10
2148 ; ZVFHMIN-LABEL: fcmp_ueq_vv_nxv1f16:
2150 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2151 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v9
2152 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2153 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2154 ; ZVFHMIN-NEXT: vmflt.vv v8, v9, v10, v0.t
2155 ; ZVFHMIN-NEXT: vmflt.vv v9, v10, v9, v0.t
2156 ; ZVFHMIN-NEXT: vmnor.mm v0, v9, v8
2158 %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)
2159 ret <vscale x 1 x i1> %v
2162 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) {
2163 ; ZVFH-LABEL: fcmp_ueq_vf_nxv1f16:
2165 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2166 ; ZVFH-NEXT: vmflt.vf v9, v8, fa0, v0.t
2167 ; ZVFH-NEXT: vmfgt.vf v8, v8, fa0, v0.t
2168 ; ZVFH-NEXT: vmnor.mm v0, v8, v9
2171 ; ZVFHMIN-LABEL: fcmp_ueq_vf_nxv1f16:
2173 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2174 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2175 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2176 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
2177 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2178 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2179 ; ZVFHMIN-NEXT: vmflt.vv v8, v9, v10, v0.t
2180 ; ZVFHMIN-NEXT: vmflt.vv v9, v10, v9, v0.t
2181 ; ZVFHMIN-NEXT: vmnor.mm v0, v9, v8
2183 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2184 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2185 %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)
2186 ret <vscale x 1 x i1> %v
2189 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) {
2190 ; ZVFH-LABEL: fcmp_ueq_vf_swap_nxv1f16:
2192 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2193 ; ZVFH-NEXT: vmfgt.vf v9, v8, fa0, v0.t
2194 ; ZVFH-NEXT: vmflt.vf v8, v8, fa0, v0.t
2195 ; ZVFH-NEXT: vmnor.mm v0, v8, v9
2198 ; ZVFHMIN-LABEL: fcmp_ueq_vf_swap_nxv1f16:
2200 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2201 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2202 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2203 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
2204 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2205 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2206 ; ZVFHMIN-NEXT: vmflt.vv v8, v10, v9, v0.t
2207 ; ZVFHMIN-NEXT: vmflt.vv v9, v9, v10, v0.t
2208 ; ZVFHMIN-NEXT: vmnor.mm v0, v9, v8
2210 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2211 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2212 %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)
2213 ret <vscale x 1 x i1> %v
2216 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) {
2217 ; ZVFH-LABEL: fcmp_ugt_vv_nxv1f16:
2219 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2220 ; ZVFH-NEXT: vmfle.vv v8, v8, v9, v0.t
2221 ; ZVFH-NEXT: vmnot.m v0, v8
2224 ; ZVFHMIN-LABEL: fcmp_ugt_vv_nxv1f16:
2226 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2227 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v9
2228 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2229 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2230 ; ZVFHMIN-NEXT: vmfle.vv v8, v9, v10, v0.t
2231 ; ZVFHMIN-NEXT: vmnot.m v0, v8
2233 %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)
2234 ret <vscale x 1 x i1> %v
2237 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) {
2238 ; ZVFH-LABEL: fcmp_ugt_vf_nxv1f16:
2240 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2241 ; ZVFH-NEXT: vmfle.vf v8, v8, fa0, v0.t
2242 ; ZVFH-NEXT: vmnot.m v0, v8
2245 ; ZVFHMIN-LABEL: fcmp_ugt_vf_nxv1f16:
2247 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2248 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2249 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
2250 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2251 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
2252 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2253 ; ZVFHMIN-NEXT: vmfle.vv v8, v10, v8, v0.t
2254 ; ZVFHMIN-NEXT: vmnot.m v0, v8
2256 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2257 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2258 %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)
2259 ret <vscale x 1 x i1> %v
2262 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) {
2263 ; ZVFH-LABEL: fcmp_ugt_vf_swap_nxv1f16:
2265 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2266 ; ZVFH-NEXT: vmfge.vf v8, v8, fa0, v0.t
2267 ; ZVFH-NEXT: vmnot.m v0, v8
2270 ; ZVFHMIN-LABEL: fcmp_ugt_vf_swap_nxv1f16:
2272 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2273 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2274 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
2275 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2276 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
2277 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2278 ; ZVFHMIN-NEXT: vmfle.vv v8, v8, v10, v0.t
2279 ; ZVFHMIN-NEXT: vmnot.m v0, v8
2281 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2282 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2283 %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)
2284 ret <vscale x 1 x i1> %v
2287 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) {
2288 ; ZVFH-LABEL: fcmp_uge_vv_nxv1f16:
2290 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2291 ; ZVFH-NEXT: vmflt.vv v8, v8, v9, v0.t
2292 ; ZVFH-NEXT: vmnot.m v0, v8
2295 ; ZVFHMIN-LABEL: fcmp_uge_vv_nxv1f16:
2297 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2298 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v9
2299 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2300 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2301 ; ZVFHMIN-NEXT: vmflt.vv v8, v9, v10, v0.t
2302 ; ZVFHMIN-NEXT: vmnot.m v0, v8
2304 %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)
2305 ret <vscale x 1 x i1> %v
2308 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) {
2309 ; ZVFH-LABEL: fcmp_uge_vf_nxv1f16:
2311 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2312 ; ZVFH-NEXT: vmflt.vf v8, v8, fa0, v0.t
2313 ; ZVFH-NEXT: vmnot.m v0, v8
2316 ; ZVFHMIN-LABEL: fcmp_uge_vf_nxv1f16:
2318 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2319 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2320 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
2321 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2322 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
2323 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2324 ; ZVFHMIN-NEXT: vmflt.vv v8, v10, v8, v0.t
2325 ; ZVFHMIN-NEXT: vmnot.m v0, v8
2327 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2328 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2329 %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)
2330 ret <vscale x 1 x i1> %v
2333 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) {
2334 ; ZVFH-LABEL: fcmp_uge_vf_swap_nxv1f16:
2336 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2337 ; ZVFH-NEXT: vmfgt.vf v8, v8, fa0, v0.t
2338 ; ZVFH-NEXT: vmnot.m v0, v8
2341 ; ZVFHMIN-LABEL: fcmp_uge_vf_swap_nxv1f16:
2343 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2344 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2345 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
2346 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2347 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
2348 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2349 ; ZVFHMIN-NEXT: vmflt.vv v8, v8, v10, v0.t
2350 ; ZVFHMIN-NEXT: vmnot.m v0, v8
2352 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2353 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2354 %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)
2355 ret <vscale x 1 x i1> %v
2358 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) {
2359 ; ZVFH-LABEL: fcmp_ult_vv_nxv1f16:
2361 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2362 ; ZVFH-NEXT: vmfle.vv v8, v9, v8, v0.t
2363 ; ZVFH-NEXT: vmnot.m v0, v8
2366 ; ZVFHMIN-LABEL: fcmp_ult_vv_nxv1f16:
2368 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2369 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2370 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
2371 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2372 ; ZVFHMIN-NEXT: vmfle.vv v8, v8, v10, v0.t
2373 ; ZVFHMIN-NEXT: vmnot.m v0, v8
2375 %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)
2376 ret <vscale x 1 x i1> %v
2379 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) {
2380 ; ZVFH-LABEL: fcmp_ult_vf_nxv1f16:
2382 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2383 ; ZVFH-NEXT: vmfge.vf v8, v8, fa0, v0.t
2384 ; ZVFH-NEXT: vmnot.m v0, v8
2387 ; ZVFHMIN-LABEL: fcmp_ult_vf_nxv1f16:
2389 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2390 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2391 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
2392 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2393 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
2394 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2395 ; ZVFHMIN-NEXT: vmfle.vv v8, v8, v10, v0.t
2396 ; ZVFHMIN-NEXT: vmnot.m v0, v8
2398 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2399 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2400 %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)
2401 ret <vscale x 1 x i1> %v
2404 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) {
2405 ; ZVFH-LABEL: fcmp_ult_vf_swap_nxv1f16:
2407 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2408 ; ZVFH-NEXT: vmfle.vf v8, v8, fa0, v0.t
2409 ; ZVFH-NEXT: vmnot.m v0, v8
2412 ; ZVFHMIN-LABEL: fcmp_ult_vf_swap_nxv1f16:
2414 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2415 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2416 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
2417 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2418 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
2419 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2420 ; ZVFHMIN-NEXT: vmfle.vv v8, v10, v8, v0.t
2421 ; ZVFHMIN-NEXT: vmnot.m v0, v8
2423 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2424 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2425 %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)
2426 ret <vscale x 1 x i1> %v
2429 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) {
2430 ; ZVFH-LABEL: fcmp_ule_vv_nxv1f16:
2432 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2433 ; ZVFH-NEXT: vmflt.vv v8, v9, v8, v0.t
2434 ; ZVFH-NEXT: vmnot.m v0, v8
2437 ; ZVFHMIN-LABEL: fcmp_ule_vv_nxv1f16:
2439 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2440 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2441 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
2442 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2443 ; ZVFHMIN-NEXT: vmflt.vv v8, v8, v10, v0.t
2444 ; ZVFHMIN-NEXT: vmnot.m v0, v8
2446 %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)
2447 ret <vscale x 1 x i1> %v
2450 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) {
2451 ; ZVFH-LABEL: fcmp_ule_vf_nxv1f16:
2453 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2454 ; ZVFH-NEXT: vmfgt.vf v8, v8, fa0, v0.t
2455 ; ZVFH-NEXT: vmnot.m v0, v8
2458 ; ZVFHMIN-LABEL: fcmp_ule_vf_nxv1f16:
2460 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2461 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2462 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
2463 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2464 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
2465 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2466 ; ZVFHMIN-NEXT: vmflt.vv v8, v8, v10, v0.t
2467 ; ZVFHMIN-NEXT: vmnot.m v0, v8
2469 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2470 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2471 %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)
2472 ret <vscale x 1 x i1> %v
2475 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) {
2476 ; ZVFH-LABEL: fcmp_ule_vf_swap_nxv1f16:
2478 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2479 ; ZVFH-NEXT: vmflt.vf v8, v8, fa0, v0.t
2480 ; ZVFH-NEXT: vmnot.m v0, v8
2483 ; ZVFHMIN-LABEL: fcmp_ule_vf_swap_nxv1f16:
2485 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2486 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2487 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
2488 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2489 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
2490 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2491 ; ZVFHMIN-NEXT: vmflt.vv v8, v10, v8, v0.t
2492 ; ZVFHMIN-NEXT: vmnot.m v0, v8
2494 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2495 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2496 %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)
2497 ret <vscale x 1 x i1> %v
2500 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) {
2501 ; ZVFH-LABEL: fcmp_une_vv_nxv1f16:
2503 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2504 ; ZVFH-NEXT: vmfne.vv v0, v8, v9, v0.t
2507 ; ZVFHMIN-LABEL: fcmp_une_vv_nxv1f16:
2509 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2510 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v9
2511 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2512 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2513 ; ZVFHMIN-NEXT: vmfne.vv v0, v9, v10, v0.t
2515 %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)
2516 ret <vscale x 1 x i1> %v
2519 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) {
2520 ; ZVFH-LABEL: fcmp_une_vf_nxv1f16:
2522 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2523 ; ZVFH-NEXT: vmfne.vf v0, v8, fa0, v0.t
2526 ; ZVFHMIN-LABEL: fcmp_une_vf_nxv1f16:
2528 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2529 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2530 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
2531 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2532 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
2533 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2534 ; ZVFHMIN-NEXT: vmfne.vv v0, v10, v8, v0.t
2536 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2537 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2538 %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)
2539 ret <vscale x 1 x i1> %v
2542 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) {
2543 ; ZVFH-LABEL: fcmp_une_vf_swap_nxv1f16:
2545 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2546 ; ZVFH-NEXT: vmfne.vf v0, v8, fa0, v0.t
2549 ; ZVFHMIN-LABEL: fcmp_une_vf_swap_nxv1f16:
2551 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2552 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2553 ; ZVFHMIN-NEXT: vmv.v.x v9, a1
2554 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2555 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v9
2556 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2557 ; ZVFHMIN-NEXT: vmfne.vv v0, v8, v10, v0.t
2559 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2560 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2561 %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)
2562 ret <vscale x 1 x i1> %v
2565 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) {
2566 ; ZVFH-LABEL: fcmp_uno_vv_nxv1f16:
2568 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2569 ; ZVFH-NEXT: vmfne.vv v9, v9, v9, v0.t
2570 ; ZVFH-NEXT: vmfne.vv v8, v8, v8, v0.t
2571 ; ZVFH-NEXT: vmor.mm v0, v8, v9
2574 ; ZVFHMIN-LABEL: fcmp_uno_vv_nxv1f16:
2576 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2577 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v9
2578 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2579 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2580 ; ZVFHMIN-NEXT: vmfne.vv v8, v10, v10, v0.t
2581 ; ZVFHMIN-NEXT: vmfne.vv v9, v9, v9, v0.t
2582 ; ZVFHMIN-NEXT: vmor.mm v0, v9, v8
2584 %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)
2585 ret <vscale x 1 x i1> %v
2588 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) {
2589 ; ZVFH-LABEL: fcmp_uno_vf_nxv1f16:
2591 ; ZVFH-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2592 ; ZVFH-NEXT: vfmv.v.f v9, fa0
2593 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2594 ; ZVFH-NEXT: vmfne.vf v9, v9, fa0, v0.t
2595 ; ZVFH-NEXT: vmfne.vv v8, v8, v8, v0.t
2596 ; ZVFH-NEXT: vmor.mm v0, v8, v9
2599 ; ZVFHMIN-LABEL: fcmp_uno_vf_nxv1f16:
2601 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2602 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2603 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2604 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
2605 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2606 ; ZVFHMIN-NEXT: vmfne.vv v9, v9, v9, v0.t
2607 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2608 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2609 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2610 ; ZVFHMIN-NEXT: vmfne.vv v8, v10, v10, v0.t
2611 ; ZVFHMIN-NEXT: vmor.mm v0, v9, v8
2613 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2614 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2615 %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)
2616 ret <vscale x 1 x i1> %v
2619 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) {
2620 ; ZVFH-LABEL: fcmp_uno_vf_swap_nxv1f16:
2622 ; ZVFH-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2623 ; ZVFH-NEXT: vfmv.v.f v9, fa0
2624 ; ZVFH-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
2625 ; ZVFH-NEXT: vmfne.vf v9, v9, fa0, v0.t
2626 ; ZVFH-NEXT: vmfne.vv v8, v8, v8, v0.t
2627 ; ZVFH-NEXT: vmor.mm v0, v9, v8
2630 ; ZVFHMIN-LABEL: fcmp_uno_vf_swap_nxv1f16:
2632 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2633 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, mf4, ta, ma
2634 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v9, v8
2635 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
2636 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2637 ; ZVFHMIN-NEXT: vmfne.vv v9, v9, v9, v0.t
2638 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
2639 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
2640 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
2641 ; ZVFHMIN-NEXT: vmfne.vv v8, v10, v10, v0.t
2642 ; ZVFHMIN-NEXT: vmor.mm v0, v8, v9
2644 %elt.head = insertelement <vscale x 1 x half> poison, half %b, i32 0
2645 %vb = shufflevector <vscale x 1 x half> %elt.head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
2646 %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)
2647 ret <vscale x 1 x i1> %v
2650 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)
2652 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) {
2653 ; ZVFH-LABEL: fcmp_oeq_vv_nxv3f16:
2655 ; ZVFH-NEXT: vsetvli zero, a0, e16, m1, ta, ma
2656 ; ZVFH-NEXT: vmfeq.vv v0, v8, v9, v0.t
2659 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv3f16:
2661 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m1, ta, ma
2662 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v9
2663 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
2664 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m2, ta, ma
2665 ; ZVFHMIN-NEXT: vmfeq.vv v8, v12, v10, v0.t
2666 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2668 %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)
2669 ret <vscale x 3 x i1> %v
2672 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)
2674 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) {
2675 ; ZVFH-LABEL: fcmp_oeq_vv_nxv8f16:
2677 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2678 ; ZVFH-NEXT: vmfeq.vv v12, v8, v10, v0.t
2679 ; ZVFH-NEXT: vmv1r.v v0, v12
2682 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv8f16:
2684 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
2685 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v10
2686 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v8
2687 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2688 ; ZVFHMIN-NEXT: vmfeq.vv v8, v16, v12, v0.t
2689 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2691 %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)
2692 ret <vscale x 8 x i1> %v
2695 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) {
2696 ; ZVFH-LABEL: fcmp_oeq_vf_nxv8f16:
2698 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2699 ; ZVFH-NEXT: vmfeq.vf v10, v8, fa0, v0.t
2700 ; ZVFH-NEXT: vmv1r.v v0, v10
2703 ; ZVFHMIN-LABEL: fcmp_oeq_vf_nxv8f16:
2705 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2706 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
2707 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
2708 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
2709 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
2710 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2711 ; ZVFHMIN-NEXT: vmfeq.vv v8, v12, v16, v0.t
2712 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2714 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2715 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2716 %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)
2717 ret <vscale x 8 x i1> %v
2720 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) {
2721 ; ZVFH-LABEL: fcmp_oeq_vf_swap_nxv8f16:
2723 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2724 ; ZVFH-NEXT: vmfeq.vf v10, v8, fa0, v0.t
2725 ; ZVFH-NEXT: vmv1r.v v0, v10
2728 ; ZVFHMIN-LABEL: fcmp_oeq_vf_swap_nxv8f16:
2730 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2731 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
2732 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
2733 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
2734 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
2735 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2736 ; ZVFHMIN-NEXT: vmfeq.vv v8, v16, v12, v0.t
2737 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2739 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2740 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2741 %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)
2742 ret <vscale x 8 x i1> %v
2745 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) {
2746 ; ZVFH-LABEL: fcmp_ogt_vv_nxv8f16:
2748 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2749 ; ZVFH-NEXT: vmflt.vv v12, v10, v8, v0.t
2750 ; ZVFH-NEXT: vmv1r.v v0, v12
2753 ; ZVFHMIN-LABEL: fcmp_ogt_vv_nxv8f16:
2755 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
2756 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
2757 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
2758 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2759 ; ZVFHMIN-NEXT: vmflt.vv v8, v16, v12, v0.t
2760 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2762 %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)
2763 ret <vscale x 8 x i1> %v
2766 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) {
2767 ; ZVFH-LABEL: fcmp_ogt_vf_nxv8f16:
2769 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2770 ; ZVFH-NEXT: vmfgt.vf v10, v8, fa0, v0.t
2771 ; ZVFH-NEXT: vmv1r.v v0, v10
2774 ; ZVFHMIN-LABEL: fcmp_ogt_vf_nxv8f16:
2776 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2777 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
2778 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
2779 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
2780 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
2781 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2782 ; ZVFHMIN-NEXT: vmflt.vv v8, v16, v12, v0.t
2783 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2785 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2786 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2787 %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)
2788 ret <vscale x 8 x i1> %v
2791 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) {
2792 ; ZVFH-LABEL: fcmp_ogt_vf_swap_nxv8f16:
2794 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2795 ; ZVFH-NEXT: vmflt.vf v10, v8, fa0, v0.t
2796 ; ZVFH-NEXT: vmv1r.v v0, v10
2799 ; ZVFHMIN-LABEL: fcmp_ogt_vf_swap_nxv8f16:
2801 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2802 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
2803 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
2804 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
2805 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
2806 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2807 ; ZVFHMIN-NEXT: vmflt.vv v8, v12, v16, v0.t
2808 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2810 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2811 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2812 %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)
2813 ret <vscale x 8 x i1> %v
2816 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) {
2817 ; ZVFH-LABEL: fcmp_oge_vv_nxv8f16:
2819 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2820 ; ZVFH-NEXT: vmfle.vv v12, v10, v8, v0.t
2821 ; ZVFH-NEXT: vmv1r.v v0, v12
2824 ; ZVFHMIN-LABEL: fcmp_oge_vv_nxv8f16:
2826 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
2827 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
2828 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
2829 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2830 ; ZVFHMIN-NEXT: vmfle.vv v8, v16, v12, v0.t
2831 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2833 %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)
2834 ret <vscale x 8 x i1> %v
2837 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) {
2838 ; ZVFH-LABEL: fcmp_oge_vf_nxv8f16:
2840 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2841 ; ZVFH-NEXT: vmfge.vf v10, v8, fa0, v0.t
2842 ; ZVFH-NEXT: vmv1r.v v0, v10
2845 ; ZVFHMIN-LABEL: fcmp_oge_vf_nxv8f16:
2847 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2848 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
2849 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
2850 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
2851 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
2852 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2853 ; ZVFHMIN-NEXT: vmfle.vv v8, v16, v12, v0.t
2854 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2856 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2857 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2858 %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)
2859 ret <vscale x 8 x i1> %v
2862 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) {
2863 ; ZVFH-LABEL: fcmp_oge_vf_swap_nxv8f16:
2865 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2866 ; ZVFH-NEXT: vmfle.vf v10, v8, fa0, v0.t
2867 ; ZVFH-NEXT: vmv1r.v v0, v10
2870 ; ZVFHMIN-LABEL: fcmp_oge_vf_swap_nxv8f16:
2872 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2873 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
2874 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
2875 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
2876 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
2877 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2878 ; ZVFHMIN-NEXT: vmfle.vv v8, v12, v16, v0.t
2879 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2881 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2882 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2883 %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)
2884 ret <vscale x 8 x i1> %v
2887 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) {
2888 ; ZVFH-LABEL: fcmp_olt_vv_nxv8f16:
2890 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2891 ; ZVFH-NEXT: vmflt.vv v12, v8, v10, v0.t
2892 ; ZVFH-NEXT: vmv1r.v v0, v12
2895 ; ZVFHMIN-LABEL: fcmp_olt_vv_nxv8f16:
2897 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
2898 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v10
2899 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v8
2900 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2901 ; ZVFHMIN-NEXT: vmflt.vv v8, v16, v12, v0.t
2902 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2904 %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)
2905 ret <vscale x 8 x i1> %v
2908 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) {
2909 ; ZVFH-LABEL: fcmp_olt_vf_nxv8f16:
2911 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2912 ; ZVFH-NEXT: vmflt.vf v10, v8, fa0, v0.t
2913 ; ZVFH-NEXT: vmv1r.v v0, v10
2916 ; ZVFHMIN-LABEL: fcmp_olt_vf_nxv8f16:
2918 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2919 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
2920 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
2921 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
2922 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
2923 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2924 ; ZVFHMIN-NEXT: vmflt.vv v8, v12, v16, v0.t
2925 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2927 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2928 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2929 %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)
2930 ret <vscale x 8 x i1> %v
2933 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) {
2934 ; ZVFH-LABEL: fcmp_olt_vf_swap_nxv8f16:
2936 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2937 ; ZVFH-NEXT: vmfgt.vf v10, v8, fa0, v0.t
2938 ; ZVFH-NEXT: vmv1r.v v0, v10
2941 ; ZVFHMIN-LABEL: fcmp_olt_vf_swap_nxv8f16:
2943 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2944 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
2945 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
2946 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
2947 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
2948 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2949 ; ZVFHMIN-NEXT: vmflt.vv v8, v16, v12, v0.t
2950 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2952 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2953 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
2954 %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)
2955 ret <vscale x 8 x i1> %v
2958 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) {
2959 ; ZVFH-LABEL: fcmp_ole_vv_nxv8f16:
2961 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2962 ; ZVFH-NEXT: vmfle.vv v12, v8, v10, v0.t
2963 ; ZVFH-NEXT: vmv1r.v v0, v12
2966 ; ZVFHMIN-LABEL: fcmp_ole_vv_nxv8f16:
2968 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
2969 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v10
2970 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v8
2971 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2972 ; ZVFHMIN-NEXT: vmfle.vv v8, v16, v12, v0.t
2973 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2975 %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)
2976 ret <vscale x 8 x i1> %v
2979 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) {
2980 ; ZVFH-LABEL: fcmp_ole_vf_nxv8f16:
2982 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
2983 ; ZVFH-NEXT: vmfle.vf v10, v8, fa0, v0.t
2984 ; ZVFH-NEXT: vmv1r.v v0, v10
2987 ; ZVFHMIN-LABEL: fcmp_ole_vf_nxv8f16:
2989 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
2990 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
2991 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
2992 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
2993 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
2994 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
2995 ; ZVFHMIN-NEXT: vmfle.vv v8, v12, v16, v0.t
2996 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
2998 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
2999 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3000 %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)
3001 ret <vscale x 8 x i1> %v
3004 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) {
3005 ; ZVFH-LABEL: fcmp_ole_vf_swap_nxv8f16:
3007 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3008 ; ZVFH-NEXT: vmfge.vf v10, v8, fa0, v0.t
3009 ; ZVFH-NEXT: vmv1r.v v0, v10
3012 ; ZVFHMIN-LABEL: fcmp_ole_vf_swap_nxv8f16:
3014 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3015 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3016 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
3017 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3018 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
3019 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3020 ; ZVFHMIN-NEXT: vmfle.vv v8, v16, v12, v0.t
3021 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
3023 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3024 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3025 %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)
3026 ret <vscale x 8 x i1> %v
3029 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) {
3030 ; ZVFH-LABEL: fcmp_one_vv_nxv8f16:
3032 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3033 ; ZVFH-NEXT: vmflt.vv v12, v8, v10, v0.t
3034 ; ZVFH-NEXT: vmflt.vv v13, v10, v8, v0.t
3035 ; ZVFH-NEXT: vmor.mm v0, v13, v12
3038 ; ZVFHMIN-LABEL: fcmp_one_vv_nxv8f16:
3040 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3041 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v10
3042 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v8
3043 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3044 ; ZVFHMIN-NEXT: vmflt.vv v8, v16, v12, v0.t
3045 ; ZVFHMIN-NEXT: vmflt.vv v9, v12, v16, v0.t
3046 ; ZVFHMIN-NEXT: vmor.mm v0, v9, v8
3048 %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)
3049 ret <vscale x 8 x i1> %v
3052 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) {
3053 ; ZVFH-LABEL: fcmp_one_vf_nxv8f16:
3055 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3056 ; ZVFH-NEXT: vmflt.vf v10, v8, fa0, v0.t
3057 ; ZVFH-NEXT: vmfgt.vf v11, v8, fa0, v0.t
3058 ; ZVFH-NEXT: vmor.mm v0, v11, v10
3061 ; ZVFHMIN-LABEL: fcmp_one_vf_nxv8f16:
3063 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3064 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3065 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3066 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
3067 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v8
3068 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3069 ; ZVFHMIN-NEXT: vmflt.vv v8, v12, v16, v0.t
3070 ; ZVFHMIN-NEXT: vmflt.vv v9, v16, v12, v0.t
3071 ; ZVFHMIN-NEXT: vmor.mm v0, v9, v8
3073 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3074 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3075 %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)
3076 ret <vscale x 8 x i1> %v
3079 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) {
3080 ; ZVFH-LABEL: fcmp_one_vf_swap_nxv8f16:
3082 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3083 ; ZVFH-NEXT: vmfgt.vf v10, v8, fa0, v0.t
3084 ; ZVFH-NEXT: vmflt.vf v11, v8, fa0, v0.t
3085 ; ZVFH-NEXT: vmor.mm v0, v11, v10
3088 ; ZVFHMIN-LABEL: fcmp_one_vf_swap_nxv8f16:
3090 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3091 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3092 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3093 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
3094 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v8
3095 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3096 ; ZVFHMIN-NEXT: vmflt.vv v8, v16, v12, v0.t
3097 ; ZVFHMIN-NEXT: vmflt.vv v9, v12, v16, v0.t
3098 ; ZVFHMIN-NEXT: vmor.mm v0, v9, v8
3100 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3101 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3102 %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)
3103 ret <vscale x 8 x i1> %v
3106 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) {
3107 ; ZVFH-LABEL: fcmp_ord_vv_nxv8f16:
3109 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3110 ; ZVFH-NEXT: vmfeq.vv v12, v10, v10, v0.t
3111 ; ZVFH-NEXT: vmfeq.vv v10, v8, v8, v0.t
3112 ; ZVFH-NEXT: vmand.mm v0, v10, v12
3115 ; ZVFHMIN-LABEL: fcmp_ord_vv_nxv8f16:
3117 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3118 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v10
3119 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3120 ; ZVFHMIN-NEXT: vmfeq.vv v10, v12, v12, v0.t
3121 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3122 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3123 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3124 ; ZVFHMIN-NEXT: vmfeq.vv v8, v12, v12, v0.t
3125 ; ZVFHMIN-NEXT: vmand.mm v0, v8, v10
3127 %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)
3128 ret <vscale x 8 x i1> %v
3131 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) {
3132 ; ZVFH-LABEL: fcmp_ord_vf_nxv8f16:
3134 ; ZVFH-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3135 ; ZVFH-NEXT: vfmv.v.f v10, fa0
3136 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3137 ; ZVFH-NEXT: vmfeq.vf v12, v10, fa0, v0.t
3138 ; ZVFH-NEXT: vmfeq.vv v10, v8, v8, v0.t
3139 ; ZVFH-NEXT: vmand.mm v0, v10, v12
3142 ; ZVFHMIN-LABEL: fcmp_ord_vf_nxv8f16:
3144 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3145 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3146 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3147 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
3148 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3149 ; ZVFHMIN-NEXT: vmfeq.vv v10, v12, v12, v0.t
3150 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3151 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3152 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3153 ; ZVFHMIN-NEXT: vmfeq.vv v8, v12, v12, v0.t
3154 ; ZVFHMIN-NEXT: vmand.mm v0, v10, v8
3156 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3157 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3158 %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)
3159 ret <vscale x 8 x i1> %v
3162 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) {
3163 ; ZVFH-LABEL: fcmp_ord_vf_swap_nxv8f16:
3165 ; ZVFH-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3166 ; ZVFH-NEXT: vfmv.v.f v10, fa0
3167 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3168 ; ZVFH-NEXT: vmfeq.vf v12, v10, fa0, v0.t
3169 ; ZVFH-NEXT: vmfeq.vv v10, v8, v8, v0.t
3170 ; ZVFH-NEXT: vmand.mm v0, v12, v10
3173 ; ZVFHMIN-LABEL: fcmp_ord_vf_swap_nxv8f16:
3175 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3176 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3177 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3178 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
3179 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3180 ; ZVFHMIN-NEXT: vmfeq.vv v10, v12, v12, v0.t
3181 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3182 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3183 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3184 ; ZVFHMIN-NEXT: vmfeq.vv v8, v12, v12, v0.t
3185 ; ZVFHMIN-NEXT: vmand.mm v0, v8, v10
3187 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3188 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3189 %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)
3190 ret <vscale x 8 x i1> %v
3193 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) {
3194 ; ZVFH-LABEL: fcmp_ueq_vv_nxv8f16:
3196 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3197 ; ZVFH-NEXT: vmflt.vv v12, v8, v10, v0.t
3198 ; ZVFH-NEXT: vmflt.vv v13, v10, v8, v0.t
3199 ; ZVFH-NEXT: vmnor.mm v0, v13, v12
3202 ; ZVFHMIN-LABEL: fcmp_ueq_vv_nxv8f16:
3204 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3205 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v10
3206 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v8
3207 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3208 ; ZVFHMIN-NEXT: vmflt.vv v8, v16, v12, v0.t
3209 ; ZVFHMIN-NEXT: vmflt.vv v9, v12, v16, v0.t
3210 ; ZVFHMIN-NEXT: vmnor.mm v0, v9, v8
3212 %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)
3213 ret <vscale x 8 x i1> %v
3216 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) {
3217 ; ZVFH-LABEL: fcmp_ueq_vf_nxv8f16:
3219 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3220 ; ZVFH-NEXT: vmflt.vf v10, v8, fa0, v0.t
3221 ; ZVFH-NEXT: vmfgt.vf v11, v8, fa0, v0.t
3222 ; ZVFH-NEXT: vmnor.mm v0, v11, v10
3225 ; ZVFHMIN-LABEL: fcmp_ueq_vf_nxv8f16:
3227 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3228 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3229 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3230 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
3231 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v8
3232 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3233 ; ZVFHMIN-NEXT: vmflt.vv v8, v12, v16, v0.t
3234 ; ZVFHMIN-NEXT: vmflt.vv v9, v16, v12, v0.t
3235 ; ZVFHMIN-NEXT: vmnor.mm v0, v9, v8
3237 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3238 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3239 %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)
3240 ret <vscale x 8 x i1> %v
3243 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) {
3244 ; ZVFH-LABEL: fcmp_ueq_vf_swap_nxv8f16:
3246 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3247 ; ZVFH-NEXT: vmfgt.vf v10, v8, fa0, v0.t
3248 ; ZVFH-NEXT: vmflt.vf v11, v8, fa0, v0.t
3249 ; ZVFH-NEXT: vmnor.mm v0, v11, v10
3252 ; ZVFHMIN-LABEL: fcmp_ueq_vf_swap_nxv8f16:
3254 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3255 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3256 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3257 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
3258 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v8
3259 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3260 ; ZVFHMIN-NEXT: vmflt.vv v8, v16, v12, v0.t
3261 ; ZVFHMIN-NEXT: vmflt.vv v9, v12, v16, v0.t
3262 ; ZVFHMIN-NEXT: vmnor.mm v0, v9, v8
3264 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3265 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3266 %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)
3267 ret <vscale x 8 x i1> %v
3270 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) {
3271 ; ZVFH-LABEL: fcmp_ugt_vv_nxv8f16:
3273 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3274 ; ZVFH-NEXT: vmfle.vv v12, v8, v10, v0.t
3275 ; ZVFH-NEXT: vmnot.m v0, v12
3278 ; ZVFHMIN-LABEL: fcmp_ugt_vv_nxv8f16:
3280 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3281 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v10
3282 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v8
3283 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3284 ; ZVFHMIN-NEXT: vmfle.vv v8, v16, v12, v0.t
3285 ; ZVFHMIN-NEXT: vmnot.m v0, v8
3287 %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)
3288 ret <vscale x 8 x i1> %v
3291 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) {
3292 ; ZVFH-LABEL: fcmp_ugt_vf_nxv8f16:
3294 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3295 ; ZVFH-NEXT: vmfle.vf v10, v8, fa0, v0.t
3296 ; ZVFH-NEXT: vmnot.m v0, v10
3299 ; ZVFHMIN-LABEL: fcmp_ugt_vf_nxv8f16:
3301 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3302 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3303 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
3304 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3305 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
3306 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3307 ; ZVFHMIN-NEXT: vmfle.vv v8, v12, v16, v0.t
3308 ; ZVFHMIN-NEXT: vmnot.m v0, v8
3310 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3311 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3312 %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)
3313 ret <vscale x 8 x i1> %v
3316 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) {
3317 ; ZVFH-LABEL: fcmp_ugt_vf_swap_nxv8f16:
3319 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3320 ; ZVFH-NEXT: vmfge.vf v10, v8, fa0, v0.t
3321 ; ZVFH-NEXT: vmnot.m v0, v10
3324 ; ZVFHMIN-LABEL: fcmp_ugt_vf_swap_nxv8f16:
3326 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3327 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3328 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
3329 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3330 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
3331 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3332 ; ZVFHMIN-NEXT: vmfle.vv v8, v16, v12, v0.t
3333 ; ZVFHMIN-NEXT: vmnot.m v0, v8
3335 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3336 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3337 %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)
3338 ret <vscale x 8 x i1> %v
3341 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) {
3342 ; ZVFH-LABEL: fcmp_uge_vv_nxv8f16:
3344 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3345 ; ZVFH-NEXT: vmflt.vv v12, v8, v10, v0.t
3346 ; ZVFH-NEXT: vmnot.m v0, v12
3349 ; ZVFHMIN-LABEL: fcmp_uge_vv_nxv8f16:
3351 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3352 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v10
3353 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v8
3354 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3355 ; ZVFHMIN-NEXT: vmflt.vv v8, v16, v12, v0.t
3356 ; ZVFHMIN-NEXT: vmnot.m v0, v8
3358 %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)
3359 ret <vscale x 8 x i1> %v
3362 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) {
3363 ; ZVFH-LABEL: fcmp_uge_vf_nxv8f16:
3365 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3366 ; ZVFH-NEXT: vmflt.vf v10, v8, fa0, v0.t
3367 ; ZVFH-NEXT: vmnot.m v0, v10
3370 ; ZVFHMIN-LABEL: fcmp_uge_vf_nxv8f16:
3372 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3373 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3374 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
3375 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3376 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
3377 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3378 ; ZVFHMIN-NEXT: vmflt.vv v8, v12, v16, v0.t
3379 ; ZVFHMIN-NEXT: vmnot.m v0, v8
3381 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3382 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3383 %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)
3384 ret <vscale x 8 x i1> %v
3387 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) {
3388 ; ZVFH-LABEL: fcmp_uge_vf_swap_nxv8f16:
3390 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3391 ; ZVFH-NEXT: vmfgt.vf v10, v8, fa0, v0.t
3392 ; ZVFH-NEXT: vmnot.m v0, v10
3395 ; ZVFHMIN-LABEL: fcmp_uge_vf_swap_nxv8f16:
3397 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3398 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3399 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
3400 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3401 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
3402 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3403 ; ZVFHMIN-NEXT: vmflt.vv v8, v16, v12, v0.t
3404 ; ZVFHMIN-NEXT: vmnot.m v0, v8
3406 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3407 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3408 %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)
3409 ret <vscale x 8 x i1> %v
3412 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) {
3413 ; ZVFH-LABEL: fcmp_ult_vv_nxv8f16:
3415 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3416 ; ZVFH-NEXT: vmfle.vv v12, v10, v8, v0.t
3417 ; ZVFH-NEXT: vmnot.m v0, v12
3420 ; ZVFHMIN-LABEL: fcmp_ult_vv_nxv8f16:
3422 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3423 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3424 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
3425 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3426 ; ZVFHMIN-NEXT: vmfle.vv v8, v16, v12, v0.t
3427 ; ZVFHMIN-NEXT: vmnot.m v0, v8
3429 %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)
3430 ret <vscale x 8 x i1> %v
3433 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) {
3434 ; ZVFH-LABEL: fcmp_ult_vf_nxv8f16:
3436 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3437 ; ZVFH-NEXT: vmfge.vf v10, v8, fa0, v0.t
3438 ; ZVFH-NEXT: vmnot.m v0, v10
3441 ; ZVFHMIN-LABEL: fcmp_ult_vf_nxv8f16:
3443 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3444 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3445 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
3446 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3447 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
3448 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3449 ; ZVFHMIN-NEXT: vmfle.vv v8, v16, v12, v0.t
3450 ; ZVFHMIN-NEXT: vmnot.m v0, v8
3452 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3453 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3454 %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)
3455 ret <vscale x 8 x i1> %v
3458 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) {
3459 ; ZVFH-LABEL: fcmp_ult_vf_swap_nxv8f16:
3461 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3462 ; ZVFH-NEXT: vmfle.vf v10, v8, fa0, v0.t
3463 ; ZVFH-NEXT: vmnot.m v0, v10
3466 ; ZVFHMIN-LABEL: fcmp_ult_vf_swap_nxv8f16:
3468 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3469 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3470 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
3471 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3472 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
3473 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3474 ; ZVFHMIN-NEXT: vmfle.vv v8, v12, v16, v0.t
3475 ; ZVFHMIN-NEXT: vmnot.m v0, v8
3477 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3478 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3479 %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)
3480 ret <vscale x 8 x i1> %v
3483 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) {
3484 ; ZVFH-LABEL: fcmp_ule_vv_nxv8f16:
3486 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3487 ; ZVFH-NEXT: vmflt.vv v12, v10, v8, v0.t
3488 ; ZVFH-NEXT: vmnot.m v0, v12
3491 ; ZVFHMIN-LABEL: fcmp_ule_vv_nxv8f16:
3493 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3494 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3495 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
3496 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3497 ; ZVFHMIN-NEXT: vmflt.vv v8, v16, v12, v0.t
3498 ; ZVFHMIN-NEXT: vmnot.m v0, v8
3500 %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)
3501 ret <vscale x 8 x i1> %v
3504 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) {
3505 ; ZVFH-LABEL: fcmp_ule_vf_nxv8f16:
3507 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3508 ; ZVFH-NEXT: vmfgt.vf v10, v8, fa0, v0.t
3509 ; ZVFH-NEXT: vmnot.m v0, v10
3512 ; ZVFHMIN-LABEL: fcmp_ule_vf_nxv8f16:
3514 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3515 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3516 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
3517 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3518 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
3519 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3520 ; ZVFHMIN-NEXT: vmflt.vv v8, v16, v12, v0.t
3521 ; ZVFHMIN-NEXT: vmnot.m v0, v8
3523 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3524 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3525 %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)
3526 ret <vscale x 8 x i1> %v
3529 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) {
3530 ; ZVFH-LABEL: fcmp_ule_vf_swap_nxv8f16:
3532 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3533 ; ZVFH-NEXT: vmflt.vf v10, v8, fa0, v0.t
3534 ; ZVFH-NEXT: vmnot.m v0, v10
3537 ; ZVFHMIN-LABEL: fcmp_ule_vf_swap_nxv8f16:
3539 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3540 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3541 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
3542 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3543 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
3544 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3545 ; ZVFHMIN-NEXT: vmflt.vv v8, v12, v16, v0.t
3546 ; ZVFHMIN-NEXT: vmnot.m v0, v8
3548 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3549 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3550 %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)
3551 ret <vscale x 8 x i1> %v
3554 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) {
3555 ; ZVFH-LABEL: fcmp_une_vv_nxv8f16:
3557 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3558 ; ZVFH-NEXT: vmfne.vv v12, v8, v10, v0.t
3559 ; ZVFH-NEXT: vmv1r.v v0, v12
3562 ; ZVFHMIN-LABEL: fcmp_une_vv_nxv8f16:
3564 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3565 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v10
3566 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v8
3567 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3568 ; ZVFHMIN-NEXT: vmfne.vv v8, v16, v12, v0.t
3569 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
3571 %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)
3572 ret <vscale x 8 x i1> %v
3575 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) {
3576 ; ZVFH-LABEL: fcmp_une_vf_nxv8f16:
3578 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3579 ; ZVFH-NEXT: vmfne.vf v10, v8, fa0, v0.t
3580 ; ZVFH-NEXT: vmv1r.v v0, v10
3583 ; ZVFHMIN-LABEL: fcmp_une_vf_nxv8f16:
3585 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3586 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3587 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
3588 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3589 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
3590 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3591 ; ZVFHMIN-NEXT: vmfne.vv v8, v12, v16, v0.t
3592 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
3594 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3595 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3596 %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)
3597 ret <vscale x 8 x i1> %v
3600 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) {
3601 ; ZVFH-LABEL: fcmp_une_vf_swap_nxv8f16:
3603 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3604 ; ZVFH-NEXT: vmfne.vf v10, v8, fa0, v0.t
3605 ; ZVFH-NEXT: vmv1r.v v0, v10
3608 ; ZVFHMIN-LABEL: fcmp_une_vf_swap_nxv8f16:
3610 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3611 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3612 ; ZVFHMIN-NEXT: vmv.v.x v10, a1
3613 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3614 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v10
3615 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3616 ; ZVFHMIN-NEXT: vmfne.vv v8, v16, v12, v0.t
3617 ; ZVFHMIN-NEXT: vmv1r.v v0, v8
3619 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3620 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3621 %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)
3622 ret <vscale x 8 x i1> %v
3625 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) {
3626 ; ZVFH-LABEL: fcmp_uno_vv_nxv8f16:
3628 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3629 ; ZVFH-NEXT: vmfne.vv v12, v10, v10, v0.t
3630 ; ZVFH-NEXT: vmfne.vv v10, v8, v8, v0.t
3631 ; ZVFH-NEXT: vmor.mm v0, v10, v12
3634 ; ZVFHMIN-LABEL: fcmp_uno_vv_nxv8f16:
3636 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3637 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v10
3638 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3639 ; ZVFHMIN-NEXT: vmfne.vv v10, v12, v12, v0.t
3640 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3641 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3642 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3643 ; ZVFHMIN-NEXT: vmfne.vv v8, v12, v12, v0.t
3644 ; ZVFHMIN-NEXT: vmor.mm v0, v8, v10
3646 %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)
3647 ret <vscale x 8 x i1> %v
3650 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) {
3651 ; ZVFH-LABEL: fcmp_uno_vf_nxv8f16:
3653 ; ZVFH-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3654 ; ZVFH-NEXT: vfmv.v.f v10, fa0
3655 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3656 ; ZVFH-NEXT: vmfne.vf v12, v10, fa0, v0.t
3657 ; ZVFH-NEXT: vmfne.vv v10, v8, v8, v0.t
3658 ; ZVFH-NEXT: vmor.mm v0, v10, v12
3661 ; ZVFHMIN-LABEL: fcmp_uno_vf_nxv8f16:
3663 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3664 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3665 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3666 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
3667 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3668 ; ZVFHMIN-NEXT: vmfne.vv v10, v12, v12, v0.t
3669 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3670 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3671 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3672 ; ZVFHMIN-NEXT: vmfne.vv v8, v12, v12, v0.t
3673 ; ZVFHMIN-NEXT: vmor.mm v0, v10, v8
3675 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3676 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3677 %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)
3678 ret <vscale x 8 x i1> %v
3681 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) {
3682 ; ZVFH-LABEL: fcmp_uno_vf_swap_nxv8f16:
3684 ; ZVFH-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3685 ; ZVFH-NEXT: vfmv.v.f v10, fa0
3686 ; ZVFH-NEXT: vsetvli zero, a0, e16, m2, ta, ma
3687 ; ZVFH-NEXT: vmfne.vf v12, v10, fa0, v0.t
3688 ; ZVFH-NEXT: vmfne.vv v10, v8, v8, v0.t
3689 ; ZVFH-NEXT: vmor.mm v0, v12, v10
3692 ; ZVFHMIN-LABEL: fcmp_uno_vf_swap_nxv8f16:
3694 ; ZVFHMIN-NEXT: fmv.x.h a1, fa0
3695 ; ZVFHMIN-NEXT: vsetvli a2, zero, e16, m2, ta, ma
3696 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3697 ; ZVFHMIN-NEXT: vmv.v.x v8, a1
3698 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3699 ; ZVFHMIN-NEXT: vmfne.vv v10, v12, v12, v0.t
3700 ; ZVFHMIN-NEXT: vsetvli a1, zero, e16, m2, ta, ma
3701 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v12, v8
3702 ; ZVFHMIN-NEXT: vsetvli zero, a0, e32, m4, ta, ma
3703 ; ZVFHMIN-NEXT: vmfne.vv v8, v12, v12, v0.t
3704 ; ZVFHMIN-NEXT: vmor.mm v0, v8, v10
3706 %elt.head = insertelement <vscale x 8 x half> poison, half %b, i32 0
3707 %vb = shufflevector <vscale x 8 x half> %elt.head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
3708 %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)
3709 ret <vscale x 8 x i1> %v
3712 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)
3714 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) {
3715 ; ZVFH-LABEL: fcmp_oeq_vv_nxv64f16:
3717 ; ZVFH-NEXT: addi sp, sp, -16
3718 ; ZVFH-NEXT: .cfi_def_cfa_offset 16
3719 ; ZVFH-NEXT: csrr a1, vlenb
3720 ; ZVFH-NEXT: slli a1, a1, 4
3721 ; ZVFH-NEXT: sub sp, sp, a1
3722 ; ZVFH-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x10, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 16 * vlenb
3723 ; ZVFH-NEXT: vmv1r.v v24, v0
3724 ; ZVFH-NEXT: csrr a1, vlenb
3725 ; ZVFH-NEXT: slli a1, a1, 3
3726 ; ZVFH-NEXT: add a1, sp, a1
3727 ; ZVFH-NEXT: addi a1, a1, 16
3728 ; ZVFH-NEXT: vs8r.v v8, (a1) # Unknown-size Folded Spill
3729 ; ZVFH-NEXT: csrr a3, vlenb
3730 ; ZVFH-NEXT: srli a1, a3, 1
3731 ; ZVFH-NEXT: slli a4, a3, 3
3732 ; ZVFH-NEXT: slli a3, a3, 2
3733 ; ZVFH-NEXT: add a4, a0, a4
3734 ; ZVFH-NEXT: sub a5, a2, a3
3735 ; ZVFH-NEXT: vl8re16.v v8, (a4)
3736 ; ZVFH-NEXT: sltu a4, a2, a5
3737 ; ZVFH-NEXT: addi a4, a4, -1
3738 ; ZVFH-NEXT: vl8re16.v v0, (a0)
3739 ; ZVFH-NEXT: addi a0, sp, 16
3740 ; ZVFH-NEXT: vs8r.v v0, (a0) # Unknown-size Folded Spill
3741 ; ZVFH-NEXT: vsetvli a0, zero, e8, m1, ta, ma
3742 ; ZVFH-NEXT: vslidedown.vx v0, v24, a1
3743 ; ZVFH-NEXT: and a4, a4, a5
3744 ; ZVFH-NEXT: vsetvli zero, a4, e16, m8, ta, ma
3745 ; ZVFH-NEXT: vmfeq.vv v7, v16, v8, v0.t
3746 ; ZVFH-NEXT: bltu a2, a3, .LBB171_2
3747 ; ZVFH-NEXT: # %bb.1:
3748 ; ZVFH-NEXT: mv a2, a3
3749 ; ZVFH-NEXT: .LBB171_2:
3750 ; ZVFH-NEXT: vmv1r.v v0, v24
3751 ; ZVFH-NEXT: csrr a0, vlenb
3752 ; ZVFH-NEXT: slli a0, a0, 3
3753 ; ZVFH-NEXT: add a0, sp, a0
3754 ; ZVFH-NEXT: addi a0, a0, 16
3755 ; ZVFH-NEXT: vl8r.v v8, (a0) # Unknown-size Folded Reload
3756 ; ZVFH-NEXT: addi a0, sp, 16
3757 ; ZVFH-NEXT: vl8r.v v24, (a0) # Unknown-size Folded Reload
3758 ; ZVFH-NEXT: vsetvli zero, a2, e16, m8, ta, ma
3759 ; ZVFH-NEXT: vmfeq.vv v16, v8, v24, v0.t
3760 ; ZVFH-NEXT: add a0, a1, a1
3761 ; ZVFH-NEXT: vsetvli zero, a0, e8, m1, ta, ma
3762 ; ZVFH-NEXT: vslideup.vx v16, v7, a1
3763 ; ZVFH-NEXT: vmv.v.v v0, v16
3764 ; ZVFH-NEXT: csrr a0, vlenb
3765 ; ZVFH-NEXT: slli a0, a0, 4
3766 ; ZVFH-NEXT: add sp, sp, a0
3767 ; ZVFH-NEXT: .cfi_def_cfa sp, 16
3768 ; ZVFH-NEXT: addi sp, sp, 16
3769 ; ZVFH-NEXT: .cfi_def_cfa_offset 0
3772 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv64f16:
3774 ; ZVFHMIN-NEXT: addi sp, sp, -16
3775 ; ZVFHMIN-NEXT: .cfi_def_cfa_offset 16
3776 ; ZVFHMIN-NEXT: csrr a1, vlenb
3777 ; ZVFHMIN-NEXT: mv a3, a1
3778 ; ZVFHMIN-NEXT: slli a1, a1, 3
3779 ; ZVFHMIN-NEXT: add a3, a3, a1
3780 ; ZVFHMIN-NEXT: slli a1, a1, 2
3781 ; ZVFHMIN-NEXT: add a1, a1, a3
3782 ; ZVFHMIN-NEXT: sub sp, sp, a1
3783 ; ZVFHMIN-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x29, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 41 * vlenb
3784 ; ZVFHMIN-NEXT: vmv1r.v v24, v0
3785 ; ZVFHMIN-NEXT: csrr a1, vlenb
3786 ; ZVFHMIN-NEXT: mv a3, a1
3787 ; ZVFHMIN-NEXT: slli a1, a1, 3
3788 ; ZVFHMIN-NEXT: add a3, a3, a1
3789 ; ZVFHMIN-NEXT: slli a1, a1, 1
3790 ; ZVFHMIN-NEXT: add a1, a1, a3
3791 ; ZVFHMIN-NEXT: add a1, sp, a1
3792 ; ZVFHMIN-NEXT: addi a1, a1, 16
3793 ; ZVFHMIN-NEXT: vs8r.v v8, (a1) # Unknown-size Folded Spill
3794 ; ZVFHMIN-NEXT: csrr a3, vlenb
3795 ; ZVFHMIN-NEXT: slli a1, a3, 3
3796 ; ZVFHMIN-NEXT: slli a5, a3, 2
3797 ; ZVFHMIN-NEXT: slli a4, a3, 1
3798 ; ZVFHMIN-NEXT: add a1, a0, a1
3799 ; ZVFHMIN-NEXT: sub a6, a2, a5
3800 ; ZVFHMIN-NEXT: vl8re16.v v0, (a1)
3801 ; ZVFHMIN-NEXT: sltu a1, a2, a6
3802 ; ZVFHMIN-NEXT: addi a1, a1, -1
3803 ; ZVFHMIN-NEXT: and a6, a1, a6
3804 ; ZVFHMIN-NEXT: sub a1, a6, a4
3805 ; ZVFHMIN-NEXT: sltu a7, a6, a1
3806 ; ZVFHMIN-NEXT: addi a7, a7, -1
3807 ; ZVFHMIN-NEXT: and a7, a7, a1
3808 ; ZVFHMIN-NEXT: srli a1, a3, 1
3809 ; ZVFHMIN-NEXT: srli a3, a3, 2
3810 ; ZVFHMIN-NEXT: csrr t0, vlenb
3811 ; ZVFHMIN-NEXT: slli t0, t0, 3
3812 ; ZVFHMIN-NEXT: add t0, sp, t0
3813 ; ZVFHMIN-NEXT: addi t0, t0, 16
3814 ; ZVFHMIN-NEXT: vs1r.v v24, (t0) # Unknown-size Folded Spill
3815 ; ZVFHMIN-NEXT: vsetvli t0, zero, e8, m1, ta, ma
3816 ; ZVFHMIN-NEXT: vslidedown.vx v25, v24, a1
3817 ; ZVFHMIN-NEXT: vsetvli t0, zero, e8, mf2, ta, ma
3818 ; ZVFHMIN-NEXT: vslidedown.vx v24, v25, a3
3819 ; ZVFHMIN-NEXT: vl8re16.v v8, (a0)
3820 ; ZVFHMIN-NEXT: csrr a0, vlenb
3821 ; ZVFHMIN-NEXT: slli t0, a0, 5
3822 ; ZVFHMIN-NEXT: add a0, t0, a0
3823 ; ZVFHMIN-NEXT: add a0, sp, a0
3824 ; ZVFHMIN-NEXT: addi a0, a0, 16
3825 ; ZVFHMIN-NEXT: vs8r.v v8, (a0) # Unknown-size Folded Spill
3826 ; ZVFHMIN-NEXT: csrr a0, vlenb
3827 ; ZVFHMIN-NEXT: slli t0, a0, 3
3828 ; ZVFHMIN-NEXT: add a0, t0, a0
3829 ; ZVFHMIN-NEXT: add a0, sp, a0
3830 ; ZVFHMIN-NEXT: addi a0, a0, 16
3831 ; ZVFHMIN-NEXT: vs8r.v v0, (a0) # Unknown-size Folded Spill
3832 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
3833 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v4
3834 ; ZVFHMIN-NEXT: addi a0, sp, 16
3835 ; ZVFHMIN-NEXT: vs8r.v v8, (a0) # Unknown-size Folded Spill
3836 ; ZVFHMIN-NEXT: vmv8r.v v8, v16
3837 ; ZVFHMIN-NEXT: csrr a0, vlenb
3838 ; ZVFHMIN-NEXT: slli t0, a0, 4
3839 ; ZVFHMIN-NEXT: add a0, t0, a0
3840 ; ZVFHMIN-NEXT: add a0, sp, a0
3841 ; ZVFHMIN-NEXT: addi a0, a0, 16
3842 ; ZVFHMIN-NEXT: vs8r.v v16, (a0) # Unknown-size Folded Spill
3843 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v12
3844 ; ZVFHMIN-NEXT: vmv1r.v v0, v24
3845 ; ZVFHMIN-NEXT: addi a0, sp, 16
3846 ; ZVFHMIN-NEXT: vl8r.v v8, (a0) # Unknown-size Folded Reload
3847 ; ZVFHMIN-NEXT: vsetvli zero, a7, e32, m8, ta, ma
3848 ; ZVFHMIN-NEXT: vmfeq.vv v6, v16, v8, v0.t
3849 ; ZVFHMIN-NEXT: bltu a6, a4, .LBB171_2
3850 ; ZVFHMIN-NEXT: # %bb.1:
3851 ; ZVFHMIN-NEXT: mv a6, a4
3852 ; ZVFHMIN-NEXT: .LBB171_2:
3853 ; ZVFHMIN-NEXT: vmv1r.v v0, v25
3854 ; ZVFHMIN-NEXT: csrr a0, vlenb
3855 ; ZVFHMIN-NEXT: slli a7, a0, 3
3856 ; ZVFHMIN-NEXT: add a0, a7, a0
3857 ; ZVFHMIN-NEXT: add a0, sp, a0
3858 ; ZVFHMIN-NEXT: addi a0, a0, 16
3859 ; ZVFHMIN-NEXT: vl8r.v v16, (a0) # Unknown-size Folded Reload
3860 ; ZVFHMIN-NEXT: vsetvli a0, zero, e16, m4, ta, ma
3861 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v16
3862 ; ZVFHMIN-NEXT: csrr a0, vlenb
3863 ; ZVFHMIN-NEXT: slli a7, a0, 4
3864 ; ZVFHMIN-NEXT: add a0, a7, a0
3865 ; ZVFHMIN-NEXT: add a0, sp, a0
3866 ; ZVFHMIN-NEXT: addi a0, a0, 16
3867 ; ZVFHMIN-NEXT: vl8r.v v16, (a0) # Unknown-size Folded Reload
3868 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v24, v16
3869 ; ZVFHMIN-NEXT: vsetvli zero, a6, e32, m8, ta, ma
3870 ; ZVFHMIN-NEXT: vmfeq.vv v5, v24, v8, v0.t
3871 ; ZVFHMIN-NEXT: add a0, a3, a3
3872 ; ZVFHMIN-NEXT: bltu a2, a5, .LBB171_4
3873 ; ZVFHMIN-NEXT: # %bb.3:
3874 ; ZVFHMIN-NEXT: mv a2, a5
3875 ; ZVFHMIN-NEXT: .LBB171_4:
3876 ; ZVFHMIN-NEXT: sub a5, a2, a4
3877 ; ZVFHMIN-NEXT: csrr a6, vlenb
3878 ; ZVFHMIN-NEXT: slli a6, a6, 3
3879 ; ZVFHMIN-NEXT: add a6, sp, a6
3880 ; ZVFHMIN-NEXT: addi a6, a6, 16
3881 ; ZVFHMIN-NEXT: vl1r.v v7, (a6) # Unknown-size Folded Reload
3882 ; ZVFHMIN-NEXT: vsetvli a6, zero, e8, mf2, ta, ma
3883 ; ZVFHMIN-NEXT: vslidedown.vx v0, v7, a3
3884 ; ZVFHMIN-NEXT: csrr a6, vlenb
3885 ; ZVFHMIN-NEXT: mv a7, a6
3886 ; ZVFHMIN-NEXT: slli a6, a6, 3
3887 ; ZVFHMIN-NEXT: add a7, a7, a6
3888 ; ZVFHMIN-NEXT: slli a6, a6, 1
3889 ; ZVFHMIN-NEXT: add a6, a6, a7
3890 ; ZVFHMIN-NEXT: add a6, sp, a6
3891 ; ZVFHMIN-NEXT: addi a6, a6, 16
3892 ; ZVFHMIN-NEXT: vl8r.v v16, (a6) # Unknown-size Folded Reload
3893 ; ZVFHMIN-NEXT: vsetvli a6, zero, e16, m4, ta, ma
3894 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v20
3895 ; ZVFHMIN-NEXT: csrr a6, vlenb
3896 ; ZVFHMIN-NEXT: slli a7, a6, 4
3897 ; ZVFHMIN-NEXT: add a6, a7, a6
3898 ; ZVFHMIN-NEXT: add a6, sp, a6
3899 ; ZVFHMIN-NEXT: addi a6, a6, 16
3900 ; ZVFHMIN-NEXT: vs8r.v v8, (a6) # Unknown-size Folded Spill
3901 ; ZVFHMIN-NEXT: csrr a6, vlenb
3902 ; ZVFHMIN-NEXT: slli a7, a6, 5
3903 ; ZVFHMIN-NEXT: add a6, a7, a6
3904 ; ZVFHMIN-NEXT: add a6, sp, a6
3905 ; ZVFHMIN-NEXT: addi a6, a6, 16
3906 ; ZVFHMIN-NEXT: vl8r.v v24, (a6) # Unknown-size Folded Reload
3907 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v8, v28
3908 ; ZVFHMIN-NEXT: sltu a6, a2, a5
3909 ; ZVFHMIN-NEXT: addi a6, a6, -1
3910 ; ZVFHMIN-NEXT: and a5, a6, a5
3911 ; ZVFHMIN-NEXT: csrr a6, vlenb
3912 ; ZVFHMIN-NEXT: slli a7, a6, 4
3913 ; ZVFHMIN-NEXT: add a6, a7, a6
3914 ; ZVFHMIN-NEXT: add a6, sp, a6
3915 ; ZVFHMIN-NEXT: addi a6, a6, 16
3916 ; ZVFHMIN-NEXT: vl8r.v v24, (a6) # Unknown-size Folded Reload
3917 ; ZVFHMIN-NEXT: vsetvli zero, a5, e32, m8, ta, ma
3918 ; ZVFHMIN-NEXT: vmfeq.vv v4, v24, v8, v0.t
3919 ; ZVFHMIN-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
3920 ; ZVFHMIN-NEXT: vslideup.vx v5, v6, a3
3921 ; ZVFHMIN-NEXT: bltu a2, a4, .LBB171_6
3922 ; ZVFHMIN-NEXT: # %bb.5:
3923 ; ZVFHMIN-NEXT: mv a2, a4
3924 ; ZVFHMIN-NEXT: .LBB171_6:
3925 ; ZVFHMIN-NEXT: vmv1r.v v0, v7
3926 ; ZVFHMIN-NEXT: vsetvli a4, zero, e16, m4, ta, ma
3927 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v24, v16
3928 ; ZVFHMIN-NEXT: csrr a4, vlenb
3929 ; ZVFHMIN-NEXT: slli a5, a4, 5
3930 ; ZVFHMIN-NEXT: add a4, a5, a4
3931 ; ZVFHMIN-NEXT: add a4, sp, a4
3932 ; ZVFHMIN-NEXT: addi a4, a4, 16
3933 ; ZVFHMIN-NEXT: vl8r.v v8, (a4) # Unknown-size Folded Reload
3934 ; ZVFHMIN-NEXT: vfwcvt.f.f.v v16, v8
3935 ; ZVFHMIN-NEXT: vsetvli zero, a2, e32, m8, ta, ma
3936 ; ZVFHMIN-NEXT: vmfeq.vv v8, v24, v16, v0.t
3937 ; ZVFHMIN-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
3938 ; ZVFHMIN-NEXT: vslideup.vx v8, v4, a3
3939 ; ZVFHMIN-NEXT: add a0, a1, a1
3940 ; ZVFHMIN-NEXT: vsetvli zero, a0, e8, m1, ta, ma
3941 ; ZVFHMIN-NEXT: vslideup.vx v8, v5, a1
3942 ; ZVFHMIN-NEXT: vmv.v.v v0, v8
3943 ; ZVFHMIN-NEXT: csrr a0, vlenb
3944 ; ZVFHMIN-NEXT: mv a1, a0
3945 ; ZVFHMIN-NEXT: slli a0, a0, 3
3946 ; ZVFHMIN-NEXT: add a1, a1, a0
3947 ; ZVFHMIN-NEXT: slli a0, a0, 2
3948 ; ZVFHMIN-NEXT: add a0, a0, a1
3949 ; ZVFHMIN-NEXT: add sp, sp, a0
3950 ; ZVFHMIN-NEXT: .cfi_def_cfa sp, 16
3951 ; ZVFHMIN-NEXT: addi sp, sp, 16
3952 ; ZVFHMIN-NEXT: .cfi_def_cfa_offset 0
3954 %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)
3955 ret <vscale x 64 x i1> %v
3958 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)
3960 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) {
3961 ; CHECK-LABEL: fcmp_oeq_vv_nxv1f64:
3963 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
3964 ; CHECK-NEXT: vmfeq.vv v0, v8, v9, v0.t
3966 %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)
3967 ret <vscale x 1 x i1> %v
3970 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) {
3971 ; CHECK-LABEL: fcmp_oeq_vf_nxv1f64:
3973 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
3974 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0, v0.t
3976 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
3977 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
3978 %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)
3979 ret <vscale x 1 x i1> %v
3982 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) {
3983 ; CHECK-LABEL: fcmp_oeq_vf_swap_nxv1f64:
3985 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
3986 ; CHECK-NEXT: vmfeq.vf v0, v8, fa0, v0.t
3988 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
3989 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
3990 %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)
3991 ret <vscale x 1 x i1> %v
3994 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) {
3995 ; CHECK-LABEL: fcmp_ogt_vv_nxv1f64:
3997 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
3998 ; CHECK-NEXT: vmflt.vv v0, v9, v8, v0.t
4000 %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)
4001 ret <vscale x 1 x i1> %v
4004 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) {
4005 ; CHECK-LABEL: fcmp_ogt_vf_nxv1f64:
4007 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4008 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
4010 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4011 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4012 %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)
4013 ret <vscale x 1 x i1> %v
4016 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) {
4017 ; CHECK-LABEL: fcmp_ogt_vf_swap_nxv1f64:
4019 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4020 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
4022 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4023 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4024 %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)
4025 ret <vscale x 1 x i1> %v
4028 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) {
4029 ; CHECK-LABEL: fcmp_oge_vv_nxv1f64:
4031 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4032 ; CHECK-NEXT: vmfle.vv v0, v9, v8, v0.t
4034 %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)
4035 ret <vscale x 1 x i1> %v
4038 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) {
4039 ; CHECK-LABEL: fcmp_oge_vf_nxv1f64:
4041 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4042 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
4044 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4045 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4046 %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)
4047 ret <vscale x 1 x i1> %v
4050 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) {
4051 ; CHECK-LABEL: fcmp_oge_vf_swap_nxv1f64:
4053 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4054 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
4056 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4057 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4058 %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)
4059 ret <vscale x 1 x i1> %v
4062 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) {
4063 ; CHECK-LABEL: fcmp_olt_vv_nxv1f64:
4065 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4066 ; CHECK-NEXT: vmflt.vv v0, v8, v9, v0.t
4068 %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)
4069 ret <vscale x 1 x i1> %v
4072 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) {
4073 ; CHECK-LABEL: fcmp_olt_vf_nxv1f64:
4075 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4076 ; CHECK-NEXT: vmflt.vf v0, v8, fa0, v0.t
4078 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4079 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4080 %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)
4081 ret <vscale x 1 x i1> %v
4084 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) {
4085 ; CHECK-LABEL: fcmp_olt_vf_swap_nxv1f64:
4087 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4088 ; CHECK-NEXT: vmfgt.vf v0, v8, fa0, v0.t
4090 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4091 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4092 %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)
4093 ret <vscale x 1 x i1> %v
4096 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) {
4097 ; CHECK-LABEL: fcmp_ole_vv_nxv1f64:
4099 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4100 ; CHECK-NEXT: vmfle.vv v0, v8, v9, v0.t
4102 %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)
4103 ret <vscale x 1 x i1> %v
4106 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) {
4107 ; CHECK-LABEL: fcmp_ole_vf_nxv1f64:
4109 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4110 ; CHECK-NEXT: vmfle.vf v0, v8, fa0, v0.t
4112 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4113 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4114 %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)
4115 ret <vscale x 1 x i1> %v
4118 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) {
4119 ; CHECK-LABEL: fcmp_ole_vf_swap_nxv1f64:
4121 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4122 ; CHECK-NEXT: vmfge.vf v0, v8, fa0, v0.t
4124 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4125 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4126 %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)
4127 ret <vscale x 1 x i1> %v
4130 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) {
4131 ; CHECK-LABEL: fcmp_one_vv_nxv1f64:
4133 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4134 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
4135 ; CHECK-NEXT: vmflt.vv v8, v9, v8, v0.t
4136 ; CHECK-NEXT: vmor.mm v0, v8, v10
4138 %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)
4139 ret <vscale x 1 x i1> %v
4142 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) {
4143 ; CHECK-LABEL: fcmp_one_vf_nxv1f64:
4145 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4146 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
4147 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0, v0.t
4148 ; CHECK-NEXT: vmor.mm v0, v8, v9
4150 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4151 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4152 %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)
4153 ret <vscale x 1 x i1> %v
4156 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) {
4157 ; CHECK-LABEL: fcmp_one_vf_swap_nxv1f64:
4159 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4160 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
4161 ; CHECK-NEXT: vmflt.vf v8, v8, fa0, v0.t
4162 ; CHECK-NEXT: vmor.mm v0, v8, v9
4164 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4165 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4166 %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)
4167 ret <vscale x 1 x i1> %v
4170 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) {
4171 ; CHECK-LABEL: fcmp_ord_vv_nxv1f64:
4173 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4174 ; CHECK-NEXT: vmfeq.vv v9, v9, v9, v0.t
4175 ; CHECK-NEXT: vmfeq.vv v8, v8, v8, v0.t
4176 ; CHECK-NEXT: vmand.mm v0, v8, v9
4178 %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)
4179 ret <vscale x 1 x i1> %v
4182 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) {
4183 ; CHECK-LABEL: fcmp_ord_vf_nxv1f64:
4185 ; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, ma
4186 ; CHECK-NEXT: vfmv.v.f v9, fa0
4187 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4188 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0, v0.t
4189 ; CHECK-NEXT: vmfeq.vv v8, v8, v8, v0.t
4190 ; CHECK-NEXT: vmand.mm v0, v8, v9
4192 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4193 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4194 %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)
4195 ret <vscale x 1 x i1> %v
4198 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) {
4199 ; CHECK-LABEL: fcmp_ord_vf_swap_nxv1f64:
4201 ; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, ma
4202 ; CHECK-NEXT: vfmv.v.f v9, fa0
4203 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4204 ; CHECK-NEXT: vmfeq.vf v9, v9, fa0, v0.t
4205 ; CHECK-NEXT: vmfeq.vv v8, v8, v8, v0.t
4206 ; CHECK-NEXT: vmand.mm v0, v9, v8
4208 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4209 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4210 %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)
4211 ret <vscale x 1 x i1> %v
4214 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) {
4215 ; CHECK-LABEL: fcmp_ueq_vv_nxv1f64:
4217 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4218 ; CHECK-NEXT: vmflt.vv v10, v8, v9, v0.t
4219 ; CHECK-NEXT: vmflt.vv v8, v9, v8, v0.t
4220 ; CHECK-NEXT: vmnor.mm v0, v8, v10
4222 %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)
4223 ret <vscale x 1 x i1> %v
4226 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) {
4227 ; CHECK-LABEL: fcmp_ueq_vf_nxv1f64:
4229 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4230 ; CHECK-NEXT: vmflt.vf v9, v8, fa0, v0.t
4231 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0, v0.t
4232 ; CHECK-NEXT: vmnor.mm v0, v8, v9
4234 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4235 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4236 %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)
4237 ret <vscale x 1 x i1> %v
4240 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) {
4241 ; CHECK-LABEL: fcmp_ueq_vf_swap_nxv1f64:
4243 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4244 ; CHECK-NEXT: vmfgt.vf v9, v8, fa0, v0.t
4245 ; CHECK-NEXT: vmflt.vf v8, v8, fa0, v0.t
4246 ; CHECK-NEXT: vmnor.mm v0, v8, v9
4248 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4249 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4250 %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)
4251 ret <vscale x 1 x i1> %v
4254 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) {
4255 ; CHECK-LABEL: fcmp_ugt_vv_nxv1f64:
4257 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4258 ; CHECK-NEXT: vmfle.vv v8, v8, v9, v0.t
4259 ; CHECK-NEXT: vmnot.m v0, v8
4261 %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)
4262 ret <vscale x 1 x i1> %v
4265 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) {
4266 ; CHECK-LABEL: fcmp_ugt_vf_nxv1f64:
4268 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4269 ; CHECK-NEXT: vmfle.vf v8, v8, fa0, v0.t
4270 ; CHECK-NEXT: vmnot.m v0, v8
4272 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4273 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4274 %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)
4275 ret <vscale x 1 x i1> %v
4278 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) {
4279 ; CHECK-LABEL: fcmp_ugt_vf_swap_nxv1f64:
4281 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4282 ; CHECK-NEXT: vmfge.vf v8, v8, fa0, v0.t
4283 ; CHECK-NEXT: vmnot.m v0, v8
4285 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4286 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4287 %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)
4288 ret <vscale x 1 x i1> %v
4291 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) {
4292 ; CHECK-LABEL: fcmp_uge_vv_nxv1f64:
4294 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4295 ; CHECK-NEXT: vmflt.vv v8, v8, v9, v0.t
4296 ; CHECK-NEXT: vmnot.m v0, v8
4298 %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)
4299 ret <vscale x 1 x i1> %v
4302 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) {
4303 ; CHECK-LABEL: fcmp_uge_vf_nxv1f64:
4305 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4306 ; CHECK-NEXT: vmflt.vf v8, v8, fa0, v0.t
4307 ; CHECK-NEXT: vmnot.m v0, v8
4309 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4310 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4311 %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)
4312 ret <vscale x 1 x i1> %v
4315 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) {
4316 ; CHECK-LABEL: fcmp_uge_vf_swap_nxv1f64:
4318 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4319 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0, v0.t
4320 ; CHECK-NEXT: vmnot.m v0, v8
4322 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4323 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4324 %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)
4325 ret <vscale x 1 x i1> %v
4328 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) {
4329 ; CHECK-LABEL: fcmp_ult_vv_nxv1f64:
4331 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4332 ; CHECK-NEXT: vmfle.vv v8, v9, v8, v0.t
4333 ; CHECK-NEXT: vmnot.m v0, v8
4335 %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)
4336 ret <vscale x 1 x i1> %v
4339 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) {
4340 ; CHECK-LABEL: fcmp_ult_vf_nxv1f64:
4342 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4343 ; CHECK-NEXT: vmfge.vf v8, v8, fa0, v0.t
4344 ; CHECK-NEXT: vmnot.m v0, v8
4346 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4347 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4348 %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)
4349 ret <vscale x 1 x i1> %v
4352 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) {
4353 ; CHECK-LABEL: fcmp_ult_vf_swap_nxv1f64:
4355 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4356 ; CHECK-NEXT: vmfle.vf v8, v8, fa0, v0.t
4357 ; CHECK-NEXT: vmnot.m v0, v8
4359 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4360 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4361 %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)
4362 ret <vscale x 1 x i1> %v
4365 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) {
4366 ; CHECK-LABEL: fcmp_ule_vv_nxv1f64:
4368 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4369 ; CHECK-NEXT: vmflt.vv v8, v9, v8, v0.t
4370 ; CHECK-NEXT: vmnot.m v0, v8
4372 %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)
4373 ret <vscale x 1 x i1> %v
4376 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) {
4377 ; CHECK-LABEL: fcmp_ule_vf_nxv1f64:
4379 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4380 ; CHECK-NEXT: vmfgt.vf v8, v8, fa0, v0.t
4381 ; CHECK-NEXT: vmnot.m v0, v8
4383 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4384 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4385 %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)
4386 ret <vscale x 1 x i1> %v
4389 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) {
4390 ; CHECK-LABEL: fcmp_ule_vf_swap_nxv1f64:
4392 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4393 ; CHECK-NEXT: vmflt.vf v8, v8, fa0, v0.t
4394 ; CHECK-NEXT: vmnot.m v0, v8
4396 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4397 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4398 %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)
4399 ret <vscale x 1 x i1> %v
4402 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) {
4403 ; CHECK-LABEL: fcmp_une_vv_nxv1f64:
4405 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4406 ; CHECK-NEXT: vmfne.vv v0, v8, v9, v0.t
4408 %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)
4409 ret <vscale x 1 x i1> %v
4412 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) {
4413 ; CHECK-LABEL: fcmp_une_vf_nxv1f64:
4415 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4416 ; CHECK-NEXT: vmfne.vf v0, v8, fa0, v0.t
4418 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4419 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4420 %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)
4421 ret <vscale x 1 x i1> %v
4424 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) {
4425 ; CHECK-LABEL: fcmp_une_vf_swap_nxv1f64:
4427 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4428 ; CHECK-NEXT: vmfne.vf v0, v8, fa0, v0.t
4430 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4431 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4432 %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)
4433 ret <vscale x 1 x i1> %v
4436 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) {
4437 ; CHECK-LABEL: fcmp_uno_vv_nxv1f64:
4439 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4440 ; CHECK-NEXT: vmfne.vv v9, v9, v9, v0.t
4441 ; CHECK-NEXT: vmfne.vv v8, v8, v8, v0.t
4442 ; CHECK-NEXT: vmor.mm v0, v8, v9
4444 %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)
4445 ret <vscale x 1 x i1> %v
4448 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) {
4449 ; CHECK-LABEL: fcmp_uno_vf_nxv1f64:
4451 ; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, ma
4452 ; CHECK-NEXT: vfmv.v.f v9, fa0
4453 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4454 ; CHECK-NEXT: vmfne.vf v9, v9, fa0, v0.t
4455 ; CHECK-NEXT: vmfne.vv v8, v8, v8, v0.t
4456 ; CHECK-NEXT: vmor.mm v0, v8, v9
4458 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4459 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4460 %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)
4461 ret <vscale x 1 x i1> %v
4464 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) {
4465 ; CHECK-LABEL: fcmp_uno_vf_swap_nxv1f64:
4467 ; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, ma
4468 ; CHECK-NEXT: vfmv.v.f v9, fa0
4469 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
4470 ; CHECK-NEXT: vmfne.vf v9, v9, fa0, v0.t
4471 ; CHECK-NEXT: vmfne.vv v8, v8, v8, v0.t
4472 ; CHECK-NEXT: vmor.mm v0, v9, v8
4474 %elt.head = insertelement <vscale x 1 x double> poison, double %b, i32 0
4475 %vb = shufflevector <vscale x 1 x double> %elt.head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer
4476 %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)
4477 ret <vscale x 1 x i1> %v
4480 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)
4482 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) {
4483 ; CHECK-LABEL: fcmp_oeq_vv_nxv3f64:
4485 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
4486 ; CHECK-NEXT: vmfeq.vv v16, v8, v12, v0.t
4487 ; CHECK-NEXT: vmv1r.v v0, v16
4489 %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)
4490 ret <vscale x 3 x i1> %v
4493 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)
4495 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) {
4496 ; CHECK-LABEL: fcmp_oeq_vv_nxv8f64:
4498 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4499 ; CHECK-NEXT: vmfeq.vv v24, v8, v16, v0.t
4500 ; CHECK-NEXT: vmv1r.v v0, v24
4502 %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)
4503 ret <vscale x 8 x i1> %v
4506 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) {
4507 ; CHECK-LABEL: fcmp_oeq_vf_nxv8f64:
4509 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4510 ; CHECK-NEXT: vmfeq.vf v16, v8, fa0, v0.t
4511 ; CHECK-NEXT: vmv1r.v v0, v16
4513 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4514 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4515 %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)
4516 ret <vscale x 8 x i1> %v
4519 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) {
4520 ; CHECK-LABEL: fcmp_oeq_vf_swap_nxv8f64:
4522 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4523 ; CHECK-NEXT: vmfeq.vf v16, v8, fa0, v0.t
4524 ; CHECK-NEXT: vmv1r.v v0, v16
4526 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4527 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4528 %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)
4529 ret <vscale x 8 x i1> %v
4532 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) {
4533 ; CHECK-LABEL: fcmp_ogt_vv_nxv8f64:
4535 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4536 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
4537 ; CHECK-NEXT: vmv1r.v v0, v24
4539 %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)
4540 ret <vscale x 8 x i1> %v
4543 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) {
4544 ; CHECK-LABEL: fcmp_ogt_vf_nxv8f64:
4546 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4547 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
4548 ; CHECK-NEXT: vmv1r.v v0, v16
4550 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4551 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4552 %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)
4553 ret <vscale x 8 x i1> %v
4556 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) {
4557 ; CHECK-LABEL: fcmp_ogt_vf_swap_nxv8f64:
4559 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4560 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
4561 ; CHECK-NEXT: vmv1r.v v0, v16
4563 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4564 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4565 %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)
4566 ret <vscale x 8 x i1> %v
4569 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) {
4570 ; CHECK-LABEL: fcmp_oge_vv_nxv8f64:
4572 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4573 ; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t
4574 ; CHECK-NEXT: vmv1r.v v0, v24
4576 %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)
4577 ret <vscale x 8 x i1> %v
4580 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) {
4581 ; CHECK-LABEL: fcmp_oge_vf_nxv8f64:
4583 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4584 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
4585 ; CHECK-NEXT: vmv1r.v v0, v16
4587 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4588 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4589 %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)
4590 ret <vscale x 8 x i1> %v
4593 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) {
4594 ; CHECK-LABEL: fcmp_oge_vf_swap_nxv8f64:
4596 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4597 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
4598 ; CHECK-NEXT: vmv1r.v v0, v16
4600 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4601 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4602 %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)
4603 ret <vscale x 8 x i1> %v
4606 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) {
4607 ; CHECK-LABEL: fcmp_olt_vv_nxv8f64:
4609 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4610 ; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t
4611 ; CHECK-NEXT: vmv1r.v v0, v24
4613 %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)
4614 ret <vscale x 8 x i1> %v
4617 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) {
4618 ; CHECK-LABEL: fcmp_olt_vf_nxv8f64:
4620 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4621 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
4622 ; CHECK-NEXT: vmv1r.v v0, v16
4624 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4625 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4626 %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)
4627 ret <vscale x 8 x i1> %v
4630 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) {
4631 ; CHECK-LABEL: fcmp_olt_vf_swap_nxv8f64:
4633 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4634 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
4635 ; CHECK-NEXT: vmv1r.v v0, v16
4637 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4638 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4639 %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)
4640 ret <vscale x 8 x i1> %v
4643 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) {
4644 ; CHECK-LABEL: fcmp_ole_vv_nxv8f64:
4646 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4647 ; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t
4648 ; CHECK-NEXT: vmv1r.v v0, v24
4650 %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)
4651 ret <vscale x 8 x i1> %v
4654 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) {
4655 ; CHECK-LABEL: fcmp_ole_vf_nxv8f64:
4657 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4658 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
4659 ; CHECK-NEXT: vmv1r.v v0, v16
4661 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4662 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4663 %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)
4664 ret <vscale x 8 x i1> %v
4667 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) {
4668 ; CHECK-LABEL: fcmp_ole_vf_swap_nxv8f64:
4670 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4671 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
4672 ; CHECK-NEXT: vmv1r.v v0, v16
4674 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4675 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4676 %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)
4677 ret <vscale x 8 x i1> %v
4680 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) {
4681 ; CHECK-LABEL: fcmp_one_vv_nxv8f64:
4683 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4684 ; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t
4685 ; CHECK-NEXT: vmflt.vv v25, v16, v8, v0.t
4686 ; CHECK-NEXT: vmor.mm v0, v25, v24
4688 %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)
4689 ret <vscale x 8 x i1> %v
4692 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) {
4693 ; CHECK-LABEL: fcmp_one_vf_nxv8f64:
4695 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4696 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
4697 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t
4698 ; CHECK-NEXT: vmor.mm v0, v17, v16
4700 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4701 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4702 %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)
4703 ret <vscale x 8 x i1> %v
4706 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) {
4707 ; CHECK-LABEL: fcmp_one_vf_swap_nxv8f64:
4709 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4710 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
4711 ; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t
4712 ; CHECK-NEXT: vmor.mm v0, v17, v16
4714 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4715 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4716 %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)
4717 ret <vscale x 8 x i1> %v
4720 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) {
4721 ; CHECK-LABEL: fcmp_ord_vv_nxv8f64:
4723 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4724 ; CHECK-NEXT: vmfeq.vv v24, v16, v16, v0.t
4725 ; CHECK-NEXT: vmfeq.vv v16, v8, v8, v0.t
4726 ; CHECK-NEXT: vmand.mm v0, v16, v24
4728 %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)
4729 ret <vscale x 8 x i1> %v
4732 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) {
4733 ; CHECK-LABEL: fcmp_ord_vf_nxv8f64:
4735 ; CHECK-NEXT: vsetvli a1, zero, e64, m8, ta, ma
4736 ; CHECK-NEXT: vfmv.v.f v16, fa0
4737 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4738 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0, v0.t
4739 ; CHECK-NEXT: vmfeq.vv v16, v8, v8, v0.t
4740 ; CHECK-NEXT: vmand.mm v0, v16, v24
4742 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4743 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4744 %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)
4745 ret <vscale x 8 x i1> %v
4748 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) {
4749 ; CHECK-LABEL: fcmp_ord_vf_swap_nxv8f64:
4751 ; CHECK-NEXT: vsetvli a1, zero, e64, m8, ta, ma
4752 ; CHECK-NEXT: vfmv.v.f v16, fa0
4753 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4754 ; CHECK-NEXT: vmfeq.vf v24, v16, fa0, v0.t
4755 ; CHECK-NEXT: vmfeq.vv v16, v8, v8, v0.t
4756 ; CHECK-NEXT: vmand.mm v0, v24, v16
4758 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4759 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4760 %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)
4761 ret <vscale x 8 x i1> %v
4764 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) {
4765 ; CHECK-LABEL: fcmp_ueq_vv_nxv8f64:
4767 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4768 ; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t
4769 ; CHECK-NEXT: vmflt.vv v25, v16, v8, v0.t
4770 ; CHECK-NEXT: vmnor.mm v0, v25, v24
4772 %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)
4773 ret <vscale x 8 x i1> %v
4776 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) {
4777 ; CHECK-LABEL: fcmp_ueq_vf_nxv8f64:
4779 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4780 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
4781 ; CHECK-NEXT: vmfgt.vf v17, v8, fa0, v0.t
4782 ; CHECK-NEXT: vmnor.mm v0, v17, v16
4784 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4785 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4786 %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)
4787 ret <vscale x 8 x i1> %v
4790 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) {
4791 ; CHECK-LABEL: fcmp_ueq_vf_swap_nxv8f64:
4793 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4794 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
4795 ; CHECK-NEXT: vmflt.vf v17, v8, fa0, v0.t
4796 ; CHECK-NEXT: vmnor.mm v0, v17, v16
4798 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4799 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4800 %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)
4801 ret <vscale x 8 x i1> %v
4804 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) {
4805 ; CHECK-LABEL: fcmp_ugt_vv_nxv8f64:
4807 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4808 ; CHECK-NEXT: vmfle.vv v24, v8, v16, v0.t
4809 ; CHECK-NEXT: vmnot.m v0, v24
4811 %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)
4812 ret <vscale x 8 x i1> %v
4815 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) {
4816 ; CHECK-LABEL: fcmp_ugt_vf_nxv8f64:
4818 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4819 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
4820 ; CHECK-NEXT: vmnot.m v0, v16
4822 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4823 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4824 %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)
4825 ret <vscale x 8 x i1> %v
4828 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) {
4829 ; CHECK-LABEL: fcmp_ugt_vf_swap_nxv8f64:
4831 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4832 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
4833 ; CHECK-NEXT: vmnot.m v0, v16
4835 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4836 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4837 %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)
4838 ret <vscale x 8 x i1> %v
4841 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) {
4842 ; CHECK-LABEL: fcmp_uge_vv_nxv8f64:
4844 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4845 ; CHECK-NEXT: vmflt.vv v24, v8, v16, v0.t
4846 ; CHECK-NEXT: vmnot.m v0, v24
4848 %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)
4849 ret <vscale x 8 x i1> %v
4852 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) {
4853 ; CHECK-LABEL: fcmp_uge_vf_nxv8f64:
4855 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4856 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
4857 ; CHECK-NEXT: vmnot.m v0, v16
4859 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4860 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4861 %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)
4862 ret <vscale x 8 x i1> %v
4865 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) {
4866 ; CHECK-LABEL: fcmp_uge_vf_swap_nxv8f64:
4868 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4869 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
4870 ; CHECK-NEXT: vmnot.m v0, v16
4872 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4873 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4874 %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)
4875 ret <vscale x 8 x i1> %v
4878 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) {
4879 ; CHECK-LABEL: fcmp_ult_vv_nxv8f64:
4881 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4882 ; CHECK-NEXT: vmfle.vv v24, v16, v8, v0.t
4883 ; CHECK-NEXT: vmnot.m v0, v24
4885 %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)
4886 ret <vscale x 8 x i1> %v
4889 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) {
4890 ; CHECK-LABEL: fcmp_ult_vf_nxv8f64:
4892 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4893 ; CHECK-NEXT: vmfge.vf v16, v8, fa0, v0.t
4894 ; CHECK-NEXT: vmnot.m v0, v16
4896 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4897 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4898 %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)
4899 ret <vscale x 8 x i1> %v
4902 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) {
4903 ; CHECK-LABEL: fcmp_ult_vf_swap_nxv8f64:
4905 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4906 ; CHECK-NEXT: vmfle.vf v16, v8, fa0, v0.t
4907 ; CHECK-NEXT: vmnot.m v0, v16
4909 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4910 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4911 %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)
4912 ret <vscale x 8 x i1> %v
4915 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) {
4916 ; CHECK-LABEL: fcmp_ule_vv_nxv8f64:
4918 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4919 ; CHECK-NEXT: vmflt.vv v24, v16, v8, v0.t
4920 ; CHECK-NEXT: vmnot.m v0, v24
4922 %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)
4923 ret <vscale x 8 x i1> %v
4926 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) {
4927 ; CHECK-LABEL: fcmp_ule_vf_nxv8f64:
4929 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4930 ; CHECK-NEXT: vmfgt.vf v16, v8, fa0, v0.t
4931 ; CHECK-NEXT: vmnot.m v0, v16
4933 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4934 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4935 %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)
4936 ret <vscale x 8 x i1> %v
4939 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) {
4940 ; CHECK-LABEL: fcmp_ule_vf_swap_nxv8f64:
4942 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4943 ; CHECK-NEXT: vmflt.vf v16, v8, fa0, v0.t
4944 ; CHECK-NEXT: vmnot.m v0, v16
4946 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4947 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4948 %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)
4949 ret <vscale x 8 x i1> %v
4952 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) {
4953 ; CHECK-LABEL: fcmp_une_vv_nxv8f64:
4955 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4956 ; CHECK-NEXT: vmfne.vv v24, v8, v16, v0.t
4957 ; CHECK-NEXT: vmv1r.v v0, v24
4959 %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)
4960 ret <vscale x 8 x i1> %v
4963 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) {
4964 ; CHECK-LABEL: fcmp_une_vf_nxv8f64:
4966 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4967 ; CHECK-NEXT: vmfne.vf v16, v8, fa0, v0.t
4968 ; CHECK-NEXT: vmv1r.v v0, v16
4970 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4971 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4972 %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)
4973 ret <vscale x 8 x i1> %v
4976 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) {
4977 ; CHECK-LABEL: fcmp_une_vf_swap_nxv8f64:
4979 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4980 ; CHECK-NEXT: vmfne.vf v16, v8, fa0, v0.t
4981 ; CHECK-NEXT: vmv1r.v v0, v16
4983 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
4984 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
4985 %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)
4986 ret <vscale x 8 x i1> %v
4989 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) {
4990 ; CHECK-LABEL: fcmp_uno_vv_nxv8f64:
4992 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
4993 ; CHECK-NEXT: vmfne.vv v24, v16, v16, v0.t
4994 ; CHECK-NEXT: vmfne.vv v16, v8, v8, v0.t
4995 ; CHECK-NEXT: vmor.mm v0, v16, v24
4997 %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)
4998 ret <vscale x 8 x i1> %v
5001 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) {
5002 ; CHECK-LABEL: fcmp_uno_vf_nxv8f64:
5004 ; CHECK-NEXT: vsetvli a1, zero, e64, m8, ta, ma
5005 ; CHECK-NEXT: vfmv.v.f v16, fa0
5006 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
5007 ; CHECK-NEXT: vmfne.vf v24, v16, fa0, v0.t
5008 ; CHECK-NEXT: vmfne.vv v16, v8, v8, v0.t
5009 ; CHECK-NEXT: vmor.mm v0, v16, v24
5011 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
5012 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
5013 %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)
5014 ret <vscale x 8 x i1> %v
5017 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) {
5018 ; CHECK-LABEL: fcmp_uno_vf_swap_nxv8f64:
5020 ; CHECK-NEXT: vsetvli a1, zero, e64, m8, ta, ma
5021 ; CHECK-NEXT: vfmv.v.f v16, fa0
5022 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
5023 ; CHECK-NEXT: vmfne.vf v24, v16, fa0, v0.t
5024 ; CHECK-NEXT: vmfne.vv v16, v8, v8, v0.t
5025 ; CHECK-NEXT: vmor.mm v0, v24, v16
5027 %elt.head = insertelement <vscale x 8 x double> poison, double %b, i32 0
5028 %vb = shufflevector <vscale x 8 x double> %elt.head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer
5029 %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)
5030 ret <vscale x 8 x i1> %v
5033 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)
5035 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) {
5036 %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)
5037 ret <vscale x 32 x i1> %v