xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/setcc-fp-vp.ll (revision e44f03dd4ea84d3c12c916fdf02d63503c2872e2)
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
14
15declare <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)
16
17define <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 zero, a0, 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, zero, 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
28}
29
30define <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 zero, a0, 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, zero, 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
45}
46
47define <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 zero, a0, 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, zero, 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
62}
63
64define <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 zero, a0, 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, zero, 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
75}
76
77define <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 zero, a0, 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, zero, 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
92}
93
94define <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 zero, a0, 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, zero, 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
109}
110
111define <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 zero, a0, 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, zero, 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
122}
123
124define <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 zero, a0, 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, zero, 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
139}
140
141define <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 zero, a0, 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, zero, 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
156}
157
158define <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 zero, a0, 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, zero, 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
169}
170
171define <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 zero, a0, 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, zero, 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
186}
187
188define <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 zero, a0, 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, zero, 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
203}
204
205define <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 zero, a0, 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, zero, 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
216}
217
218define <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 zero, a0, 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, zero, 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
233}
234
235define <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 zero, a0, 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, zero, 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
250}
251
252define <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 zero, a0, 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, zero, 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
265}
266
267define <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 zero, a0, 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, zero, 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
284}
285
286define <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 zero, a0, 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, zero, 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
303}
304
305define <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 zero, a0, 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, zero, 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
318}
319
320define <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 zero, a0, 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, zero, e32, mf2, ta, ma
328; CHECK-NEXT:    vmfeq.vv v9, v9, v9, v0.t
329; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
330; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8
331; CHECK-NEXT:    vsetvli zero, zero, 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
339}
340
341define <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 zero, a0, 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, zero, e32, mf2, ta, ma
349; CHECK-NEXT:    vmfeq.vv v9, v9, v9, v0.t
350; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
351; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8
352; CHECK-NEXT:    vsetvli zero, zero, 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
360}
361
362define <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 zero, a0, 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, zero, 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
375}
376
377define <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 zero, a0, 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, zero, 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
394}
395
396define <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 zero, a0, 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, zero, 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
413}
414
415define <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 zero, a0, 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, zero, 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
427}
428
429define <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 zero, a0, 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, zero, 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
445}
446
447define <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 zero, a0, 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, zero, 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
463}
464
465define <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 zero, a0, 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, zero, 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
477}
478
479define <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 zero, a0, 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, zero, 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
495}
496
497define <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 zero, a0, 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, zero, 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
513}
514
515define <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 zero, a0, 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, zero, 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
527}
528
529define <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 zero, a0, 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, zero, 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
545}
546
547define <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 zero, a0, 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, zero, 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
563}
564
565define <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 zero, a0, 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, zero, 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
577}
578
579define <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 zero, a0, 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, zero, 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
595}
596
597define <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 zero, a0, 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, zero, 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
613}
614
615define <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 zero, a0, 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, zero, 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
626}
627
628define <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 zero, a0, 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, zero, 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
643}
644
645define <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 zero, a0, 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, zero, 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
660}
661
662define <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 zero, a0, 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, zero, 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
675}
676
677define <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 zero, a0, 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, zero, e32, mf2, ta, ma
685; CHECK-NEXT:    vmfne.vv v9, v9, v9, v0.t
686; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
687; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8
688; CHECK-NEXT:    vsetvli zero, zero, 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
696}
697
698define <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 zero, a0, 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, zero, e32, mf2, ta, ma
706; CHECK-NEXT:    vmfne.vv v9, v9, v9, v0.t
707; CHECK-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
708; CHECK-NEXT:    vfwcvtbf16.f.f.v v10, v8
709; CHECK-NEXT:    vsetvli zero, zero, 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
717}
718
719declare <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)
720
721define <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 zero, a0, 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, zero, 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
733}
734
735declare <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)
736
737define <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 zero, a0, 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, zero, 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
749}
750
751define <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 zero, a0, 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, zero, 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
767}
768
769define <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 zero, a0, 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, zero, 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
785}
786
787define <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 zero, a0, 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, zero, 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
799}
800
801define <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 zero, a0, 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, zero, 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
817}
818
819define <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 zero, a0, 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, zero, 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
835}
836
837define <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 zero, a0, 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, zero, 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
849}
850
851define <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 zero, a0, 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, zero, 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
867}
868
869define <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 zero, a0, 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, zero, 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
885}
886
887define <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 zero, a0, 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, zero, 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
899}
900
901define <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 zero, a0, 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, zero, 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
917}
918
919define <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 zero, a0, 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, zero, 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
935}
936
937define <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 zero, a0, 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, zero, 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
949}
950
951define <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 zero, a0, 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, zero, 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
967}
968
969define <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 zero, a0, 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, zero, 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
985}
986
987define <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 zero, a0, 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, zero, 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
1000}
1001
1002define <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 zero, a0, 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, zero, 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
1019}
1020
1021define <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 zero, a0, 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, zero, 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
1038}
1039
1040define <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 zero, a0, e16, m2, ta, ma
1044; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v10
1045; CHECK-NEXT:    vsetvli zero, zero, e32, m4, ta, ma
1046; CHECK-NEXT:    vmfeq.vv v10, v12, v12, v0.t
1047; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1048; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8
1049; CHECK-NEXT:    vsetvli zero, zero, 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
1055}
1056
1057define <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 zero, a0, 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, zero, e32, m4, ta, ma
1065; CHECK-NEXT:    vmfeq.vv v10, v12, v12, v0.t
1066; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1067; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8
1068; CHECK-NEXT:    vsetvli zero, zero, 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
1076}
1077
1078define <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 zero, a0, 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, zero, e32, m4, ta, ma
1086; CHECK-NEXT:    vmfeq.vv v10, v12, v12, v0.t
1087; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1088; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8
1089; CHECK-NEXT:    vsetvli zero, zero, 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
1097}
1098
1099define <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 zero, a0, 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, zero, 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
1112}
1113
1114define <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 zero, a0, 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, zero, 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
1131}
1132
1133define <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 zero, a0, 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, zero, 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
1150}
1151
1152define <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 zero, a0, 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, zero, 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
1164}
1165
1166define <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 zero, a0, 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, zero, 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
1182}
1183
1184define <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 zero, a0, 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, zero, 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
1200}
1201
1202define <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 zero, a0, 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, zero, 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
1214}
1215
1216define <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 zero, a0, 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, zero, 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
1232}
1233
1234define <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 zero, a0, 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, zero, 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
1250}
1251
1252define <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 zero, a0, 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, zero, 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
1264}
1265
1266define <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 zero, a0, 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, zero, 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
1282}
1283
1284define <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 zero, a0, 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, zero, 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
1300}
1301
1302define <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 zero, a0, 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, zero, 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
1314}
1315
1316define <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 zero, a0, 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, zero, 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
1332}
1333
1334define <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 zero, a0, 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, zero, 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
1350}
1351
1352define <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 zero, a0, 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, zero, 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
1364}
1365
1366define <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 zero, a0, 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, zero, 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
1382}
1383
1384define <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 zero, a0, 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, zero, 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
1400}
1401
1402define <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 zero, a0, e16, m2, ta, ma
1406; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v10
1407; CHECK-NEXT:    vsetvli zero, zero, e32, m4, ta, ma
1408; CHECK-NEXT:    vmfne.vv v10, v12, v12, v0.t
1409; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1410; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8
1411; CHECK-NEXT:    vsetvli zero, zero, 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
1417}
1418
1419define <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 zero, a0, 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, zero, e32, m4, ta, ma
1427; CHECK-NEXT:    vmfne.vv v10, v12, v12, v0.t
1428; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1429; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8
1430; CHECK-NEXT:    vsetvli zero, zero, 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
1438}
1439
1440define <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 zero, a0, 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, zero, e32, m4, ta, ma
1448; CHECK-NEXT:    vmfne.vv v10, v12, v12, v0.t
1449; CHECK-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
1450; CHECK-NEXT:    vfwcvtbf16.f.f.v v12, v8
1451; CHECK-NEXT:    vsetvli zero, zero, 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
1459}
1460
1461declare <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)
1462
1463define <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:    vsetvli a1, zero, e8, m1, ta, ma
1477; CHECK-NEXT:    vmv1r.v v24, v0
1478; CHECK-NEXT:    csrr a1, vlenb
1479; CHECK-NEXT:    mv a3, a1
1480; CHECK-NEXT:    slli a1, a1, 3
1481; CHECK-NEXT:    add a3, a3, a1
1482; CHECK-NEXT:    slli a1, a1, 1
1483; CHECK-NEXT:    add a1, a1, a3
1484; CHECK-NEXT:    add a1, sp, a1
1485; CHECK-NEXT:    addi a1, a1, 16
1486; CHECK-NEXT:    vs8r.v v8, (a1) # Unknown-size Folded Spill
1487; CHECK-NEXT:    csrr a3, vlenb
1488; CHECK-NEXT:    slli a1, a3, 3
1489; CHECK-NEXT:    slli a5, a3, 2
1490; CHECK-NEXT:    slli a4, a3, 1
1491; CHECK-NEXT:    add a1, a0, a1
1492; CHECK-NEXT:    sub a6, a2, a5
1493; CHECK-NEXT:    vl8re16.v v0, (a1)
1494; CHECK-NEXT:    sltu a1, a2, a6
1495; CHECK-NEXT:    addi a1, a1, -1
1496; CHECK-NEXT:    and a6, a1, a6
1497; CHECK-NEXT:    sub a1, a6, a4
1498; CHECK-NEXT:    sltu a7, a6, a1
1499; CHECK-NEXT:    addi a7, a7, -1
1500; CHECK-NEXT:    and a7, a7, a1
1501; CHECK-NEXT:    srli a1, a3, 1
1502; CHECK-NEXT:    srli a3, a3, 2
1503; CHECK-NEXT:    csrr t0, vlenb
1504; CHECK-NEXT:    slli t0, t0, 3
1505; CHECK-NEXT:    add t0, sp, t0
1506; CHECK-NEXT:    addi t0, t0, 16
1507; CHECK-NEXT:    vs1r.v v24, (t0) # Unknown-size Folded Spill
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 zero, a7, 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 a7, a0, 4
1531; CHECK-NEXT:    add a0, a7, 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, zero, 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 zero, a6, e16, m4, ta, ma
1553; CHECK-NEXT:    vfwcvtbf16.f.f.v v8, v16
1554; CHECK-NEXT:    csrr a0, vlenb
1555; CHECK-NEXT:    slli a6, a0, 4
1556; CHECK-NEXT:    add a0, a6, 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, zero, 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:    sltu a6, a2, a5
1577; CHECK-NEXT:    addi a6, a6, -1
1578; CHECK-NEXT:    and a5, a6, a5
1579; CHECK-NEXT:    csrr a6, vlenb
1580; CHECK-NEXT:    mv a7, a6
1581; CHECK-NEXT:    slli a6, a6, 3
1582; CHECK-NEXT:    add a7, a7, a6
1583; CHECK-NEXT:    slli a6, a6, 1
1584; CHECK-NEXT:    add a6, a6, a7
1585; CHECK-NEXT:    add a6, sp, a6
1586; CHECK-NEXT:    addi a6, a6, 16
1587; CHECK-NEXT:    vl8r.v v16, (a6) # Unknown-size Folded Reload
1588; CHECK-NEXT:    vsetvli zero, a5, e16, m4, ta, ma
1589; CHECK-NEXT:    vfwcvtbf16.f.f.v v8, v20
1590; CHECK-NEXT:    csrr a5, vlenb
1591; CHECK-NEXT:    slli a6, a5, 4
1592; CHECK-NEXT:    add a5, a6, a5
1593; CHECK-NEXT:    add a5, sp, a5
1594; CHECK-NEXT:    addi a5, a5, 16
1595; CHECK-NEXT:    vs8r.v v8, (a5) # Unknown-size Folded Spill
1596; CHECK-NEXT:    csrr a5, vlenb
1597; CHECK-NEXT:    slli a6, a5, 5
1598; CHECK-NEXT:    add a5, a6, a5
1599; CHECK-NEXT:    add a5, sp, a5
1600; CHECK-NEXT:    addi a5, a5, 16
1601; CHECK-NEXT:    vl8r.v v24, (a5) # Unknown-size Folded Reload
1602; CHECK-NEXT:    vfwcvtbf16.f.f.v v8, v28
1603; CHECK-NEXT:    csrr a5, vlenb
1604; CHECK-NEXT:    slli a6, a5, 4
1605; CHECK-NEXT:    add a5, a6, a5
1606; CHECK-NEXT:    add a5, sp, a5
1607; CHECK-NEXT:    addi a5, a5, 16
1608; CHECK-NEXT:    vl8r.v v24, (a5) # Unknown-size Folded Reload
1609; CHECK-NEXT:    vsetvli zero, zero, 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 zero, a2, e16, m4, ta, ma
1619; CHECK-NEXT:    vfwcvtbf16.f.f.v v24, v16
1620; CHECK-NEXT:    csrr a2, vlenb
1621; CHECK-NEXT:    slli a4, a2, 5
1622; CHECK-NEXT:    add a2, a4, a2
1623; CHECK-NEXT:    add a2, sp, a2
1624; CHECK-NEXT:    addi a2, a2, 16
1625; CHECK-NEXT:    vl8r.v v8, (a2) # Unknown-size Folded Reload
1626; CHECK-NEXT:    vfwcvtbf16.f.f.v v16, v8
1627; CHECK-NEXT:    vsetvli zero, zero, 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
1648}
1649
1650declare <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)
1651
1652define <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
1658;
1659; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv1f16:
1660; ZVFHMIN:       # %bb.0:
1661; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1669}
1670
1671define <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
1677;
1678; ZVFHMIN-LABEL: fcmp_oeq_vf_nxv1f16:
1679; ZVFHMIN:       # %bb.0:
1680; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
1681; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1692}
1693
1694define <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
1700;
1701; ZVFHMIN-LABEL: fcmp_oeq_vf_swap_nxv1f16:
1702; ZVFHMIN:       # %bb.0:
1703; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
1704; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1715}
1716
1717define <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
1723;
1724; ZVFHMIN-LABEL: fcmp_ogt_vv_nxv1f16:
1725; ZVFHMIN:       # %bb.0:
1726; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1734}
1735
1736define <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
1742;
1743; ZVFHMIN-LABEL: fcmp_ogt_vf_nxv1f16:
1744; ZVFHMIN:       # %bb.0:
1745; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
1746; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1757}
1758
1759define <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
1765;
1766; ZVFHMIN-LABEL: fcmp_ogt_vf_swap_nxv1f16:
1767; ZVFHMIN:       # %bb.0:
1768; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
1769; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1780}
1781
1782define <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
1788;
1789; ZVFHMIN-LABEL: fcmp_oge_vv_nxv1f16:
1790; ZVFHMIN:       # %bb.0:
1791; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1799}
1800
1801define <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
1807;
1808; ZVFHMIN-LABEL: fcmp_oge_vf_nxv1f16:
1809; ZVFHMIN:       # %bb.0:
1810; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
1811; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1822}
1823
1824define <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
1830;
1831; ZVFHMIN-LABEL: fcmp_oge_vf_swap_nxv1f16:
1832; ZVFHMIN:       # %bb.0:
1833; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
1834; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1845}
1846
1847define <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
1853;
1854; ZVFHMIN-LABEL: fcmp_olt_vv_nxv1f16:
1855; ZVFHMIN:       # %bb.0:
1856; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1864}
1865
1866define <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
1872;
1873; ZVFHMIN-LABEL: fcmp_olt_vf_nxv1f16:
1874; ZVFHMIN:       # %bb.0:
1875; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
1876; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1887}
1888
1889define <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
1895;
1896; ZVFHMIN-LABEL: fcmp_olt_vf_swap_nxv1f16:
1897; ZVFHMIN:       # %bb.0:
1898; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
1899; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1910}
1911
1912define <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
1918;
1919; ZVFHMIN-LABEL: fcmp_ole_vv_nxv1f16:
1920; ZVFHMIN:       # %bb.0:
1921; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1929}
1930
1931define <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
1937;
1938; ZVFHMIN-LABEL: fcmp_ole_vf_nxv1f16:
1939; ZVFHMIN:       # %bb.0:
1940; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
1941; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1952}
1953
1954define <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
1960;
1961; ZVFHMIN-LABEL: fcmp_ole_vf_swap_nxv1f16:
1962; ZVFHMIN:       # %bb.0:
1963; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
1964; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1975}
1976
1977define <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
1985;
1986; ZVFHMIN-LABEL: fcmp_one_vv_nxv1f16:
1987; ZVFHMIN:       # %bb.0:
1988; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
1998}
1999
2000define <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
2008;
2009; ZVFHMIN-LABEL: fcmp_one_vf_nxv1f16:
2010; ZVFHMIN:       # %bb.0:
2011; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2012; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2025}
2026
2027define <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
2035;
2036; ZVFHMIN-LABEL: fcmp_one_vf_swap_nxv1f16:
2037; ZVFHMIN:       # %bb.0:
2038; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2039; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2052}
2053
2054define <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
2062;
2063; ZVFHMIN-LABEL: fcmp_ord_vv_nxv1f16:
2064; ZVFHMIN:       # %bb.0:
2065; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2075}
2076
2077define <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
2087;
2088; ZVFHMIN-LABEL: fcmp_ord_vf_nxv1f16:
2089; ZVFHMIN:       # %bb.0:
2090; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2091; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, e32, mf2, ta, ma
2095; ZVFHMIN-NEXT:    vmfeq.vv v9, v9, v9, v0.t
2096; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
2097; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8
2098; ZVFHMIN-NEXT:    vsetvli zero, zero, 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
2106}
2107
2108define <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
2118;
2119; ZVFHMIN-LABEL: fcmp_ord_vf_swap_nxv1f16:
2120; ZVFHMIN:       # %bb.0:
2121; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2122; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, e32, mf2, ta, ma
2126; ZVFHMIN-NEXT:    vmfeq.vv v9, v9, v9, v0.t
2127; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
2128; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8
2129; ZVFHMIN-NEXT:    vsetvli zero, zero, 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
2137}
2138
2139define <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
2147;
2148; ZVFHMIN-LABEL: fcmp_ueq_vv_nxv1f16:
2149; ZVFHMIN:       # %bb.0:
2150; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2160}
2161
2162define <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
2170;
2171; ZVFHMIN-LABEL: fcmp_ueq_vf_nxv1f16:
2172; ZVFHMIN:       # %bb.0:
2173; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2174; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2187}
2188
2189define <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
2197;
2198; ZVFHMIN-LABEL: fcmp_ueq_vf_swap_nxv1f16:
2199; ZVFHMIN:       # %bb.0:
2200; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2201; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2214}
2215
2216define <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
2223;
2224; ZVFHMIN-LABEL: fcmp_ugt_vv_nxv1f16:
2225; ZVFHMIN:       # %bb.0:
2226; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2235}
2236
2237define <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
2244;
2245; ZVFHMIN-LABEL: fcmp_ugt_vf_nxv1f16:
2246; ZVFHMIN:       # %bb.0:
2247; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2248; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2260}
2261
2262define <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
2269;
2270; ZVFHMIN-LABEL: fcmp_ugt_vf_swap_nxv1f16:
2271; ZVFHMIN:       # %bb.0:
2272; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2273; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2285}
2286
2287define <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
2294;
2295; ZVFHMIN-LABEL: fcmp_uge_vv_nxv1f16:
2296; ZVFHMIN:       # %bb.0:
2297; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2306}
2307
2308define <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
2315;
2316; ZVFHMIN-LABEL: fcmp_uge_vf_nxv1f16:
2317; ZVFHMIN:       # %bb.0:
2318; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2319; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2331}
2332
2333define <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
2340;
2341; ZVFHMIN-LABEL: fcmp_uge_vf_swap_nxv1f16:
2342; ZVFHMIN:       # %bb.0:
2343; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2344; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2356}
2357
2358define <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
2365;
2366; ZVFHMIN-LABEL: fcmp_ult_vv_nxv1f16:
2367; ZVFHMIN:       # %bb.0:
2368; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2377}
2378
2379define <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
2386;
2387; ZVFHMIN-LABEL: fcmp_ult_vf_nxv1f16:
2388; ZVFHMIN:       # %bb.0:
2389; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2390; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2402}
2403
2404define <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
2411;
2412; ZVFHMIN-LABEL: fcmp_ult_vf_swap_nxv1f16:
2413; ZVFHMIN:       # %bb.0:
2414; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2415; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2427}
2428
2429define <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
2436;
2437; ZVFHMIN-LABEL: fcmp_ule_vv_nxv1f16:
2438; ZVFHMIN:       # %bb.0:
2439; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2448}
2449
2450define <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
2457;
2458; ZVFHMIN-LABEL: fcmp_ule_vf_nxv1f16:
2459; ZVFHMIN:       # %bb.0:
2460; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2461; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2473}
2474
2475define <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
2482;
2483; ZVFHMIN-LABEL: fcmp_ule_vf_swap_nxv1f16:
2484; ZVFHMIN:       # %bb.0:
2485; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2486; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2498}
2499
2500define <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
2506;
2507; ZVFHMIN-LABEL: fcmp_une_vv_nxv1f16:
2508; ZVFHMIN:       # %bb.0:
2509; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2517}
2518
2519define <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
2525;
2526; ZVFHMIN-LABEL: fcmp_une_vf_nxv1f16:
2527; ZVFHMIN:       # %bb.0:
2528; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2529; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2540}
2541
2542define <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
2548;
2549; ZVFHMIN-LABEL: fcmp_une_vf_swap_nxv1f16:
2550; ZVFHMIN:       # %bb.0:
2551; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2552; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2563}
2564
2565define <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
2573;
2574; ZVFHMIN-LABEL: fcmp_uno_vv_nxv1f16:
2575; ZVFHMIN:       # %bb.0:
2576; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2586}
2587
2588define <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
2598;
2599; ZVFHMIN-LABEL: fcmp_uno_vf_nxv1f16:
2600; ZVFHMIN:       # %bb.0:
2601; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2602; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, e32, mf2, ta, ma
2606; ZVFHMIN-NEXT:    vmfne.vv v9, v9, v9, v0.t
2607; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
2608; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8
2609; ZVFHMIN-NEXT:    vsetvli zero, zero, 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
2617}
2618
2619define <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
2629;
2630; ZVFHMIN-LABEL: fcmp_uno_vf_swap_nxv1f16:
2631; ZVFHMIN:       # %bb.0:
2632; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2633; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, e32, mf2, ta, ma
2637; ZVFHMIN-NEXT:    vmfne.vv v9, v9, v9, v0.t
2638; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, mf4, ta, ma
2639; ZVFHMIN-NEXT:    vfwcvt.f.f.v v10, v8
2640; ZVFHMIN-NEXT:    vsetvli zero, zero, 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
2648}
2649
2650declare <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)
2651
2652define <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
2658;
2659; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv3f16:
2660; ZVFHMIN:       # %bb.0:
2661; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2670}
2671
2672declare <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)
2673
2674define <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
2681;
2682; ZVFHMIN-LABEL: fcmp_oeq_vv_nxv8f16:
2683; ZVFHMIN:       # %bb.0:
2684; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2693}
2694
2695define <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
2702;
2703; ZVFHMIN-LABEL: fcmp_oeq_vf_nxv8f16:
2704; ZVFHMIN:       # %bb.0:
2705; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2706; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2718}
2719
2720define <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
2727;
2728; ZVFHMIN-LABEL: fcmp_oeq_vf_swap_nxv8f16:
2729; ZVFHMIN:       # %bb.0:
2730; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2731; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2743}
2744
2745define <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
2752;
2753; ZVFHMIN-LABEL: fcmp_ogt_vv_nxv8f16:
2754; ZVFHMIN:       # %bb.0:
2755; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2764}
2765
2766define <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
2773;
2774; ZVFHMIN-LABEL: fcmp_ogt_vf_nxv8f16:
2775; ZVFHMIN:       # %bb.0:
2776; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2777; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2789}
2790
2791define <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
2798;
2799; ZVFHMIN-LABEL: fcmp_ogt_vf_swap_nxv8f16:
2800; ZVFHMIN:       # %bb.0:
2801; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2802; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2814}
2815
2816define <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
2823;
2824; ZVFHMIN-LABEL: fcmp_oge_vv_nxv8f16:
2825; ZVFHMIN:       # %bb.0:
2826; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2835}
2836
2837define <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
2844;
2845; ZVFHMIN-LABEL: fcmp_oge_vf_nxv8f16:
2846; ZVFHMIN:       # %bb.0:
2847; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2848; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2860}
2861
2862define <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
2869;
2870; ZVFHMIN-LABEL: fcmp_oge_vf_swap_nxv8f16:
2871; ZVFHMIN:       # %bb.0:
2872; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2873; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2885}
2886
2887define <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
2894;
2895; ZVFHMIN-LABEL: fcmp_olt_vv_nxv8f16:
2896; ZVFHMIN:       # %bb.0:
2897; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2906}
2907
2908define <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
2915;
2916; ZVFHMIN-LABEL: fcmp_olt_vf_nxv8f16:
2917; ZVFHMIN:       # %bb.0:
2918; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2919; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2931}
2932
2933define <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
2940;
2941; ZVFHMIN-LABEL: fcmp_olt_vf_swap_nxv8f16:
2942; ZVFHMIN:       # %bb.0:
2943; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2944; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2956}
2957
2958define <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
2965;
2966; ZVFHMIN-LABEL: fcmp_ole_vv_nxv8f16:
2967; ZVFHMIN:       # %bb.0:
2968; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
2977}
2978
2979define <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
2986;
2987; ZVFHMIN-LABEL: fcmp_ole_vf_nxv8f16:
2988; ZVFHMIN:       # %bb.0:
2989; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
2990; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3002}
3003
3004define <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
3011;
3012; ZVFHMIN-LABEL: fcmp_ole_vf_swap_nxv8f16:
3013; ZVFHMIN:       # %bb.0:
3014; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3015; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3027}
3028
3029define <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
3037;
3038; ZVFHMIN-LABEL: fcmp_one_vv_nxv8f16:
3039; ZVFHMIN:       # %bb.0:
3040; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3050}
3051
3052define <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
3060;
3061; ZVFHMIN-LABEL: fcmp_one_vf_nxv8f16:
3062; ZVFHMIN:       # %bb.0:
3063; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3064; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3077}
3078
3079define <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
3087;
3088; ZVFHMIN-LABEL: fcmp_one_vf_swap_nxv8f16:
3089; ZVFHMIN:       # %bb.0:
3090; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3091; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3104}
3105
3106define <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
3114;
3115; ZVFHMIN-LABEL: fcmp_ord_vv_nxv8f16:
3116; ZVFHMIN:       # %bb.0:
3117; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
3118; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
3119; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma
3120; ZVFHMIN-NEXT:    vmfeq.vv v10, v12, v12, v0.t
3121; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
3122; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
3123; ZVFHMIN-NEXT:    vsetvli zero, zero, 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
3129}
3130
3131define <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
3141;
3142; ZVFHMIN-LABEL: fcmp_ord_vf_nxv8f16:
3143; ZVFHMIN:       # %bb.0:
3144; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3145; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, e32, m4, ta, ma
3149; ZVFHMIN-NEXT:    vmfeq.vv v10, v12, v12, v0.t
3150; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
3151; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
3152; ZVFHMIN-NEXT:    vsetvli zero, zero, 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
3160}
3161
3162define <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
3172;
3173; ZVFHMIN-LABEL: fcmp_ord_vf_swap_nxv8f16:
3174; ZVFHMIN:       # %bb.0:
3175; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3176; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, e32, m4, ta, ma
3180; ZVFHMIN-NEXT:    vmfeq.vv v10, v12, v12, v0.t
3181; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
3182; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
3183; ZVFHMIN-NEXT:    vsetvli zero, zero, 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
3191}
3192
3193define <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
3201;
3202; ZVFHMIN-LABEL: fcmp_ueq_vv_nxv8f16:
3203; ZVFHMIN:       # %bb.0:
3204; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3214}
3215
3216define <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
3224;
3225; ZVFHMIN-LABEL: fcmp_ueq_vf_nxv8f16:
3226; ZVFHMIN:       # %bb.0:
3227; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3228; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3241}
3242
3243define <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
3251;
3252; ZVFHMIN-LABEL: fcmp_ueq_vf_swap_nxv8f16:
3253; ZVFHMIN:       # %bb.0:
3254; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3255; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3268}
3269
3270define <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
3277;
3278; ZVFHMIN-LABEL: fcmp_ugt_vv_nxv8f16:
3279; ZVFHMIN:       # %bb.0:
3280; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3289}
3290
3291define <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
3298;
3299; ZVFHMIN-LABEL: fcmp_ugt_vf_nxv8f16:
3300; ZVFHMIN:       # %bb.0:
3301; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3302; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3314}
3315
3316define <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
3323;
3324; ZVFHMIN-LABEL: fcmp_ugt_vf_swap_nxv8f16:
3325; ZVFHMIN:       # %bb.0:
3326; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3327; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3339}
3340
3341define <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
3348;
3349; ZVFHMIN-LABEL: fcmp_uge_vv_nxv8f16:
3350; ZVFHMIN:       # %bb.0:
3351; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3360}
3361
3362define <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
3369;
3370; ZVFHMIN-LABEL: fcmp_uge_vf_nxv8f16:
3371; ZVFHMIN:       # %bb.0:
3372; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3373; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3385}
3386
3387define <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
3394;
3395; ZVFHMIN-LABEL: fcmp_uge_vf_swap_nxv8f16:
3396; ZVFHMIN:       # %bb.0:
3397; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3398; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3410}
3411
3412define <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
3419;
3420; ZVFHMIN-LABEL: fcmp_ult_vv_nxv8f16:
3421; ZVFHMIN:       # %bb.0:
3422; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3431}
3432
3433define <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
3440;
3441; ZVFHMIN-LABEL: fcmp_ult_vf_nxv8f16:
3442; ZVFHMIN:       # %bb.0:
3443; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3444; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3456}
3457
3458define <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
3465;
3466; ZVFHMIN-LABEL: fcmp_ult_vf_swap_nxv8f16:
3467; ZVFHMIN:       # %bb.0:
3468; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3469; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3481}
3482
3483define <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
3490;
3491; ZVFHMIN-LABEL: fcmp_ule_vv_nxv8f16:
3492; ZVFHMIN:       # %bb.0:
3493; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3502}
3503
3504define <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
3511;
3512; ZVFHMIN-LABEL: fcmp_ule_vf_nxv8f16:
3513; ZVFHMIN:       # %bb.0:
3514; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3515; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3527}
3528
3529define <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
3536;
3537; ZVFHMIN-LABEL: fcmp_ule_vf_swap_nxv8f16:
3538; ZVFHMIN:       # %bb.0:
3539; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3540; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3552}
3553
3554define <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
3561;
3562; ZVFHMIN-LABEL: fcmp_une_vv_nxv8f16:
3563; ZVFHMIN:       # %bb.0:
3564; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3573}
3574
3575define <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
3582;
3583; ZVFHMIN-LABEL: fcmp_une_vf_nxv8f16:
3584; ZVFHMIN:       # %bb.0:
3585; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3586; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3598}
3599
3600define <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
3607;
3608; ZVFHMIN-LABEL: fcmp_une_vf_swap_nxv8f16:
3609; ZVFHMIN:       # %bb.0:
3610; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3611; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, 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
3623}
3624
3625define <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
3633;
3634; ZVFHMIN-LABEL: fcmp_uno_vv_nxv8f16:
3635; ZVFHMIN:       # %bb.0:
3636; ZVFHMIN-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
3637; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v10
3638; ZVFHMIN-NEXT:    vsetvli zero, zero, e32, m4, ta, ma
3639; ZVFHMIN-NEXT:    vmfne.vv v10, v12, v12, v0.t
3640; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
3641; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
3642; ZVFHMIN-NEXT:    vsetvli zero, zero, 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
3648}
3649
3650define <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
3660;
3661; ZVFHMIN-LABEL: fcmp_uno_vf_nxv8f16:
3662; ZVFHMIN:       # %bb.0:
3663; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3664; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, e32, m4, ta, ma
3668; ZVFHMIN-NEXT:    vmfne.vv v10, v12, v12, v0.t
3669; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
3670; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
3671; ZVFHMIN-NEXT:    vsetvli zero, zero, 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
3679}
3680
3681define <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
3691;
3692; ZVFHMIN-LABEL: fcmp_uno_vf_swap_nxv8f16:
3693; ZVFHMIN:       # %bb.0:
3694; ZVFHMIN-NEXT:    fmv.x.h a1, fa0
3695; ZVFHMIN-NEXT:    vsetvli zero, a0, 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, zero, e32, m4, ta, ma
3699; ZVFHMIN-NEXT:    vmfne.vv v10, v12, v12, v0.t
3700; ZVFHMIN-NEXT:    vsetvli zero, zero, e16, m2, ta, ma
3701; ZVFHMIN-NEXT:    vfwcvt.f.f.v v12, v8
3702; ZVFHMIN-NEXT:    vsetvli zero, zero, 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
3710}
3711
3712declare <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)
3713
3714define <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:    vsetvli a1, zero, e8, m1, ta, ma
3724; ZVFH-NEXT:    vmv1r.v v24, v0
3725; ZVFH-NEXT:    csrr a1, vlenb
3726; ZVFH-NEXT:    slli a1, a1, 3
3727; ZVFH-NEXT:    add a1, sp, a1
3728; ZVFH-NEXT:    addi a1, a1, 16
3729; ZVFH-NEXT:    vs8r.v v8, (a1) # Unknown-size Folded Spill
3730; ZVFH-NEXT:    csrr a3, vlenb
3731; ZVFH-NEXT:    srli a1, a3, 1
3732; ZVFH-NEXT:    slli a4, a3, 3
3733; ZVFH-NEXT:    slli a3, a3, 2
3734; ZVFH-NEXT:    add a4, a0, a4
3735; ZVFH-NEXT:    sub a5, a2, a3
3736; ZVFH-NEXT:    vl8re16.v v8, (a4)
3737; ZVFH-NEXT:    sltu a4, a2, a5
3738; ZVFH-NEXT:    addi a4, a4, -1
3739; ZVFH-NEXT:    vl8re16.v v0, (a0)
3740; ZVFH-NEXT:    addi a0, sp, 16
3741; ZVFH-NEXT:    vs8r.v v0, (a0) # Unknown-size Folded Spill
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
3771;
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:    vsetvli a1, zero, e8, m1, ta, ma
3785; ZVFHMIN-NEXT:    vmv1r.v v24, v0
3786; ZVFHMIN-NEXT:    csrr a1, vlenb
3787; ZVFHMIN-NEXT:    mv a3, a1
3788; ZVFHMIN-NEXT:    slli a1, a1, 3
3789; ZVFHMIN-NEXT:    add a3, a3, a1
3790; ZVFHMIN-NEXT:    slli a1, a1, 1
3791; ZVFHMIN-NEXT:    add a1, a1, a3
3792; ZVFHMIN-NEXT:    add a1, sp, a1
3793; ZVFHMIN-NEXT:    addi a1, a1, 16
3794; ZVFHMIN-NEXT:    vs8r.v v8, (a1) # Unknown-size Folded Spill
3795; ZVFHMIN-NEXT:    csrr a3, vlenb
3796; ZVFHMIN-NEXT:    slli a1, a3, 3
3797; ZVFHMIN-NEXT:    slli a5, a3, 2
3798; ZVFHMIN-NEXT:    slli a4, a3, 1
3799; ZVFHMIN-NEXT:    add a1, a0, a1
3800; ZVFHMIN-NEXT:    sub a6, a2, a5
3801; ZVFHMIN-NEXT:    vl8re16.v v0, (a1)
3802; ZVFHMIN-NEXT:    sltu a1, a2, a6
3803; ZVFHMIN-NEXT:    addi a1, a1, -1
3804; ZVFHMIN-NEXT:    and a6, a1, a6
3805; ZVFHMIN-NEXT:    sub a1, a6, a4
3806; ZVFHMIN-NEXT:    sltu a7, a6, a1
3807; ZVFHMIN-NEXT:    addi a7, a7, -1
3808; ZVFHMIN-NEXT:    and a7, a7, a1
3809; ZVFHMIN-NEXT:    srli a1, a3, 1
3810; ZVFHMIN-NEXT:    srli a3, a3, 2
3811; ZVFHMIN-NEXT:    csrr t0, vlenb
3812; ZVFHMIN-NEXT:    slli t0, t0, 3
3813; ZVFHMIN-NEXT:    add t0, sp, t0
3814; ZVFHMIN-NEXT:    addi t0, t0, 16
3815; ZVFHMIN-NEXT:    vs1r.v v24, (t0) # Unknown-size Folded Spill
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 zero, a7, 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 a7, a0, 4
3839; ZVFHMIN-NEXT:    add a0, a7, 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, zero, 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 zero, a6, e16, m4, ta, ma
3861; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v16
3862; ZVFHMIN-NEXT:    csrr a0, vlenb
3863; ZVFHMIN-NEXT:    slli a6, a0, 4
3864; ZVFHMIN-NEXT:    add a0, a6, 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, zero, 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:    sltu a6, a2, a5
3885; ZVFHMIN-NEXT:    addi a6, a6, -1
3886; ZVFHMIN-NEXT:    and a5, a6, a5
3887; ZVFHMIN-NEXT:    csrr a6, vlenb
3888; ZVFHMIN-NEXT:    mv a7, a6
3889; ZVFHMIN-NEXT:    slli a6, a6, 3
3890; ZVFHMIN-NEXT:    add a7, a7, a6
3891; ZVFHMIN-NEXT:    slli a6, a6, 1
3892; ZVFHMIN-NEXT:    add a6, a6, a7
3893; ZVFHMIN-NEXT:    add a6, sp, a6
3894; ZVFHMIN-NEXT:    addi a6, a6, 16
3895; ZVFHMIN-NEXT:    vl8r.v v16, (a6) # Unknown-size Folded Reload
3896; ZVFHMIN-NEXT:    vsetvli zero, a5, e16, m4, ta, ma
3897; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v20
3898; ZVFHMIN-NEXT:    csrr a5, vlenb
3899; ZVFHMIN-NEXT:    slli a6, a5, 4
3900; ZVFHMIN-NEXT:    add a5, a6, a5
3901; ZVFHMIN-NEXT:    add a5, sp, a5
3902; ZVFHMIN-NEXT:    addi a5, a5, 16
3903; ZVFHMIN-NEXT:    vs8r.v v8, (a5) # Unknown-size Folded Spill
3904; ZVFHMIN-NEXT:    csrr a5, vlenb
3905; ZVFHMIN-NEXT:    slli a6, a5, 5
3906; ZVFHMIN-NEXT:    add a5, a6, a5
3907; ZVFHMIN-NEXT:    add a5, sp, a5
3908; ZVFHMIN-NEXT:    addi a5, a5, 16
3909; ZVFHMIN-NEXT:    vl8r.v v24, (a5) # Unknown-size Folded Reload
3910; ZVFHMIN-NEXT:    vfwcvt.f.f.v v8, v28
3911; ZVFHMIN-NEXT:    csrr a5, vlenb
3912; ZVFHMIN-NEXT:    slli a6, a5, 4
3913; ZVFHMIN-NEXT:    add a5, a6, a5
3914; ZVFHMIN-NEXT:    add a5, sp, a5
3915; ZVFHMIN-NEXT:    addi a5, a5, 16
3916; ZVFHMIN-NEXT:    vl8r.v v24, (a5) # Unknown-size Folded Reload
3917; ZVFHMIN-NEXT:    vsetvli zero, zero, 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 zero, a2, e16, m4, ta, ma
3927; ZVFHMIN-NEXT:    vfwcvt.f.f.v v24, v16
3928; ZVFHMIN-NEXT:    csrr a2, vlenb
3929; ZVFHMIN-NEXT:    slli a4, a2, 5
3930; ZVFHMIN-NEXT:    add a2, a4, a2
3931; ZVFHMIN-NEXT:    add a2, sp, a2
3932; ZVFHMIN-NEXT:    addi a2, a2, 16
3933; ZVFHMIN-NEXT:    vl8r.v v8, (a2) # Unknown-size Folded Reload
3934; ZVFHMIN-NEXT:    vfwcvt.f.f.v v16, v8
3935; ZVFHMIN-NEXT:    vsetvli zero, zero, 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
3956}
3957
3958declare <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)
3959
3960define <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
3968}
3969
3970define <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
3980}
3981
3982define <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
3992}
3993
3994define <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
4002}
4003
4004define <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
4014}
4015
4016define <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
4026}
4027
4028define <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
4036}
4037
4038define <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
4048}
4049
4050define <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
4060}
4061
4062define <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
4070}
4071
4072define <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
4082}
4083
4084define <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
4094}
4095
4096define <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
4104}
4105
4106define <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
4116}
4117
4118define <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
4128}
4129
4130define <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
4140}
4141
4142define <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
4154}
4155
4156define <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
4168}
4169
4170define <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
4180}
4181
4182define <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
4196}
4197
4198define <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
4212}
4213
4214define <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
4224}
4225
4226define <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
4238}
4239
4240define <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
4252}
4253
4254define <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
4263}
4264
4265define <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
4276}
4277
4278define <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
4289}
4290
4291define <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
4300}
4301
4302define <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
4313}
4314
4315define <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
4326}
4327
4328define <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
4337}
4338
4339define <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
4350}
4351
4352define <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
4363}
4364
4365define <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
4374}
4375
4376define <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
4387}
4388
4389define <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
4400}
4401
4402define <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
4410}
4411
4412define <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
4422}
4423
4424define <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
4434}
4435
4436define <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
4446}
4447
4448define <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
4462}
4463
4464define <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
4478}
4479
4480declare <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)
4481
4482define <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
4491}
4492
4493declare <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)
4494
4495define <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
4504}
4505
4506define <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
4517}
4518
4519define <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
4530}
4531
4532define <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
4541}
4542
4543define <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
4554}
4555
4556define <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
4567}
4568
4569define <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
4578}
4579
4580define <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
4591}
4592
4593define <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
4604}
4605
4606define <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
4615}
4616
4617define <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
4628}
4629
4630define <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
4641}
4642
4643define <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
4652}
4653
4654define <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
4665}
4666
4667define <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
4678}
4679
4680define <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
4690}
4691
4692define <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
4704}
4705
4706define <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
4718}
4719
4720define <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
4730}
4731
4732define <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
4746}
4747
4748define <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
4762}
4763
4764define <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
4774}
4775
4776define <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
4788}
4789
4790define <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
4802}
4803
4804define <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
4813}
4814
4815define <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
4826}
4827
4828define <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
4839}
4840
4841define <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
4850}
4851
4852define <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
4863}
4864
4865define <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
4876}
4877
4878define <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
4887}
4888
4889define <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
4900}
4901
4902define <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
4913}
4914
4915define <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
4924}
4925
4926define <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
4937}
4938
4939define <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
4950}
4951
4952define <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
4961}
4962
4963define <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
4974}
4975
4976define <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
4987}
4988
4989define <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
4999}
5000
5001define <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
5015}
5016
5017define <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
5031}
5032
5033declare <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)
5034
5035define <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
5038}
5039