[AMDGPU] Infer amdgpu-no-flat-scratch-init attribute in AMDGPUAttributor (#94647)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / setcc-fp-vp.ll
blob6c11e9413525e02e3411da537304ff3e48091171
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:
19 ; CHECK:       # %bb.0:
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
25 ; CHECK-NEXT:    ret
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:
32 ; CHECK:       # %bb.0:
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
40 ; CHECK-NEXT:    ret
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:
49 ; CHECK:       # %bb.0:
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
57 ; CHECK-NEXT:    ret
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:
66 ; CHECK:       # %bb.0:
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
72 ; CHECK-NEXT:    ret
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:
79 ; CHECK:       # %bb.0:
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
87 ; CHECK-NEXT:    ret
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:
96 ; CHECK:       # %bb.0:
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
104 ; CHECK-NEXT:    ret
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:
113 ; CHECK:       # %bb.0:
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
119 ; CHECK-NEXT:    ret
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:
126 ; CHECK:       # %bb.0:
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
134 ; CHECK-NEXT:    ret
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:
143 ; CHECK:       # %bb.0:
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
151 ; CHECK-NEXT:    ret
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:
160 ; CHECK:       # %bb.0:
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
166 ; CHECK-NEXT:    ret
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:
173 ; CHECK:       # %bb.0:
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
181 ; CHECK-NEXT:    ret
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:
190 ; CHECK:       # %bb.0:
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
198 ; CHECK-NEXT:    ret
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:
207 ; CHECK:       # %bb.0:
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
213 ; CHECK-NEXT:    ret
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:
220 ; CHECK:       # %bb.0:
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
228 ; CHECK-NEXT:    ret
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:
237 ; CHECK:       # %bb.0:
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
245 ; CHECK-NEXT:    ret
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:
254 ; CHECK:       # %bb.0:
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
262 ; CHECK-NEXT:    ret
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:
269 ; CHECK:       # %bb.0:
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
279 ; CHECK-NEXT:    ret
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:
288 ; CHECK:       # %bb.0:
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
298 ; CHECK-NEXT:    ret
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:
307 ; CHECK:       # %bb.0:
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
315 ; CHECK-NEXT:    ret
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:
322 ; CHECK:       # %bb.0:
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
334 ; CHECK-NEXT:    ret
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:
343 ; CHECK:       # %bb.0:
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
355 ; CHECK-NEXT:    ret
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:
364 ; CHECK:       # %bb.0:
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
372 ; CHECK-NEXT:    ret
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:
379 ; CHECK:       # %bb.0:
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
389 ; CHECK-NEXT:    ret
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:
398 ; CHECK:       # %bb.0:
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
408 ; CHECK-NEXT:    ret
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:
417 ; CHECK:       # %bb.0:
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
424 ; CHECK-NEXT:    ret
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:
431 ; CHECK:       # %bb.0:
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
440 ; CHECK-NEXT:    ret
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:
449 ; CHECK:       # %bb.0:
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
458 ; CHECK-NEXT:    ret
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:
467 ; CHECK:       # %bb.0:
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
474 ; CHECK-NEXT:    ret
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:
481 ; CHECK:       # %bb.0:
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
490 ; CHECK-NEXT:    ret
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:
499 ; CHECK:       # %bb.0:
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
508 ; CHECK-NEXT:    ret
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:
517 ; CHECK:       # %bb.0:
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
524 ; CHECK-NEXT:    ret
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:
531 ; CHECK:       # %bb.0:
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
540 ; CHECK-NEXT:    ret
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:
549 ; CHECK:       # %bb.0:
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
558 ; CHECK-NEXT:    ret
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:
567 ; CHECK:       # %bb.0:
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
574 ; CHECK-NEXT:    ret
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:
581 ; CHECK:       # %bb.0:
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
590 ; CHECK-NEXT:    ret
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:
599 ; CHECK:       # %bb.0:
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
608 ; CHECK-NEXT:    ret
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:
617 ; CHECK:       # %bb.0:
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
623 ; CHECK-NEXT:    ret
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:
630 ; CHECK:       # %bb.0:
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
638 ; CHECK-NEXT:    ret
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:
647 ; CHECK:       # %bb.0:
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
655 ; CHECK-NEXT:    ret
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:
664 ; CHECK:       # %bb.0:
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
672 ; CHECK-NEXT:    ret
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:
679 ; CHECK:       # %bb.0:
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
691 ; CHECK-NEXT:    ret
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:
700 ; CHECK:       # %bb.0:
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
712 ; CHECK-NEXT:    ret
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:
723 ; CHECK:       # %bb.0:
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
730 ; CHECK-NEXT:    ret
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:
739 ; CHECK:       # %bb.0:
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
746 ; CHECK-NEXT:    ret
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:
753 ; CHECK:       # %bb.0:
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
762 ; CHECK-NEXT:    ret
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:
771 ; CHECK:       # %bb.0:
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
780 ; CHECK-NEXT:    ret
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:
789 ; CHECK:       # %bb.0:
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
796 ; CHECK-NEXT:    ret
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:
803 ; CHECK:       # %bb.0:
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
812 ; CHECK-NEXT:    ret
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:
821 ; CHECK:       # %bb.0:
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
830 ; CHECK-NEXT:    ret
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:
839 ; CHECK:       # %bb.0:
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
846 ; CHECK-NEXT:    ret
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:
853 ; CHECK:       # %bb.0:
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
862 ; CHECK-NEXT:    ret
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:
871 ; CHECK:       # %bb.0:
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
880 ; CHECK-NEXT:    ret
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:
889 ; CHECK:       # %bb.0:
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
896 ; CHECK-NEXT:    ret
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:
903 ; CHECK:       # %bb.0:
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
912 ; CHECK-NEXT:    ret
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:
921 ; CHECK:       # %bb.0:
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
930 ; CHECK-NEXT:    ret
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:
939 ; CHECK:       # %bb.0:
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
946 ; CHECK-NEXT:    ret
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:
953 ; CHECK:       # %bb.0:
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
962 ; CHECK-NEXT:    ret
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:
971 ; CHECK:       # %bb.0:
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
980 ; CHECK-NEXT:    ret
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:
989 ; CHECK:       # %bb.0:
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
997 ; CHECK-NEXT:    ret
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:
1004 ; CHECK:       # %bb.0:
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
1014 ; CHECK-NEXT:    ret
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:
1023 ; CHECK:       # %bb.0:
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
1033 ; CHECK-NEXT:    ret
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:
1042 ; CHECK:       # %bb.0:
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
1052 ; CHECK-NEXT:    ret
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:
1059 ; CHECK:       # %bb.0:
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
1071 ; CHECK-NEXT:    ret
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:
1080 ; CHECK:       # %bb.0:
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
1092 ; CHECK-NEXT:    ret
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:
1101 ; CHECK:       # %bb.0:
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
1109 ; CHECK-NEXT:    ret
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:
1116 ; CHECK:       # %bb.0:
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
1126 ; CHECK-NEXT:    ret
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:
1135 ; CHECK:       # %bb.0:
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
1145 ; CHECK-NEXT:    ret
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:
1154 ; CHECK:       # %bb.0:
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
1161 ; CHECK-NEXT:    ret
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:
1168 ; CHECK:       # %bb.0:
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
1177 ; CHECK-NEXT:    ret
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:
1186 ; CHECK:       # %bb.0:
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
1195 ; CHECK-NEXT:    ret
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:
1204 ; CHECK:       # %bb.0:
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
1211 ; CHECK-NEXT:    ret
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:
1218 ; CHECK:       # %bb.0:
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
1227 ; CHECK-NEXT:    ret
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:
1236 ; CHECK:       # %bb.0:
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
1245 ; CHECK-NEXT:    ret
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:
1254 ; CHECK:       # %bb.0:
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
1261 ; CHECK-NEXT:    ret
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:
1268 ; CHECK:       # %bb.0:
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
1277 ; CHECK-NEXT:    ret
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:
1286 ; CHECK:       # %bb.0:
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
1295 ; CHECK-NEXT:    ret
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:
1304 ; CHECK:       # %bb.0:
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
1311 ; CHECK-NEXT:    ret
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:
1318 ; CHECK:       # %bb.0:
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
1327 ; CHECK-NEXT:    ret
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:
1336 ; CHECK:       # %bb.0:
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
1345 ; CHECK-NEXT:    ret
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:
1354 ; CHECK:       # %bb.0:
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
1361 ; CHECK-NEXT:    ret
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:
1368 ; CHECK:       # %bb.0:
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
1377 ; CHECK-NEXT:    ret
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:
1386 ; CHECK:       # %bb.0:
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
1395 ; CHECK-NEXT:    ret
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:
1404 ; CHECK:       # %bb.0:
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
1414 ; CHECK-NEXT:    ret
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:
1421 ; CHECK:       # %bb.0:
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
1433 ; CHECK-NEXT:    ret
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:
1442 ; CHECK:       # %bb.0:
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
1454 ; CHECK-NEXT:    ret
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:
1465 ; CHECK:       # %bb.0:
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
1645 ; CHECK-NEXT:    ret
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:
1654 ; ZVFH:       # %bb.0:
1655 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1656 ; ZVFH-NEXT:    vmfeq.vv v0, v8, v9, v0.t
1657 ; ZVFH-NEXT:    ret
1659 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv1f16:
1660 ; ZVFHMIN:       # %bb.0:
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
1666 ; ZVFHMIN-NEXT:    ret
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:
1673 ; ZVFH:       # %bb.0:
1674 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1675 ; ZVFH-NEXT:    vmfeq.vf v0, v8, fa0, v0.t
1676 ; ZVFH-NEXT:    ret
1678 ; ZVFHMIN-LABEL: fcmp_oeq_vf_nxv1f16:
1679 ; ZVFHMIN:       # %bb.0:
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
1687 ; ZVFHMIN-NEXT:    ret
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:
1696 ; ZVFH:       # %bb.0:
1697 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1698 ; ZVFH-NEXT:    vmfeq.vf v0, v8, fa0, v0.t
1699 ; ZVFH-NEXT:    ret
1701 ; ZVFHMIN-LABEL: fcmp_oeq_vf_swap_nxv1f16:
1702 ; ZVFHMIN:       # %bb.0:
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
1710 ; ZVFHMIN-NEXT:    ret
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:
1719 ; ZVFH:       # %bb.0:
1720 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1721 ; ZVFH-NEXT:    vmflt.vv v0, v9, v8, v0.t
1722 ; ZVFH-NEXT:    ret
1724 ; ZVFHMIN-LABEL: fcmp_ogt_vv_nxv1f16:
1725 ; ZVFHMIN:       # %bb.0:
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
1731 ; ZVFHMIN-NEXT:    ret
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:
1738 ; ZVFH:       # %bb.0:
1739 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1740 ; ZVFH-NEXT:    vmfgt.vf v0, v8, fa0, v0.t
1741 ; ZVFH-NEXT:    ret
1743 ; ZVFHMIN-LABEL: fcmp_ogt_vf_nxv1f16:
1744 ; ZVFHMIN:       # %bb.0:
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
1752 ; ZVFHMIN-NEXT:    ret
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:
1761 ; ZVFH:       # %bb.0:
1762 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1763 ; ZVFH-NEXT:    vmflt.vf v0, v8, fa0, v0.t
1764 ; ZVFH-NEXT:    ret
1766 ; ZVFHMIN-LABEL: fcmp_ogt_vf_swap_nxv1f16:
1767 ; ZVFHMIN:       # %bb.0:
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
1775 ; ZVFHMIN-NEXT:    ret
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:
1784 ; ZVFH:       # %bb.0:
1785 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1786 ; ZVFH-NEXT:    vmfle.vv v0, v9, v8, v0.t
1787 ; ZVFH-NEXT:    ret
1789 ; ZVFHMIN-LABEL: fcmp_oge_vv_nxv1f16:
1790 ; ZVFHMIN:       # %bb.0:
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
1796 ; ZVFHMIN-NEXT:    ret
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:
1803 ; ZVFH:       # %bb.0:
1804 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1805 ; ZVFH-NEXT:    vmfge.vf v0, v8, fa0, v0.t
1806 ; ZVFH-NEXT:    ret
1808 ; ZVFHMIN-LABEL: fcmp_oge_vf_nxv1f16:
1809 ; ZVFHMIN:       # %bb.0:
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
1817 ; ZVFHMIN-NEXT:    ret
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:
1826 ; ZVFH:       # %bb.0:
1827 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1828 ; ZVFH-NEXT:    vmfle.vf v0, v8, fa0, v0.t
1829 ; ZVFH-NEXT:    ret
1831 ; ZVFHMIN-LABEL: fcmp_oge_vf_swap_nxv1f16:
1832 ; ZVFHMIN:       # %bb.0:
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
1840 ; ZVFHMIN-NEXT:    ret
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:
1849 ; ZVFH:       # %bb.0:
1850 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1851 ; ZVFH-NEXT:    vmflt.vv v0, v8, v9, v0.t
1852 ; ZVFH-NEXT:    ret
1854 ; ZVFHMIN-LABEL: fcmp_olt_vv_nxv1f16:
1855 ; ZVFHMIN:       # %bb.0:
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
1861 ; ZVFHMIN-NEXT:    ret
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:
1868 ; ZVFH:       # %bb.0:
1869 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1870 ; ZVFH-NEXT:    vmflt.vf v0, v8, fa0, v0.t
1871 ; ZVFH-NEXT:    ret
1873 ; ZVFHMIN-LABEL: fcmp_olt_vf_nxv1f16:
1874 ; ZVFHMIN:       # %bb.0:
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
1882 ; ZVFHMIN-NEXT:    ret
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:
1891 ; ZVFH:       # %bb.0:
1892 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1893 ; ZVFH-NEXT:    vmfgt.vf v0, v8, fa0, v0.t
1894 ; ZVFH-NEXT:    ret
1896 ; ZVFHMIN-LABEL: fcmp_olt_vf_swap_nxv1f16:
1897 ; ZVFHMIN:       # %bb.0:
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
1905 ; ZVFHMIN-NEXT:    ret
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:
1914 ; ZVFH:       # %bb.0:
1915 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1916 ; ZVFH-NEXT:    vmfle.vv v0, v8, v9, v0.t
1917 ; ZVFH-NEXT:    ret
1919 ; ZVFHMIN-LABEL: fcmp_ole_vv_nxv1f16:
1920 ; ZVFHMIN:       # %bb.0:
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
1926 ; ZVFHMIN-NEXT:    ret
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:
1933 ; ZVFH:       # %bb.0:
1934 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1935 ; ZVFH-NEXT:    vmfle.vf v0, v8, fa0, v0.t
1936 ; ZVFH-NEXT:    ret
1938 ; ZVFHMIN-LABEL: fcmp_ole_vf_nxv1f16:
1939 ; ZVFHMIN:       # %bb.0:
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
1947 ; ZVFHMIN-NEXT:    ret
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:
1956 ; ZVFH:       # %bb.0:
1957 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1958 ; ZVFH-NEXT:    vmfge.vf v0, v8, fa0, v0.t
1959 ; ZVFH-NEXT:    ret
1961 ; ZVFHMIN-LABEL: fcmp_ole_vf_swap_nxv1f16:
1962 ; ZVFHMIN:       # %bb.0:
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
1970 ; ZVFHMIN-NEXT:    ret
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:
1979 ; ZVFH:       # %bb.0:
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
1984 ; ZVFH-NEXT:    ret
1986 ; ZVFHMIN-LABEL: fcmp_one_vv_nxv1f16:
1987 ; ZVFHMIN:       # %bb.0:
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
1995 ; ZVFHMIN-NEXT:    ret
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:
2002 ; ZVFH:       # %bb.0:
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
2007 ; ZVFH-NEXT:    ret
2009 ; ZVFHMIN-LABEL: fcmp_one_vf_nxv1f16:
2010 ; ZVFHMIN:       # %bb.0:
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
2020 ; ZVFHMIN-NEXT:    ret
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:
2029 ; ZVFH:       # %bb.0:
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
2034 ; ZVFH-NEXT:    ret
2036 ; ZVFHMIN-LABEL: fcmp_one_vf_swap_nxv1f16:
2037 ; ZVFHMIN:       # %bb.0:
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
2047 ; ZVFHMIN-NEXT:    ret
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:
2056 ; ZVFH:       # %bb.0:
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
2061 ; ZVFH-NEXT:    ret
2063 ; ZVFHMIN-LABEL: fcmp_ord_vv_nxv1f16:
2064 ; ZVFHMIN:       # %bb.0:
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
2072 ; ZVFHMIN-NEXT:    ret
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:
2079 ; ZVFH:       # %bb.0:
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
2086 ; ZVFH-NEXT:    ret
2088 ; ZVFHMIN-LABEL: fcmp_ord_vf_nxv1f16:
2089 ; ZVFHMIN:       # %bb.0:
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
2101 ; ZVFHMIN-NEXT:    ret
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:
2110 ; ZVFH:       # %bb.0:
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
2117 ; ZVFH-NEXT:    ret
2119 ; ZVFHMIN-LABEL: fcmp_ord_vf_swap_nxv1f16:
2120 ; ZVFHMIN:       # %bb.0:
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
2132 ; ZVFHMIN-NEXT:    ret
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:
2141 ; ZVFH:       # %bb.0:
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
2146 ; ZVFH-NEXT:    ret
2148 ; ZVFHMIN-LABEL: fcmp_ueq_vv_nxv1f16:
2149 ; ZVFHMIN:       # %bb.0:
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
2157 ; ZVFHMIN-NEXT:    ret
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:
2164 ; ZVFH:       # %bb.0:
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
2169 ; ZVFH-NEXT:    ret
2171 ; ZVFHMIN-LABEL: fcmp_ueq_vf_nxv1f16:
2172 ; ZVFHMIN:       # %bb.0:
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
2182 ; ZVFHMIN-NEXT:    ret
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:
2191 ; ZVFH:       # %bb.0:
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
2196 ; ZVFH-NEXT:    ret
2198 ; ZVFHMIN-LABEL: fcmp_ueq_vf_swap_nxv1f16:
2199 ; ZVFHMIN:       # %bb.0:
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
2209 ; ZVFHMIN-NEXT:    ret
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:
2218 ; ZVFH:       # %bb.0:
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
2222 ; ZVFH-NEXT:    ret
2224 ; ZVFHMIN-LABEL: fcmp_ugt_vv_nxv1f16:
2225 ; ZVFHMIN:       # %bb.0:
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
2232 ; ZVFHMIN-NEXT:    ret
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:
2239 ; ZVFH:       # %bb.0:
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
2243 ; ZVFH-NEXT:    ret
2245 ; ZVFHMIN-LABEL: fcmp_ugt_vf_nxv1f16:
2246 ; ZVFHMIN:       # %bb.0:
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
2255 ; ZVFHMIN-NEXT:    ret
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:
2264 ; ZVFH:       # %bb.0:
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
2268 ; ZVFH-NEXT:    ret
2270 ; ZVFHMIN-LABEL: fcmp_ugt_vf_swap_nxv1f16:
2271 ; ZVFHMIN:       # %bb.0:
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
2280 ; ZVFHMIN-NEXT:    ret
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:
2289 ; ZVFH:       # %bb.0:
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
2293 ; ZVFH-NEXT:    ret
2295 ; ZVFHMIN-LABEL: fcmp_uge_vv_nxv1f16:
2296 ; ZVFHMIN:       # %bb.0:
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
2303 ; ZVFHMIN-NEXT:    ret
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:
2310 ; ZVFH:       # %bb.0:
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
2314 ; ZVFH-NEXT:    ret
2316 ; ZVFHMIN-LABEL: fcmp_uge_vf_nxv1f16:
2317 ; ZVFHMIN:       # %bb.0:
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
2326 ; ZVFHMIN-NEXT:    ret
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:
2335 ; ZVFH:       # %bb.0:
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
2339 ; ZVFH-NEXT:    ret
2341 ; ZVFHMIN-LABEL: fcmp_uge_vf_swap_nxv1f16:
2342 ; ZVFHMIN:       # %bb.0:
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
2351 ; ZVFHMIN-NEXT:    ret
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:
2360 ; ZVFH:       # %bb.0:
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
2364 ; ZVFH-NEXT:    ret
2366 ; ZVFHMIN-LABEL: fcmp_ult_vv_nxv1f16:
2367 ; ZVFHMIN:       # %bb.0:
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
2374 ; ZVFHMIN-NEXT:    ret
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:
2381 ; ZVFH:       # %bb.0:
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
2385 ; ZVFH-NEXT:    ret
2387 ; ZVFHMIN-LABEL: fcmp_ult_vf_nxv1f16:
2388 ; ZVFHMIN:       # %bb.0:
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
2397 ; ZVFHMIN-NEXT:    ret
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:
2406 ; ZVFH:       # %bb.0:
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
2410 ; ZVFH-NEXT:    ret
2412 ; ZVFHMIN-LABEL: fcmp_ult_vf_swap_nxv1f16:
2413 ; ZVFHMIN:       # %bb.0:
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
2422 ; ZVFHMIN-NEXT:    ret
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:
2431 ; ZVFH:       # %bb.0:
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
2435 ; ZVFH-NEXT:    ret
2437 ; ZVFHMIN-LABEL: fcmp_ule_vv_nxv1f16:
2438 ; ZVFHMIN:       # %bb.0:
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
2445 ; ZVFHMIN-NEXT:    ret
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:
2452 ; ZVFH:       # %bb.0:
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
2456 ; ZVFH-NEXT:    ret
2458 ; ZVFHMIN-LABEL: fcmp_ule_vf_nxv1f16:
2459 ; ZVFHMIN:       # %bb.0:
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
2468 ; ZVFHMIN-NEXT:    ret
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:
2477 ; ZVFH:       # %bb.0:
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
2481 ; ZVFH-NEXT:    ret
2483 ; ZVFHMIN-LABEL: fcmp_ule_vf_swap_nxv1f16:
2484 ; ZVFHMIN:       # %bb.0:
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
2493 ; ZVFHMIN-NEXT:    ret
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:
2502 ; ZVFH:       # %bb.0:
2503 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2504 ; ZVFH-NEXT:    vmfne.vv v0, v8, v9, v0.t
2505 ; ZVFH-NEXT:    ret
2507 ; ZVFHMIN-LABEL: fcmp_une_vv_nxv1f16:
2508 ; ZVFHMIN:       # %bb.0:
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
2514 ; ZVFHMIN-NEXT:    ret
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:
2521 ; ZVFH:       # %bb.0:
2522 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2523 ; ZVFH-NEXT:    vmfne.vf v0, v8, fa0, v0.t
2524 ; ZVFH-NEXT:    ret
2526 ; ZVFHMIN-LABEL: fcmp_une_vf_nxv1f16:
2527 ; ZVFHMIN:       # %bb.0:
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
2535 ; ZVFHMIN-NEXT:    ret
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:
2544 ; ZVFH:       # %bb.0:
2545 ; ZVFH-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
2546 ; ZVFH-NEXT:    vmfne.vf v0, v8, fa0, v0.t
2547 ; ZVFH-NEXT:    ret
2549 ; ZVFHMIN-LABEL: fcmp_une_vf_swap_nxv1f16:
2550 ; ZVFHMIN:       # %bb.0:
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
2558 ; ZVFHMIN-NEXT:    ret
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:
2567 ; ZVFH:       # %bb.0:
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
2572 ; ZVFH-NEXT:    ret
2574 ; ZVFHMIN-LABEL: fcmp_uno_vv_nxv1f16:
2575 ; ZVFHMIN:       # %bb.0:
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
2583 ; ZVFHMIN-NEXT:    ret
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:
2590 ; ZVFH:       # %bb.0:
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
2597 ; ZVFH-NEXT:    ret
2599 ; ZVFHMIN-LABEL: fcmp_uno_vf_nxv1f16:
2600 ; ZVFHMIN:       # %bb.0:
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
2612 ; ZVFHMIN-NEXT:    ret
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:
2621 ; ZVFH:       # %bb.0:
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
2628 ; ZVFH-NEXT:    ret
2630 ; ZVFHMIN-LABEL: fcmp_uno_vf_swap_nxv1f16:
2631 ; ZVFHMIN:       # %bb.0:
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
2643 ; ZVFHMIN-NEXT:    ret
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:
2654 ; ZVFH:       # %bb.0:
2655 ; ZVFH-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
2656 ; ZVFH-NEXT:    vmfeq.vv v0, v8, v9, v0.t
2657 ; ZVFH-NEXT:    ret
2659 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv3f16:
2660 ; ZVFHMIN:       # %bb.0:
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
2667 ; ZVFHMIN-NEXT:    ret
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:
2676 ; ZVFH:       # %bb.0:
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
2680 ; ZVFH-NEXT:    ret
2682 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv8f16:
2683 ; ZVFHMIN:       # %bb.0:
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
2690 ; ZVFHMIN-NEXT:    ret
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:
2697 ; ZVFH:       # %bb.0:
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
2701 ; ZVFH-NEXT:    ret
2703 ; ZVFHMIN-LABEL: fcmp_oeq_vf_nxv8f16:
2704 ; ZVFHMIN:       # %bb.0:
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
2713 ; ZVFHMIN-NEXT:    ret
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:
2722 ; ZVFH:       # %bb.0:
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
2726 ; ZVFH-NEXT:    ret
2728 ; ZVFHMIN-LABEL: fcmp_oeq_vf_swap_nxv8f16:
2729 ; ZVFHMIN:       # %bb.0:
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
2738 ; ZVFHMIN-NEXT:    ret
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:
2747 ; ZVFH:       # %bb.0:
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
2751 ; ZVFH-NEXT:    ret
2753 ; ZVFHMIN-LABEL: fcmp_ogt_vv_nxv8f16:
2754 ; ZVFHMIN:       # %bb.0:
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
2761 ; ZVFHMIN-NEXT:    ret
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:
2768 ; ZVFH:       # %bb.0:
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
2772 ; ZVFH-NEXT:    ret
2774 ; ZVFHMIN-LABEL: fcmp_ogt_vf_nxv8f16:
2775 ; ZVFHMIN:       # %bb.0:
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
2784 ; ZVFHMIN-NEXT:    ret
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:
2793 ; ZVFH:       # %bb.0:
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
2797 ; ZVFH-NEXT:    ret
2799 ; ZVFHMIN-LABEL: fcmp_ogt_vf_swap_nxv8f16:
2800 ; ZVFHMIN:       # %bb.0:
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
2809 ; ZVFHMIN-NEXT:    ret
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:
2818 ; ZVFH:       # %bb.0:
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
2822 ; ZVFH-NEXT:    ret
2824 ; ZVFHMIN-LABEL: fcmp_oge_vv_nxv8f16:
2825 ; ZVFHMIN:       # %bb.0:
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
2832 ; ZVFHMIN-NEXT:    ret
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:
2839 ; ZVFH:       # %bb.0:
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
2843 ; ZVFH-NEXT:    ret
2845 ; ZVFHMIN-LABEL: fcmp_oge_vf_nxv8f16:
2846 ; ZVFHMIN:       # %bb.0:
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
2855 ; ZVFHMIN-NEXT:    ret
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:
2864 ; ZVFH:       # %bb.0:
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
2868 ; ZVFH-NEXT:    ret
2870 ; ZVFHMIN-LABEL: fcmp_oge_vf_swap_nxv8f16:
2871 ; ZVFHMIN:       # %bb.0:
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
2880 ; ZVFHMIN-NEXT:    ret
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:
2889 ; ZVFH:       # %bb.0:
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
2893 ; ZVFH-NEXT:    ret
2895 ; ZVFHMIN-LABEL: fcmp_olt_vv_nxv8f16:
2896 ; ZVFHMIN:       # %bb.0:
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
2903 ; ZVFHMIN-NEXT:    ret
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:
2910 ; ZVFH:       # %bb.0:
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
2914 ; ZVFH-NEXT:    ret
2916 ; ZVFHMIN-LABEL: fcmp_olt_vf_nxv8f16:
2917 ; ZVFHMIN:       # %bb.0:
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
2926 ; ZVFHMIN-NEXT:    ret
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:
2935 ; ZVFH:       # %bb.0:
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
2939 ; ZVFH-NEXT:    ret
2941 ; ZVFHMIN-LABEL: fcmp_olt_vf_swap_nxv8f16:
2942 ; ZVFHMIN:       # %bb.0:
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
2951 ; ZVFHMIN-NEXT:    ret
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:
2960 ; ZVFH:       # %bb.0:
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
2964 ; ZVFH-NEXT:    ret
2966 ; ZVFHMIN-LABEL: fcmp_ole_vv_nxv8f16:
2967 ; ZVFHMIN:       # %bb.0:
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
2974 ; ZVFHMIN-NEXT:    ret
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:
2981 ; ZVFH:       # %bb.0:
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
2985 ; ZVFH-NEXT:    ret
2987 ; ZVFHMIN-LABEL: fcmp_ole_vf_nxv8f16:
2988 ; ZVFHMIN:       # %bb.0:
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
2997 ; ZVFHMIN-NEXT:    ret
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:
3006 ; ZVFH:       # %bb.0:
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
3010 ; ZVFH-NEXT:    ret
3012 ; ZVFHMIN-LABEL: fcmp_ole_vf_swap_nxv8f16:
3013 ; ZVFHMIN:       # %bb.0:
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
3022 ; ZVFHMIN-NEXT:    ret
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:
3031 ; ZVFH:       # %bb.0:
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
3036 ; ZVFH-NEXT:    ret
3038 ; ZVFHMIN-LABEL: fcmp_one_vv_nxv8f16:
3039 ; ZVFHMIN:       # %bb.0:
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
3047 ; ZVFHMIN-NEXT:    ret
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:
3054 ; ZVFH:       # %bb.0:
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
3059 ; ZVFH-NEXT:    ret
3061 ; ZVFHMIN-LABEL: fcmp_one_vf_nxv8f16:
3062 ; ZVFHMIN:       # %bb.0:
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
3072 ; ZVFHMIN-NEXT:    ret
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:
3081 ; ZVFH:       # %bb.0:
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
3086 ; ZVFH-NEXT:    ret
3088 ; ZVFHMIN-LABEL: fcmp_one_vf_swap_nxv8f16:
3089 ; ZVFHMIN:       # %bb.0:
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
3099 ; ZVFHMIN-NEXT:    ret
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:
3108 ; ZVFH:       # %bb.0:
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
3113 ; ZVFH-NEXT:    ret
3115 ; ZVFHMIN-LABEL: fcmp_ord_vv_nxv8f16:
3116 ; ZVFHMIN:       # %bb.0:
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
3126 ; ZVFHMIN-NEXT:    ret
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:
3133 ; ZVFH:       # %bb.0:
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
3140 ; ZVFH-NEXT:    ret
3142 ; ZVFHMIN-LABEL: fcmp_ord_vf_nxv8f16:
3143 ; ZVFHMIN:       # %bb.0:
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
3155 ; ZVFHMIN-NEXT:    ret
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:
3164 ; ZVFH:       # %bb.0:
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
3171 ; ZVFH-NEXT:    ret
3173 ; ZVFHMIN-LABEL: fcmp_ord_vf_swap_nxv8f16:
3174 ; ZVFHMIN:       # %bb.0:
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
3186 ; ZVFHMIN-NEXT:    ret
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:
3195 ; ZVFH:       # %bb.0:
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
3200 ; ZVFH-NEXT:    ret
3202 ; ZVFHMIN-LABEL: fcmp_ueq_vv_nxv8f16:
3203 ; ZVFHMIN:       # %bb.0:
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
3211 ; ZVFHMIN-NEXT:    ret
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:
3218 ; ZVFH:       # %bb.0:
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
3223 ; ZVFH-NEXT:    ret
3225 ; ZVFHMIN-LABEL: fcmp_ueq_vf_nxv8f16:
3226 ; ZVFHMIN:       # %bb.0:
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
3236 ; ZVFHMIN-NEXT:    ret
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:
3245 ; ZVFH:       # %bb.0:
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
3250 ; ZVFH-NEXT:    ret
3252 ; ZVFHMIN-LABEL: fcmp_ueq_vf_swap_nxv8f16:
3253 ; ZVFHMIN:       # %bb.0:
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
3263 ; ZVFHMIN-NEXT:    ret
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:
3272 ; ZVFH:       # %bb.0:
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
3276 ; ZVFH-NEXT:    ret
3278 ; ZVFHMIN-LABEL: fcmp_ugt_vv_nxv8f16:
3279 ; ZVFHMIN:       # %bb.0:
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
3286 ; ZVFHMIN-NEXT:    ret
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:
3293 ; ZVFH:       # %bb.0:
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
3297 ; ZVFH-NEXT:    ret
3299 ; ZVFHMIN-LABEL: fcmp_ugt_vf_nxv8f16:
3300 ; ZVFHMIN:       # %bb.0:
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
3309 ; ZVFHMIN-NEXT:    ret
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:
3318 ; ZVFH:       # %bb.0:
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
3322 ; ZVFH-NEXT:    ret
3324 ; ZVFHMIN-LABEL: fcmp_ugt_vf_swap_nxv8f16:
3325 ; ZVFHMIN:       # %bb.0:
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
3334 ; ZVFHMIN-NEXT:    ret
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:
3343 ; ZVFH:       # %bb.0:
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
3347 ; ZVFH-NEXT:    ret
3349 ; ZVFHMIN-LABEL: fcmp_uge_vv_nxv8f16:
3350 ; ZVFHMIN:       # %bb.0:
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
3357 ; ZVFHMIN-NEXT:    ret
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:
3364 ; ZVFH:       # %bb.0:
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
3368 ; ZVFH-NEXT:    ret
3370 ; ZVFHMIN-LABEL: fcmp_uge_vf_nxv8f16:
3371 ; ZVFHMIN:       # %bb.0:
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
3380 ; ZVFHMIN-NEXT:    ret
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:
3389 ; ZVFH:       # %bb.0:
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
3393 ; ZVFH-NEXT:    ret
3395 ; ZVFHMIN-LABEL: fcmp_uge_vf_swap_nxv8f16:
3396 ; ZVFHMIN:       # %bb.0:
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
3405 ; ZVFHMIN-NEXT:    ret
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:
3414 ; ZVFH:       # %bb.0:
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
3418 ; ZVFH-NEXT:    ret
3420 ; ZVFHMIN-LABEL: fcmp_ult_vv_nxv8f16:
3421 ; ZVFHMIN:       # %bb.0:
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
3428 ; ZVFHMIN-NEXT:    ret
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:
3435 ; ZVFH:       # %bb.0:
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
3439 ; ZVFH-NEXT:    ret
3441 ; ZVFHMIN-LABEL: fcmp_ult_vf_nxv8f16:
3442 ; ZVFHMIN:       # %bb.0:
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
3451 ; ZVFHMIN-NEXT:    ret
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:
3460 ; ZVFH:       # %bb.0:
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
3464 ; ZVFH-NEXT:    ret
3466 ; ZVFHMIN-LABEL: fcmp_ult_vf_swap_nxv8f16:
3467 ; ZVFHMIN:       # %bb.0:
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
3476 ; ZVFHMIN-NEXT:    ret
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:
3485 ; ZVFH:       # %bb.0:
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
3489 ; ZVFH-NEXT:    ret
3491 ; ZVFHMIN-LABEL: fcmp_ule_vv_nxv8f16:
3492 ; ZVFHMIN:       # %bb.0:
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
3499 ; ZVFHMIN-NEXT:    ret
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:
3506 ; ZVFH:       # %bb.0:
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
3510 ; ZVFH-NEXT:    ret
3512 ; ZVFHMIN-LABEL: fcmp_ule_vf_nxv8f16:
3513 ; ZVFHMIN:       # %bb.0:
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
3522 ; ZVFHMIN-NEXT:    ret
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:
3531 ; ZVFH:       # %bb.0:
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
3535 ; ZVFH-NEXT:    ret
3537 ; ZVFHMIN-LABEL: fcmp_ule_vf_swap_nxv8f16:
3538 ; ZVFHMIN:       # %bb.0:
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
3547 ; ZVFHMIN-NEXT:    ret
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:
3556 ; ZVFH:       # %bb.0:
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
3560 ; ZVFH-NEXT:    ret
3562 ; ZVFHMIN-LABEL: fcmp_une_vv_nxv8f16:
3563 ; ZVFHMIN:       # %bb.0:
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
3570 ; ZVFHMIN-NEXT:    ret
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:
3577 ; ZVFH:       # %bb.0:
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
3581 ; ZVFH-NEXT:    ret
3583 ; ZVFHMIN-LABEL: fcmp_une_vf_nxv8f16:
3584 ; ZVFHMIN:       # %bb.0:
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
3593 ; ZVFHMIN-NEXT:    ret
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:
3602 ; ZVFH:       # %bb.0:
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
3606 ; ZVFH-NEXT:    ret
3608 ; ZVFHMIN-LABEL: fcmp_une_vf_swap_nxv8f16:
3609 ; ZVFHMIN:       # %bb.0:
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
3618 ; ZVFHMIN-NEXT:    ret
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:
3627 ; ZVFH:       # %bb.0:
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
3632 ; ZVFH-NEXT:    ret
3634 ; ZVFHMIN-LABEL: fcmp_uno_vv_nxv8f16:
3635 ; ZVFHMIN:       # %bb.0:
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
3645 ; ZVFHMIN-NEXT:    ret
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:
3652 ; ZVFH:       # %bb.0:
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
3659 ; ZVFH-NEXT:    ret
3661 ; ZVFHMIN-LABEL: fcmp_uno_vf_nxv8f16:
3662 ; ZVFHMIN:       # %bb.0:
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
3674 ; ZVFHMIN-NEXT:    ret
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:
3683 ; ZVFH:       # %bb.0:
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
3690 ; ZVFH-NEXT:    ret
3692 ; ZVFHMIN-LABEL: fcmp_uno_vf_swap_nxv8f16:
3693 ; ZVFHMIN:       # %bb.0:
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
3705 ; ZVFHMIN-NEXT:    ret
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:
3716 ; ZVFH:       # %bb.0:
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
3770 ; ZVFH-NEXT:    ret
3772 ; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv64f16:
3773 ; ZVFHMIN:       # %bb.0:
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
3953 ; ZVFHMIN-NEXT:    ret
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:
3962 ; CHECK:       # %bb.0:
3963 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
3964 ; CHECK-NEXT:    vmfeq.vv v0, v8, v9, v0.t
3965 ; CHECK-NEXT:    ret
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:
3972 ; CHECK:       # %bb.0:
3973 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
3974 ; CHECK-NEXT:    vmfeq.vf v0, v8, fa0, v0.t
3975 ; CHECK-NEXT:    ret
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:
3984 ; CHECK:       # %bb.0:
3985 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
3986 ; CHECK-NEXT:    vmfeq.vf v0, v8, fa0, v0.t
3987 ; CHECK-NEXT:    ret
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:
3996 ; CHECK:       # %bb.0:
3997 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
3998 ; CHECK-NEXT:    vmflt.vv v0, v9, v8, v0.t
3999 ; CHECK-NEXT:    ret
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:
4006 ; CHECK:       # %bb.0:
4007 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4008 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0, v0.t
4009 ; CHECK-NEXT:    ret
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:
4018 ; CHECK:       # %bb.0:
4019 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4020 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0, v0.t
4021 ; CHECK-NEXT:    ret
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:
4030 ; CHECK:       # %bb.0:
4031 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4032 ; CHECK-NEXT:    vmfle.vv v0, v9, v8, v0.t
4033 ; CHECK-NEXT:    ret
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:
4040 ; CHECK:       # %bb.0:
4041 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4042 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0, v0.t
4043 ; CHECK-NEXT:    ret
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:
4052 ; CHECK:       # %bb.0:
4053 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4054 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0, v0.t
4055 ; CHECK-NEXT:    ret
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:
4064 ; CHECK:       # %bb.0:
4065 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4066 ; CHECK-NEXT:    vmflt.vv v0, v8, v9, v0.t
4067 ; CHECK-NEXT:    ret
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:
4074 ; CHECK:       # %bb.0:
4075 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4076 ; CHECK-NEXT:    vmflt.vf v0, v8, fa0, v0.t
4077 ; CHECK-NEXT:    ret
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:
4086 ; CHECK:       # %bb.0:
4087 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4088 ; CHECK-NEXT:    vmfgt.vf v0, v8, fa0, v0.t
4089 ; CHECK-NEXT:    ret
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:
4098 ; CHECK:       # %bb.0:
4099 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4100 ; CHECK-NEXT:    vmfle.vv v0, v8, v9, v0.t
4101 ; CHECK-NEXT:    ret
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:
4108 ; CHECK:       # %bb.0:
4109 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4110 ; CHECK-NEXT:    vmfle.vf v0, v8, fa0, v0.t
4111 ; CHECK-NEXT:    ret
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:
4120 ; CHECK:       # %bb.0:
4121 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4122 ; CHECK-NEXT:    vmfge.vf v0, v8, fa0, v0.t
4123 ; CHECK-NEXT:    ret
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:
4132 ; CHECK:       # %bb.0:
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
4137 ; CHECK-NEXT:    ret
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:
4144 ; CHECK:       # %bb.0:
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
4149 ; CHECK-NEXT:    ret
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:
4158 ; CHECK:       # %bb.0:
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
4163 ; CHECK-NEXT:    ret
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:
4172 ; CHECK:       # %bb.0:
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
4177 ; CHECK-NEXT:    ret
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:
4184 ; CHECK:       # %bb.0:
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
4191 ; CHECK-NEXT:    ret
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:
4200 ; CHECK:       # %bb.0:
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
4207 ; CHECK-NEXT:    ret
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:
4216 ; CHECK:       # %bb.0:
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
4221 ; CHECK-NEXT:    ret
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:
4228 ; CHECK:       # %bb.0:
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
4233 ; CHECK-NEXT:    ret
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:
4242 ; CHECK:       # %bb.0:
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
4247 ; CHECK-NEXT:    ret
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:
4256 ; CHECK:       # %bb.0:
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
4260 ; CHECK-NEXT:    ret
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:
4267 ; CHECK:       # %bb.0:
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
4271 ; CHECK-NEXT:    ret
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:
4280 ; CHECK:       # %bb.0:
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
4284 ; CHECK-NEXT:    ret
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:
4293 ; CHECK:       # %bb.0:
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
4297 ; CHECK-NEXT:    ret
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:
4304 ; CHECK:       # %bb.0:
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
4308 ; CHECK-NEXT:    ret
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:
4317 ; CHECK:       # %bb.0:
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
4321 ; CHECK-NEXT:    ret
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:
4330 ; CHECK:       # %bb.0:
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
4334 ; CHECK-NEXT:    ret
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:
4341 ; CHECK:       # %bb.0:
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
4345 ; CHECK-NEXT:    ret
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:
4354 ; CHECK:       # %bb.0:
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
4358 ; CHECK-NEXT:    ret
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:
4367 ; CHECK:       # %bb.0:
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
4371 ; CHECK-NEXT:    ret
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:
4378 ; CHECK:       # %bb.0:
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
4382 ; CHECK-NEXT:    ret
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:
4391 ; CHECK:       # %bb.0:
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
4395 ; CHECK-NEXT:    ret
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:
4404 ; CHECK:       # %bb.0:
4405 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4406 ; CHECK-NEXT:    vmfne.vv v0, v8, v9, v0.t
4407 ; CHECK-NEXT:    ret
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:
4414 ; CHECK:       # %bb.0:
4415 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4416 ; CHECK-NEXT:    vmfne.vf v0, v8, fa0, v0.t
4417 ; CHECK-NEXT:    ret
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:
4426 ; CHECK:       # %bb.0:
4427 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
4428 ; CHECK-NEXT:    vmfne.vf v0, v8, fa0, v0.t
4429 ; CHECK-NEXT:    ret
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:
4438 ; CHECK:       # %bb.0:
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
4443 ; CHECK-NEXT:    ret
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:
4450 ; CHECK:       # %bb.0:
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
4457 ; CHECK-NEXT:    ret
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:
4466 ; CHECK:       # %bb.0:
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
4473 ; CHECK-NEXT:    ret
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:
4484 ; CHECK:       # %bb.0:
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
4488 ; CHECK-NEXT:    ret
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:
4497 ; CHECK:       # %bb.0:
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
4501 ; CHECK-NEXT:    ret
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:
4508 ; CHECK:       # %bb.0:
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
4512 ; CHECK-NEXT:    ret
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:
4521 ; CHECK:       # %bb.0:
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
4525 ; CHECK-NEXT:    ret
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:
4534 ; CHECK:       # %bb.0:
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
4538 ; CHECK-NEXT:    ret
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:
4545 ; CHECK:       # %bb.0:
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
4549 ; CHECK-NEXT:    ret
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:
4558 ; CHECK:       # %bb.0:
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
4562 ; CHECK-NEXT:    ret
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:
4571 ; CHECK:       # %bb.0:
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
4575 ; CHECK-NEXT:    ret
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:
4582 ; CHECK:       # %bb.0:
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
4586 ; CHECK-NEXT:    ret
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:
4595 ; CHECK:       # %bb.0:
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
4599 ; CHECK-NEXT:    ret
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:
4608 ; CHECK:       # %bb.0:
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
4612 ; CHECK-NEXT:    ret
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:
4619 ; CHECK:       # %bb.0:
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
4623 ; CHECK-NEXT:    ret
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:
4632 ; CHECK:       # %bb.0:
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
4636 ; CHECK-NEXT:    ret
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:
4645 ; CHECK:       # %bb.0:
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
4649 ; CHECK-NEXT:    ret
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:
4656 ; CHECK:       # %bb.0:
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
4660 ; CHECK-NEXT:    ret
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:
4669 ; CHECK:       # %bb.0:
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
4673 ; CHECK-NEXT:    ret
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:
4682 ; CHECK:       # %bb.0:
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
4687 ; CHECK-NEXT:    ret
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:
4694 ; CHECK:       # %bb.0:
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
4699 ; CHECK-NEXT:    ret
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:
4708 ; CHECK:       # %bb.0:
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
4713 ; CHECK-NEXT:    ret
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:
4722 ; CHECK:       # %bb.0:
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
4727 ; CHECK-NEXT:    ret
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:
4734 ; CHECK:       # %bb.0:
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
4741 ; CHECK-NEXT:    ret
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:
4750 ; CHECK:       # %bb.0:
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
4757 ; CHECK-NEXT:    ret
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:
4766 ; CHECK:       # %bb.0:
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
4771 ; CHECK-NEXT:    ret
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:
4778 ; CHECK:       # %bb.0:
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
4783 ; CHECK-NEXT:    ret
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:
4792 ; CHECK:       # %bb.0:
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
4797 ; CHECK-NEXT:    ret
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:
4806 ; CHECK:       # %bb.0:
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
4810 ; CHECK-NEXT:    ret
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:
4817 ; CHECK:       # %bb.0:
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
4821 ; CHECK-NEXT:    ret
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:
4830 ; CHECK:       # %bb.0:
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
4834 ; CHECK-NEXT:    ret
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:
4843 ; CHECK:       # %bb.0:
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
4847 ; CHECK-NEXT:    ret
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:
4854 ; CHECK:       # %bb.0:
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
4858 ; CHECK-NEXT:    ret
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:
4867 ; CHECK:       # %bb.0:
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
4871 ; CHECK-NEXT:    ret
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:
4880 ; CHECK:       # %bb.0:
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
4884 ; CHECK-NEXT:    ret
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:
4891 ; CHECK:       # %bb.0:
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
4895 ; CHECK-NEXT:    ret
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:
4904 ; CHECK:       # %bb.0:
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
4908 ; CHECK-NEXT:    ret
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:
4917 ; CHECK:       # %bb.0:
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
4921 ; CHECK-NEXT:    ret
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:
4928 ; CHECK:       # %bb.0:
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
4932 ; CHECK-NEXT:    ret
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:
4941 ; CHECK:       # %bb.0:
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
4945 ; CHECK-NEXT:    ret
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:
4954 ; CHECK:       # %bb.0:
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
4958 ; CHECK-NEXT:    ret
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:
4965 ; CHECK:       # %bb.0:
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
4969 ; CHECK-NEXT:    ret
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:
4978 ; CHECK:       # %bb.0:
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
4982 ; CHECK-NEXT:    ret
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:
4991 ; CHECK:       # %bb.0:
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
4996 ; CHECK-NEXT:    ret
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:
5003 ; CHECK:       # %bb.0:
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
5010 ; CHECK-NEXT:    ret
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:
5019 ; CHECK:       # %bb.0:
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
5026 ; CHECK-NEXT:    ret
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