xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/setcc-int-vp.ll (revision 36e4176f1d83d04cdebb4e1870561099b2478d80)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=riscv32 -mattr=+v,+m -verify-machineinstrs < %s \
3; RUN:   | FileCheck %s --check-prefixes=CHECK,RV32
4; RUN: llc -mtriple=riscv64 -mattr=+v,+m -verify-machineinstrs < %s \
5; RUN:   | FileCheck %s --check-prefixes=CHECK,RV64
6
7; FIXME: We're missing canonicalizations of ISD::VP_SETCC equivalent to those
8; for ISD::SETCC, e.g., splats aren't moved to the RHS.
9
10declare <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8>, <vscale x 1 x i8>, metadata, <vscale x 1 x i1>, i32)
11
12define <vscale x 1 x i1> @icmp_eq_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
13; CHECK-LABEL: icmp_eq_vv_nxv1i8:
14; CHECK:       # %bb.0:
15; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
16; CHECK-NEXT:    vmseq.vv v0, v8, v9, v0.t
17; CHECK-NEXT:    ret
18  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
19  ret <vscale x 1 x i1> %v
20}
21
22define <vscale x 1 x i1> @icmp_eq_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
23; CHECK-LABEL: icmp_eq_vx_nxv1i8:
24; CHECK:       # %bb.0:
25; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
26; CHECK-NEXT:    vmseq.vx v0, v8, a0, v0.t
27; CHECK-NEXT:    ret
28  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
29  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
30  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
31  ret <vscale x 1 x i1> %v
32}
33
34define <vscale x 1 x i1> @icmp_eq_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
35; CHECK-LABEL: icmp_eq_vx_swap_nxv1i8:
36; CHECK:       # %bb.0:
37; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
38; CHECK-NEXT:    vmseq.vx v0, v8, a0, v0.t
39; CHECK-NEXT:    ret
40  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
41  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
42  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
43  ret <vscale x 1 x i1> %v
44}
45
46define <vscale x 1 x i1> @icmp_eq_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
47; CHECK-LABEL: icmp_eq_vi_nxv1i8:
48; CHECK:       # %bb.0:
49; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
50; CHECK-NEXT:    vmseq.vi v0, v8, 4, v0.t
51; CHECK-NEXT:    ret
52  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
53  ret <vscale x 1 x i1> %v
54}
55
56define <vscale x 1 x i1> @icmp_eq_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
57; CHECK-LABEL: icmp_eq_vi_swap_nxv1i8:
58; CHECK:       # %bb.0:
59; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
60; CHECK-NEXT:    vmseq.vi v0, v8, 4, v0.t
61; CHECK-NEXT:    ret
62  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
63  ret <vscale x 1 x i1> %v
64}
65
66define <vscale x 1 x i1> @icmp_ne_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
67; CHECK-LABEL: icmp_ne_vv_nxv1i8:
68; CHECK:       # %bb.0:
69; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
70; CHECK-NEXT:    vmsne.vv v0, v8, v9, v0.t
71; CHECK-NEXT:    ret
72  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
73  ret <vscale x 1 x i1> %v
74}
75
76define <vscale x 1 x i1> @icmp_ne_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
77; CHECK-LABEL: icmp_ne_vx_nxv1i8:
78; CHECK:       # %bb.0:
79; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
80; CHECK-NEXT:    vmsne.vx v0, v8, a0, v0.t
81; CHECK-NEXT:    ret
82  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
83  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
84  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
85  ret <vscale x 1 x i1> %v
86}
87
88define <vscale x 1 x i1> @icmp_ne_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
89; CHECK-LABEL: icmp_ne_vx_swap_nxv1i8:
90; CHECK:       # %bb.0:
91; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
92; CHECK-NEXT:    vmsne.vx v0, v8, a0, v0.t
93; CHECK-NEXT:    ret
94  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
95  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
96  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
97  ret <vscale x 1 x i1> %v
98}
99
100define <vscale x 1 x i1> @icmp_ne_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
101; CHECK-LABEL: icmp_ne_vi_nxv1i8:
102; CHECK:       # %bb.0:
103; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
104; CHECK-NEXT:    vmsne.vi v0, v8, 4, v0.t
105; CHECK-NEXT:    ret
106  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
107  ret <vscale x 1 x i1> %v
108}
109
110define <vscale x 1 x i1> @icmp_ne_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
111; CHECK-LABEL: icmp_ne_vi_swap_nxv1i8:
112; CHECK:       # %bb.0:
113; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
114; CHECK-NEXT:    vmsne.vi v0, v8, 4, v0.t
115; CHECK-NEXT:    ret
116  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
117  ret <vscale x 1 x i1> %v
118}
119
120define <vscale x 1 x i1> @icmp_ugt_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
121; CHECK-LABEL: icmp_ugt_vv_nxv1i8:
122; CHECK:       # %bb.0:
123; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
124; CHECK-NEXT:    vmsltu.vv v0, v9, v8, v0.t
125; CHECK-NEXT:    ret
126  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
127  ret <vscale x 1 x i1> %v
128}
129
130define <vscale x 1 x i1> @icmp_ugt_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
131; CHECK-LABEL: icmp_ugt_vx_nxv1i8:
132; CHECK:       # %bb.0:
133; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
134; CHECK-NEXT:    vmsgtu.vx v0, v8, a0, v0.t
135; CHECK-NEXT:    ret
136  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
137  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
138  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
139  ret <vscale x 1 x i1> %v
140}
141
142define <vscale x 1 x i1> @icmp_ugt_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
143; CHECK-LABEL: icmp_ugt_vx_swap_nxv1i8:
144; CHECK:       # %bb.0:
145; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
146; CHECK-NEXT:    vmsltu.vx v0, v8, a0, v0.t
147; CHECK-NEXT:    ret
148  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
149  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
150  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
151  ret <vscale x 1 x i1> %v
152}
153
154define <vscale x 1 x i1> @icmp_ugt_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
155; CHECK-LABEL: icmp_ugt_vi_nxv1i8:
156; CHECK:       # %bb.0:
157; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
158; CHECK-NEXT:    vmsgtu.vi v0, v8, 4, v0.t
159; CHECK-NEXT:    ret
160  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
161  ret <vscale x 1 x i1> %v
162}
163
164define <vscale x 1 x i1> @icmp_ugt_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
165; CHECK-LABEL: icmp_ugt_vi_swap_nxv1i8:
166; CHECK:       # %bb.0:
167; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
168; CHECK-NEXT:    vmsleu.vi v0, v8, 3, v0.t
169; CHECK-NEXT:    ret
170  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
171  ret <vscale x 1 x i1> %v
172}
173
174define <vscale x 1 x i1> @icmp_uge_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
175; CHECK-LABEL: icmp_uge_vv_nxv1i8:
176; CHECK:       # %bb.0:
177; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
178; CHECK-NEXT:    vmsleu.vv v0, v9, v8, v0.t
179; CHECK-NEXT:    ret
180  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
181  ret <vscale x 1 x i1> %v
182}
183
184define <vscale x 1 x i1> @icmp_uge_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
185; CHECK-LABEL: icmp_uge_vx_nxv1i8:
186; CHECK:       # %bb.0:
187; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
188; CHECK-NEXT:    vmv.v.x v9, a0
189; CHECK-NEXT:    vmsleu.vv v0, v9, v8, v0.t
190; CHECK-NEXT:    ret
191  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
192  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
193  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
194  ret <vscale x 1 x i1> %v
195}
196
197define <vscale x 1 x i1> @icmp_uge_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
198; CHECK-LABEL: icmp_uge_vx_swap_nxv1i8:
199; CHECK:       # %bb.0:
200; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
201; CHECK-NEXT:    vmsleu.vx v0, v8, a0, v0.t
202; CHECK-NEXT:    ret
203  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
204  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
205  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
206  ret <vscale x 1 x i1> %v
207}
208
209define <vscale x 1 x i1> @icmp_uge_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
210; CHECK-LABEL: icmp_uge_vi_nxv1i8:
211; CHECK:       # %bb.0:
212; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
213; CHECK-NEXT:    vmsgtu.vi v0, v8, 3, v0.t
214; CHECK-NEXT:    ret
215  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
216  ret <vscale x 1 x i1> %v
217}
218
219define <vscale x 1 x i1> @icmp_uge_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
220; CHECK-LABEL: icmp_uge_vi_swap_nxv1i8:
221; CHECK:       # %bb.0:
222; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
223; CHECK-NEXT:    vmsleu.vi v0, v8, 4, v0.t
224; CHECK-NEXT:    ret
225  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
226  ret <vscale x 1 x i1> %v
227}
228
229define <vscale x 1 x i1> @icmp_ult_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
230; CHECK-LABEL: icmp_ult_vv_nxv1i8:
231; CHECK:       # %bb.0:
232; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
233; CHECK-NEXT:    vmsltu.vv v0, v8, v9, v0.t
234; CHECK-NEXT:    ret
235  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
236  ret <vscale x 1 x i1> %v
237}
238
239define <vscale x 1 x i1> @icmp_ult_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
240; CHECK-LABEL: icmp_ult_vx_nxv1i8:
241; CHECK:       # %bb.0:
242; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
243; CHECK-NEXT:    vmsltu.vx v0, v8, a0, v0.t
244; CHECK-NEXT:    ret
245  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
246  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
247  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
248  ret <vscale x 1 x i1> %v
249}
250
251define <vscale x 1 x i1> @icmp_ult_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
252; CHECK-LABEL: icmp_ult_vx_swap_nxv1i8:
253; CHECK:       # %bb.0:
254; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
255; CHECK-NEXT:    vmsgtu.vx v0, v8, a0, v0.t
256; CHECK-NEXT:    ret
257  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
258  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
259  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
260  ret <vscale x 1 x i1> %v
261}
262
263define <vscale x 1 x i1> @icmp_ult_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
264; CHECK-LABEL: icmp_ult_vi_nxv1i8:
265; CHECK:       # %bb.0:
266; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
267; CHECK-NEXT:    vmsleu.vi v0, v8, 3, v0.t
268; CHECK-NEXT:    ret
269  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
270  ret <vscale x 1 x i1> %v
271}
272
273define <vscale x 1 x i1> @icmp_ult_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
274; CHECK-LABEL: icmp_ult_vi_swap_nxv1i8:
275; CHECK:       # %bb.0:
276; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
277; CHECK-NEXT:    vmsgtu.vi v0, v8, 4, v0.t
278; CHECK-NEXT:    ret
279  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
280  ret <vscale x 1 x i1> %v
281}
282
283define <vscale x 1 x i1> @icmp_sgt_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
284; CHECK-LABEL: icmp_sgt_vv_nxv1i8:
285; CHECK:       # %bb.0:
286; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
287; CHECK-NEXT:    vmslt.vv v0, v9, v8, v0.t
288; CHECK-NEXT:    ret
289  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
290  ret <vscale x 1 x i1> %v
291}
292
293define <vscale x 1 x i1> @icmp_sgt_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
294; CHECK-LABEL: icmp_sgt_vx_nxv1i8:
295; CHECK:       # %bb.0:
296; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
297; CHECK-NEXT:    vmsgt.vx v0, v8, a0, v0.t
298; CHECK-NEXT:    ret
299  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
300  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
301  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
302  ret <vscale x 1 x i1> %v
303}
304
305define <vscale x 1 x i1> @icmp_sgt_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
306; CHECK-LABEL: icmp_sgt_vx_swap_nxv1i8:
307; CHECK:       # %bb.0:
308; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
309; CHECK-NEXT:    vmslt.vx v0, v8, a0, v0.t
310; CHECK-NEXT:    ret
311  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
312  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
313  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
314  ret <vscale x 1 x i1> %v
315}
316
317define <vscale x 1 x i1> @icmp_sgt_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
318; CHECK-LABEL: icmp_sgt_vi_nxv1i8:
319; CHECK:       # %bb.0:
320; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
321; CHECK-NEXT:    vmsgt.vi v0, v8, 4, v0.t
322; CHECK-NEXT:    ret
323  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
324  ret <vscale x 1 x i1> %v
325}
326
327define <vscale x 1 x i1> @icmp_sgt_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
328; CHECK-LABEL: icmp_sgt_vi_swap_nxv1i8:
329; CHECK:       # %bb.0:
330; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
331; CHECK-NEXT:    vmsle.vi v0, v8, 3, v0.t
332; CHECK-NEXT:    ret
333  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
334  ret <vscale x 1 x i1> %v
335}
336
337define <vscale x 1 x i1> @icmp_sge_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
338; CHECK-LABEL: icmp_sge_vv_nxv1i8:
339; CHECK:       # %bb.0:
340; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
341; CHECK-NEXT:    vmsle.vv v0, v9, v8, v0.t
342; CHECK-NEXT:    ret
343  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
344  ret <vscale x 1 x i1> %v
345}
346
347define <vscale x 1 x i1> @icmp_sge_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
348; CHECK-LABEL: icmp_sge_vx_nxv1i8:
349; CHECK:       # %bb.0:
350; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
351; CHECK-NEXT:    vmv.v.x v9, a0
352; CHECK-NEXT:    vmsle.vv v0, v9, v8, v0.t
353; CHECK-NEXT:    ret
354  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
355  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
356  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
357  ret <vscale x 1 x i1> %v
358}
359
360define <vscale x 1 x i1> @icmp_sge_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
361; CHECK-LABEL: icmp_sge_vx_swap_nxv1i8:
362; CHECK:       # %bb.0:
363; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
364; CHECK-NEXT:    vmsle.vx v0, v8, a0, v0.t
365; CHECK-NEXT:    ret
366  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
367  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
368  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
369  ret <vscale x 1 x i1> %v
370}
371
372define <vscale x 1 x i1> @icmp_sge_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
373; CHECK-LABEL: icmp_sge_vi_nxv1i8:
374; CHECK:       # %bb.0:
375; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
376; CHECK-NEXT:    vmsgt.vi v0, v8, 3, v0.t
377; CHECK-NEXT:    ret
378  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
379  ret <vscale x 1 x i1> %v
380}
381
382define <vscale x 1 x i1> @icmp_sge_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
383; CHECK-LABEL: icmp_sge_vi_swap_nxv1i8:
384; CHECK:       # %bb.0:
385; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
386; CHECK-NEXT:    vmsle.vi v0, v8, 4, v0.t
387; CHECK-NEXT:    ret
388  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
389  ret <vscale x 1 x i1> %v
390}
391
392define <vscale x 1 x i1> @icmp_slt_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
393; CHECK-LABEL: icmp_slt_vv_nxv1i8:
394; CHECK:       # %bb.0:
395; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
396; CHECK-NEXT:    vmslt.vv v0, v8, v9, v0.t
397; CHECK-NEXT:    ret
398  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
399  ret <vscale x 1 x i1> %v
400}
401
402define <vscale x 1 x i1> @icmp_slt_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
403; CHECK-LABEL: icmp_slt_vx_nxv1i8:
404; CHECK:       # %bb.0:
405; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
406; CHECK-NEXT:    vmslt.vx v0, v8, a0, v0.t
407; CHECK-NEXT:    ret
408  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
409  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
410  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
411  ret <vscale x 1 x i1> %v
412}
413
414define <vscale x 1 x i1> @icmp_slt_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
415; CHECK-LABEL: icmp_slt_vx_swap_nxv1i8:
416; CHECK:       # %bb.0:
417; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
418; CHECK-NEXT:    vmsgt.vx v0, v8, a0, v0.t
419; CHECK-NEXT:    ret
420  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
421  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
422  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
423  ret <vscale x 1 x i1> %v
424}
425
426define <vscale x 1 x i1> @icmp_slt_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
427; CHECK-LABEL: icmp_slt_vi_nxv1i8:
428; CHECK:       # %bb.0:
429; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
430; CHECK-NEXT:    vmsle.vi v0, v8, 3, v0.t
431; CHECK-NEXT:    ret
432  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
433  ret <vscale x 1 x i1> %v
434}
435
436define <vscale x 1 x i1> @icmp_slt_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
437; CHECK-LABEL: icmp_slt_vi_swap_nxv1i8:
438; CHECK:       # %bb.0:
439; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
440; CHECK-NEXT:    vmsgt.vi v0, v8, 4, v0.t
441; CHECK-NEXT:    ret
442  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
443  ret <vscale x 1 x i1> %v
444}
445
446define <vscale x 1 x i1> @icmp_sle_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
447; CHECK-LABEL: icmp_sle_vv_nxv1i8:
448; CHECK:       # %bb.0:
449; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
450; CHECK-NEXT:    vmsle.vv v0, v8, v9, v0.t
451; CHECK-NEXT:    ret
452  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
453  ret <vscale x 1 x i1> %v
454}
455
456define <vscale x 1 x i1> @icmp_sle_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
457; CHECK-LABEL: icmp_sle_vx_nxv1i8:
458; CHECK:       # %bb.0:
459; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
460; CHECK-NEXT:    vmsle.vx v0, v8, a0, v0.t
461; CHECK-NEXT:    ret
462  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
463  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
464  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
465  ret <vscale x 1 x i1> %v
466}
467
468define <vscale x 1 x i1> @icmp_sle_vx_swap_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
469; CHECK-LABEL: icmp_sle_vx_swap_nxv1i8:
470; CHECK:       # %bb.0:
471; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
472; CHECK-NEXT:    vmv.v.x v9, a0
473; CHECK-NEXT:    vmsle.vv v0, v9, v8, v0.t
474; CHECK-NEXT:    ret
475  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
476  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
477  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %vb, <vscale x 1 x i8> %va, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
478  ret <vscale x 1 x i1> %v
479}
480
481define <vscale x 1 x i1> @icmp_sle_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
482; CHECK-LABEL: icmp_sle_vi_nxv1i8:
483; CHECK:       # %bb.0:
484; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
485; CHECK-NEXT:    vmsle.vi v0, v8, 4, v0.t
486; CHECK-NEXT:    ret
487  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 4), metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
488  ret <vscale x 1 x i1> %v
489}
490
491define <vscale x 1 x i1> @icmp_sle_vi_swap_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
492; CHECK-LABEL: icmp_sle_vi_swap_nxv1i8:
493; CHECK:       # %bb.0:
494; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
495; CHECK-NEXT:    vmsgt.vi v0, v8, 3, v0.t
496; CHECK-NEXT:    ret
497  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i8(<vscale x 1 x i8> splat (i8 4), <vscale x 1 x i8> %va, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
498  ret <vscale x 1 x i1> %v
499}
500
501declare <vscale x 3 x i1> @llvm.vp.icmp.nxv3i8(<vscale x 3 x i8>, <vscale x 3 x i8>, metadata, <vscale x 3 x i1>, i32)
502
503define <vscale x 3 x i1> @icmp_eq_vv_nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %vb, <vscale x 3 x i1> %m, i32 zeroext %evl) {
504; CHECK-LABEL: icmp_eq_vv_nxv3i8:
505; CHECK:       # %bb.0:
506; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
507; CHECK-NEXT:    vmseq.vv v0, v8, v9, v0.t
508; CHECK-NEXT:    ret
509  %v = call <vscale x 3 x i1> @llvm.vp.icmp.nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %vb, metadata !"eq", <vscale x 3 x i1> %m, i32 %evl)
510  ret <vscale x 3 x i1> %v
511}
512
513define <vscale x 3 x i1> @icmp_eq_vx_nxv3i8(<vscale x 3 x i8> %va, i8 %b, <vscale x 3 x i1> %m, i32 zeroext %evl) {
514; CHECK-LABEL: icmp_eq_vx_nxv3i8:
515; CHECK:       # %bb.0:
516; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
517; CHECK-NEXT:    vmseq.vx v0, v8, a0, v0.t
518; CHECK-NEXT:    ret
519  %elt.head = insertelement <vscale x 3 x i8> poison, i8 %b, i32 0
520  %vb = shufflevector <vscale x 3 x i8> %elt.head, <vscale x 3 x i8> poison, <vscale x 3 x i32> zeroinitializer
521  %v = call <vscale x 3 x i1> @llvm.vp.icmp.nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %vb, metadata !"eq", <vscale x 3 x i1> %m, i32 %evl)
522  ret <vscale x 3 x i1> %v
523}
524
525define <vscale x 3 x i1> @icmp_eq_vx_swap_nxv3i8(<vscale x 3 x i8> %va, i8 %b, <vscale x 3 x i1> %m, i32 zeroext %evl) {
526; CHECK-LABEL: icmp_eq_vx_swap_nxv3i8:
527; CHECK:       # %bb.0:
528; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
529; CHECK-NEXT:    vmseq.vx v0, v8, a0, v0.t
530; CHECK-NEXT:    ret
531  %elt.head = insertelement <vscale x 3 x i8> poison, i8 %b, i32 0
532  %vb = shufflevector <vscale x 3 x i8> %elt.head, <vscale x 3 x i8> poison, <vscale x 3 x i32> zeroinitializer
533  %v = call <vscale x 3 x i1> @llvm.vp.icmp.nxv3i8(<vscale x 3 x i8> %vb, <vscale x 3 x i8> %va, metadata !"eq", <vscale x 3 x i1> %m, i32 %evl)
534  ret <vscale x 3 x i1> %v
535}
536
537declare <vscale x 8 x i1> @llvm.vp.icmp.nxv8i7(<vscale x 8 x i7>, <vscale x 8 x i7>, metadata, <vscale x 8 x i1>, i32)
538
539define <vscale x 8 x i1> @icmp_eq_vv_nxv8i7(<vscale x 8 x i7> %va, <vscale x 8 x i7> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
540; CHECK-LABEL: icmp_eq_vv_nxv8i7:
541; CHECK:       # %bb.0:
542; CHECK-NEXT:    li a1, 127
543; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
544; CHECK-NEXT:    vand.vx v9, v9, a1
545; CHECK-NEXT:    vand.vx v8, v8, a1
546; CHECK-NEXT:    vmseq.vv v0, v8, v9, v0.t
547; CHECK-NEXT:    ret
548  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i7(<vscale x 8 x i7> %va, <vscale x 8 x i7> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
549  ret <vscale x 8 x i1> %v
550}
551
552define <vscale x 8 x i1> @icmp_eq_vx_nxv8i7(<vscale x 8 x i7> %va, i7 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
553; CHECK-LABEL: icmp_eq_vx_nxv8i7:
554; CHECK:       # %bb.0:
555; CHECK-NEXT:    li a2, 127
556; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
557; CHECK-NEXT:    vmv.v.x v9, a0
558; CHECK-NEXT:    vand.vx v8, v8, a2
559; CHECK-NEXT:    vand.vx v9, v9, a2
560; CHECK-NEXT:    vmseq.vv v0, v8, v9, v0.t
561; CHECK-NEXT:    ret
562  %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 0
563  %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer
564  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i7(<vscale x 8 x i7> %va, <vscale x 8 x i7> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
565  ret <vscale x 8 x i1> %v
566}
567
568define <vscale x 8 x i1> @icmp_eq_vx_swap_nxv8i7(<vscale x 8 x i7> %va, i7 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
569; CHECK-LABEL: icmp_eq_vx_swap_nxv8i7:
570; CHECK:       # %bb.0:
571; CHECK-NEXT:    li a2, 127
572; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
573; CHECK-NEXT:    vmv.v.x v9, a0
574; CHECK-NEXT:    vand.vx v8, v8, a2
575; CHECK-NEXT:    vand.vx v9, v9, a2
576; CHECK-NEXT:    vmseq.vv v0, v9, v8, v0.t
577; CHECK-NEXT:    ret
578  %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 0
579  %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer
580  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i7(<vscale x 8 x i7> %vb, <vscale x 8 x i7> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
581  ret <vscale x 8 x i1> %v
582}
583
584declare <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8>, <vscale x 8 x i8>, metadata, <vscale x 8 x i1>, i32)
585
586define <vscale x 8 x i1> @icmp_eq_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
587; CHECK-LABEL: icmp_eq_vv_nxv8i8:
588; CHECK:       # %bb.0:
589; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
590; CHECK-NEXT:    vmseq.vv v0, v8, v9, v0.t
591; CHECK-NEXT:    ret
592  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
593  ret <vscale x 8 x i1> %v
594}
595
596define <vscale x 8 x i1> @icmp_eq_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
597; CHECK-LABEL: icmp_eq_vx_nxv8i8:
598; CHECK:       # %bb.0:
599; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
600; CHECK-NEXT:    vmseq.vx v0, v8, a0, v0.t
601; CHECK-NEXT:    ret
602  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
603  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
604  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
605  ret <vscale x 8 x i1> %v
606}
607
608define <vscale x 8 x i1> @icmp_eq_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
609; CHECK-LABEL: icmp_eq_vx_swap_nxv8i8:
610; CHECK:       # %bb.0:
611; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
612; CHECK-NEXT:    vmseq.vx v0, v8, a0, v0.t
613; CHECK-NEXT:    ret
614  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
615  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
616  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
617  ret <vscale x 8 x i1> %v
618}
619
620define <vscale x 8 x i1> @icmp_eq_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
621; CHECK-LABEL: icmp_eq_vi_nxv8i8:
622; CHECK:       # %bb.0:
623; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
624; CHECK-NEXT:    vmseq.vi v0, v8, 4, v0.t
625; CHECK-NEXT:    ret
626  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
627  ret <vscale x 8 x i1> %v
628}
629
630define <vscale x 8 x i1> @icmp_eq_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
631; CHECK-LABEL: icmp_eq_vi_swap_nxv8i8:
632; CHECK:       # %bb.0:
633; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
634; CHECK-NEXT:    vmseq.vi v0, v8, 4, v0.t
635; CHECK-NEXT:    ret
636  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
637  ret <vscale x 8 x i1> %v
638}
639
640define <vscale x 8 x i1> @icmp_ne_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
641; CHECK-LABEL: icmp_ne_vv_nxv8i8:
642; CHECK:       # %bb.0:
643; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
644; CHECK-NEXT:    vmsne.vv v0, v8, v9, v0.t
645; CHECK-NEXT:    ret
646  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
647  ret <vscale x 8 x i1> %v
648}
649
650define <vscale x 8 x i1> @icmp_ne_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
651; CHECK-LABEL: icmp_ne_vx_nxv8i8:
652; CHECK:       # %bb.0:
653; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
654; CHECK-NEXT:    vmsne.vx v0, v8, a0, v0.t
655; CHECK-NEXT:    ret
656  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
657  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
658  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
659  ret <vscale x 8 x i1> %v
660}
661
662define <vscale x 8 x i1> @icmp_ne_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
663; CHECK-LABEL: icmp_ne_vx_swap_nxv8i8:
664; CHECK:       # %bb.0:
665; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
666; CHECK-NEXT:    vmsne.vx v0, v8, a0, v0.t
667; CHECK-NEXT:    ret
668  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
669  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
670  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
671  ret <vscale x 8 x i1> %v
672}
673
674define <vscale x 8 x i1> @icmp_ne_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
675; CHECK-LABEL: icmp_ne_vi_nxv8i8:
676; CHECK:       # %bb.0:
677; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
678; CHECK-NEXT:    vmsne.vi v0, v8, 4, v0.t
679; CHECK-NEXT:    ret
680  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
681  ret <vscale x 8 x i1> %v
682}
683
684define <vscale x 8 x i1> @icmp_ne_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
685; CHECK-LABEL: icmp_ne_vi_swap_nxv8i8:
686; CHECK:       # %bb.0:
687; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
688; CHECK-NEXT:    vmsne.vi v0, v8, 4, v0.t
689; CHECK-NEXT:    ret
690  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
691  ret <vscale x 8 x i1> %v
692}
693
694define <vscale x 8 x i1> @icmp_ugt_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
695; CHECK-LABEL: icmp_ugt_vv_nxv8i8:
696; CHECK:       # %bb.0:
697; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
698; CHECK-NEXT:    vmsltu.vv v0, v9, v8, v0.t
699; CHECK-NEXT:    ret
700  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
701  ret <vscale x 8 x i1> %v
702}
703
704define <vscale x 8 x i1> @icmp_ugt_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
705; CHECK-LABEL: icmp_ugt_vx_nxv8i8:
706; CHECK:       # %bb.0:
707; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
708; CHECK-NEXT:    vmsgtu.vx v0, v8, a0, v0.t
709; CHECK-NEXT:    ret
710  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
711  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
712  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
713  ret <vscale x 8 x i1> %v
714}
715
716define <vscale x 8 x i1> @icmp_ugt_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
717; CHECK-LABEL: icmp_ugt_vx_swap_nxv8i8:
718; CHECK:       # %bb.0:
719; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
720; CHECK-NEXT:    vmsltu.vx v0, v8, a0, v0.t
721; CHECK-NEXT:    ret
722  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
723  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
724  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
725  ret <vscale x 8 x i1> %v
726}
727
728define <vscale x 8 x i1> @icmp_ugt_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
729; CHECK-LABEL: icmp_ugt_vi_nxv8i8:
730; CHECK:       # %bb.0:
731; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
732; CHECK-NEXT:    vmsgtu.vi v0, v8, 4, v0.t
733; CHECK-NEXT:    ret
734  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
735  ret <vscale x 8 x i1> %v
736}
737
738define <vscale x 8 x i1> @icmp_ugt_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
739; CHECK-LABEL: icmp_ugt_vi_swap_nxv8i8:
740; CHECK:       # %bb.0:
741; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
742; CHECK-NEXT:    vmsleu.vi v0, v8, 3, v0.t
743; CHECK-NEXT:    ret
744  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
745  ret <vscale x 8 x i1> %v
746}
747
748define <vscale x 8 x i1> @icmp_uge_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
749; CHECK-LABEL: icmp_uge_vv_nxv8i8:
750; CHECK:       # %bb.0:
751; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
752; CHECK-NEXT:    vmsleu.vv v0, v9, v8, v0.t
753; CHECK-NEXT:    ret
754  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
755  ret <vscale x 8 x i1> %v
756}
757
758define <vscale x 8 x i1> @icmp_uge_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
759; CHECK-LABEL: icmp_uge_vx_nxv8i8:
760; CHECK:       # %bb.0:
761; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
762; CHECK-NEXT:    vmv.v.x v9, a0
763; CHECK-NEXT:    vmsleu.vv v0, v9, v8, v0.t
764; CHECK-NEXT:    ret
765  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
766  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
767  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
768  ret <vscale x 8 x i1> %v
769}
770
771define <vscale x 8 x i1> @icmp_uge_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
772; CHECK-LABEL: icmp_uge_vx_swap_nxv8i8:
773; CHECK:       # %bb.0:
774; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
775; CHECK-NEXT:    vmsleu.vx v0, v8, a0, v0.t
776; CHECK-NEXT:    ret
777  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
778  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
779  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
780  ret <vscale x 8 x i1> %v
781}
782
783define <vscale x 8 x i1> @icmp_uge_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
784; CHECK-LABEL: icmp_uge_vi_nxv8i8:
785; CHECK:       # %bb.0:
786; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
787; CHECK-NEXT:    vmsgtu.vi v0, v8, 3, v0.t
788; CHECK-NEXT:    ret
789  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
790  ret <vscale x 8 x i1> %v
791}
792
793define <vscale x 8 x i1> @icmp_uge_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
794; CHECK-LABEL: icmp_uge_vi_swap_nxv8i8:
795; CHECK:       # %bb.0:
796; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
797; CHECK-NEXT:    vmsleu.vi v0, v8, 4, v0.t
798; CHECK-NEXT:    ret
799  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
800  ret <vscale x 8 x i1> %v
801}
802
803define <vscale x 8 x i1> @icmp_ult_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
804; CHECK-LABEL: icmp_ult_vv_nxv8i8:
805; CHECK:       # %bb.0:
806; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
807; CHECK-NEXT:    vmsltu.vv v0, v8, v9, v0.t
808; CHECK-NEXT:    ret
809  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
810  ret <vscale x 8 x i1> %v
811}
812
813define <vscale x 8 x i1> @icmp_ult_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
814; CHECK-LABEL: icmp_ult_vx_nxv8i8:
815; CHECK:       # %bb.0:
816; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
817; CHECK-NEXT:    vmsltu.vx v0, v8, a0, v0.t
818; CHECK-NEXT:    ret
819  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
820  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
821  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
822  ret <vscale x 8 x i1> %v
823}
824
825define <vscale x 8 x i1> @icmp_ult_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
826; CHECK-LABEL: icmp_ult_vx_swap_nxv8i8:
827; CHECK:       # %bb.0:
828; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
829; CHECK-NEXT:    vmsgtu.vx v0, v8, a0, v0.t
830; CHECK-NEXT:    ret
831  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
832  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
833  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
834  ret <vscale x 8 x i1> %v
835}
836
837define <vscale x 8 x i1> @icmp_ult_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
838; CHECK-LABEL: icmp_ult_vi_nxv8i8:
839; CHECK:       # %bb.0:
840; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
841; CHECK-NEXT:    vmsleu.vi v0, v8, 3, v0.t
842; CHECK-NEXT:    ret
843  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
844  ret <vscale x 8 x i1> %v
845}
846
847define <vscale x 8 x i1> @icmp_ult_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
848; CHECK-LABEL: icmp_ult_vi_swap_nxv8i8:
849; CHECK:       # %bb.0:
850; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
851; CHECK-NEXT:    vmsgtu.vi v0, v8, 4, v0.t
852; CHECK-NEXT:    ret
853  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
854  ret <vscale x 8 x i1> %v
855}
856
857define <vscale x 8 x i1> @icmp_sgt_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
858; CHECK-LABEL: icmp_sgt_vv_nxv8i8:
859; CHECK:       # %bb.0:
860; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
861; CHECK-NEXT:    vmslt.vv v0, v9, v8, v0.t
862; CHECK-NEXT:    ret
863  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
864  ret <vscale x 8 x i1> %v
865}
866
867define <vscale x 8 x i1> @icmp_sgt_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
868; CHECK-LABEL: icmp_sgt_vx_nxv8i8:
869; CHECK:       # %bb.0:
870; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
871; CHECK-NEXT:    vmsgt.vx v0, v8, a0, v0.t
872; CHECK-NEXT:    ret
873  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
874  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
875  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
876  ret <vscale x 8 x i1> %v
877}
878
879define <vscale x 8 x i1> @icmp_sgt_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
880; CHECK-LABEL: icmp_sgt_vx_swap_nxv8i8:
881; CHECK:       # %bb.0:
882; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
883; CHECK-NEXT:    vmslt.vx v0, v8, a0, v0.t
884; CHECK-NEXT:    ret
885  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
886  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
887  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
888  ret <vscale x 8 x i1> %v
889}
890
891define <vscale x 8 x i1> @icmp_sgt_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
892; CHECK-LABEL: icmp_sgt_vi_nxv8i8:
893; CHECK:       # %bb.0:
894; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
895; CHECK-NEXT:    vmsgt.vi v0, v8, 4, v0.t
896; CHECK-NEXT:    ret
897  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
898  ret <vscale x 8 x i1> %v
899}
900
901define <vscale x 8 x i1> @icmp_sgt_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
902; CHECK-LABEL: icmp_sgt_vi_swap_nxv8i8:
903; CHECK:       # %bb.0:
904; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
905; CHECK-NEXT:    vmsle.vi v0, v8, 3, v0.t
906; CHECK-NEXT:    ret
907  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
908  ret <vscale x 8 x i1> %v
909}
910
911define <vscale x 8 x i1> @icmp_sge_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
912; CHECK-LABEL: icmp_sge_vv_nxv8i8:
913; CHECK:       # %bb.0:
914; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
915; CHECK-NEXT:    vmsle.vv v0, v9, v8, v0.t
916; CHECK-NEXT:    ret
917  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
918  ret <vscale x 8 x i1> %v
919}
920
921define <vscale x 8 x i1> @icmp_sge_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
922; CHECK-LABEL: icmp_sge_vx_nxv8i8:
923; CHECK:       # %bb.0:
924; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
925; CHECK-NEXT:    vmv.v.x v9, a0
926; CHECK-NEXT:    vmsle.vv v0, v9, v8, v0.t
927; CHECK-NEXT:    ret
928  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
929  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
930  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
931  ret <vscale x 8 x i1> %v
932}
933
934define <vscale x 8 x i1> @icmp_sge_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
935; CHECK-LABEL: icmp_sge_vx_swap_nxv8i8:
936; CHECK:       # %bb.0:
937; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
938; CHECK-NEXT:    vmsle.vx v0, v8, a0, v0.t
939; CHECK-NEXT:    ret
940  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
941  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
942  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
943  ret <vscale x 8 x i1> %v
944}
945
946define <vscale x 8 x i1> @icmp_sge_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
947; CHECK-LABEL: icmp_sge_vi_nxv8i8:
948; CHECK:       # %bb.0:
949; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
950; CHECK-NEXT:    vmsgt.vi v0, v8, 3, v0.t
951; CHECK-NEXT:    ret
952  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
953  ret <vscale x 8 x i1> %v
954}
955
956define <vscale x 8 x i1> @icmp_sge_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
957; CHECK-LABEL: icmp_sge_vi_swap_nxv8i8:
958; CHECK:       # %bb.0:
959; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
960; CHECK-NEXT:    vmsle.vi v0, v8, 4, v0.t
961; CHECK-NEXT:    ret
962  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
963  ret <vscale x 8 x i1> %v
964}
965
966define <vscale x 8 x i1> @icmp_slt_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
967; CHECK-LABEL: icmp_slt_vv_nxv8i8:
968; CHECK:       # %bb.0:
969; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
970; CHECK-NEXT:    vmslt.vv v0, v8, v9, v0.t
971; CHECK-NEXT:    ret
972  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
973  ret <vscale x 8 x i1> %v
974}
975
976define <vscale x 8 x i1> @icmp_slt_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
977; CHECK-LABEL: icmp_slt_vx_nxv8i8:
978; CHECK:       # %bb.0:
979; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
980; CHECK-NEXT:    vmslt.vx v0, v8, a0, v0.t
981; CHECK-NEXT:    ret
982  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
983  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
984  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
985  ret <vscale x 8 x i1> %v
986}
987
988define <vscale x 8 x i1> @icmp_slt_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
989; CHECK-LABEL: icmp_slt_vx_swap_nxv8i8:
990; CHECK:       # %bb.0:
991; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
992; CHECK-NEXT:    vmsgt.vx v0, v8, a0, v0.t
993; CHECK-NEXT:    ret
994  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
995  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
996  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
997  ret <vscale x 8 x i1> %v
998}
999
1000define <vscale x 8 x i1> @icmp_slt_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1001; CHECK-LABEL: icmp_slt_vi_nxv8i8:
1002; CHECK:       # %bb.0:
1003; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
1004; CHECK-NEXT:    vmsle.vi v0, v8, 3, v0.t
1005; CHECK-NEXT:    ret
1006  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
1007  ret <vscale x 8 x i1> %v
1008}
1009
1010define <vscale x 8 x i1> @icmp_slt_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1011; CHECK-LABEL: icmp_slt_vi_swap_nxv8i8:
1012; CHECK:       # %bb.0:
1013; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
1014; CHECK-NEXT:    vmsgt.vi v0, v8, 4, v0.t
1015; CHECK-NEXT:    ret
1016  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
1017  ret <vscale x 8 x i1> %v
1018}
1019
1020define <vscale x 8 x i1> @icmp_sle_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1021; CHECK-LABEL: icmp_sle_vv_nxv8i8:
1022; CHECK:       # %bb.0:
1023; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
1024; CHECK-NEXT:    vmsle.vv v0, v8, v9, v0.t
1025; CHECK-NEXT:    ret
1026  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
1027  ret <vscale x 8 x i1> %v
1028}
1029
1030define <vscale x 8 x i1> @icmp_sle_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1031; CHECK-LABEL: icmp_sle_vx_nxv8i8:
1032; CHECK:       # %bb.0:
1033; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
1034; CHECK-NEXT:    vmsle.vx v0, v8, a0, v0.t
1035; CHECK-NEXT:    ret
1036  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
1037  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
1038  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
1039  ret <vscale x 8 x i1> %v
1040}
1041
1042define <vscale x 8 x i1> @icmp_sle_vx_swap_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1043; CHECK-LABEL: icmp_sle_vx_swap_nxv8i8:
1044; CHECK:       # %bb.0:
1045; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
1046; CHECK-NEXT:    vmv.v.x v9, a0
1047; CHECK-NEXT:    vmsle.vv v0, v9, v8, v0.t
1048; CHECK-NEXT:    ret
1049  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
1050  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
1051  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %vb, <vscale x 8 x i8> %va, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
1052  ret <vscale x 8 x i1> %v
1053}
1054
1055define <vscale x 8 x i1> @icmp_sle_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1056; CHECK-LABEL: icmp_sle_vi_nxv8i8:
1057; CHECK:       # %bb.0:
1058; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
1059; CHECK-NEXT:    vmsle.vi v0, v8, 4, v0.t
1060; CHECK-NEXT:    ret
1061  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 4), metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
1062  ret <vscale x 8 x i1> %v
1063}
1064
1065define <vscale x 8 x i1> @icmp_sle_vi_swap_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1066; CHECK-LABEL: icmp_sle_vi_swap_nxv8i8:
1067; CHECK:       # %bb.0:
1068; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
1069; CHECK-NEXT:    vmsgt.vi v0, v8, 3, v0.t
1070; CHECK-NEXT:    ret
1071  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i8(<vscale x 8 x i8> splat (i8 4), <vscale x 8 x i8> %va, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
1072  ret <vscale x 8 x i1> %v
1073}
1074
1075declare <vscale x 128 x i1> @llvm.vp.icmp.nxv128i8(<vscale x 128 x i8>, <vscale x 128 x i8>, metadata, <vscale x 128 x i1>, i32)
1076
1077define <vscale x 128 x i1> @icmp_eq_vv_nxv128i8(<vscale x 128 x i8> %va, <vscale x 128 x i8> %vb, <vscale x 128 x i1> %m, i32 zeroext %evl) {
1078; CHECK-LABEL: icmp_eq_vv_nxv128i8:
1079; CHECK:       # %bb.0:
1080; CHECK-NEXT:    addi sp, sp, -16
1081; CHECK-NEXT:    .cfi_def_cfa_offset 16
1082; CHECK-NEXT:    csrr a1, vlenb
1083; CHECK-NEXT:    slli a1, a1, 4
1084; CHECK-NEXT:    sub sp, sp, a1
1085; CHECK-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x10, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 16 * vlenb
1086; CHECK-NEXT:    vsetvli a1, zero, e8, m8, ta, ma
1087; CHECK-NEXT:    vmv1r.v v7, v0
1088; CHECK-NEXT:    csrr a1, vlenb
1089; CHECK-NEXT:    slli a1, a1, 3
1090; CHECK-NEXT:    add a1, sp, a1
1091; CHECK-NEXT:    addi a1, a1, 16
1092; CHECK-NEXT:    vs8r.v v8, (a1) # Unknown-size Folded Spill
1093; CHECK-NEXT:    csrr a1, vlenb
1094; CHECK-NEXT:    vlm.v v0, (a2)
1095; CHECK-NEXT:    slli a1, a1, 3
1096; CHECK-NEXT:    add a2, a0, a1
1097; CHECK-NEXT:    sub a4, a3, a1
1098; CHECK-NEXT:    vl8r.v v8, (a2)
1099; CHECK-NEXT:    sltu a2, a3, a4
1100; CHECK-NEXT:    vl8r.v v24, (a0)
1101; CHECK-NEXT:    addi a0, sp, 16
1102; CHECK-NEXT:    vs8r.v v24, (a0) # Unknown-size Folded Spill
1103; CHECK-NEXT:    addi a2, a2, -1
1104; CHECK-NEXT:    and a2, a2, a4
1105; CHECK-NEXT:    vsetvli zero, a2, e8, m8, ta, ma
1106; CHECK-NEXT:    vmseq.vv v6, v16, v8, v0.t
1107; CHECK-NEXT:    bltu a3, a1, .LBB96_2
1108; CHECK-NEXT:  # %bb.1:
1109; CHECK-NEXT:    mv a3, a1
1110; CHECK-NEXT:  .LBB96_2:
1111; CHECK-NEXT:    vmv1r.v v0, v7
1112; CHECK-NEXT:    csrr a0, vlenb
1113; CHECK-NEXT:    slli a0, a0, 3
1114; CHECK-NEXT:    add a0, sp, a0
1115; CHECK-NEXT:    addi a0, a0, 16
1116; CHECK-NEXT:    vl8r.v v8, (a0) # Unknown-size Folded Reload
1117; CHECK-NEXT:    addi a0, sp, 16
1118; CHECK-NEXT:    vl8r.v v24, (a0) # Unknown-size Folded Reload
1119; CHECK-NEXT:    vsetvli zero, a3, e8, m8, ta, ma
1120; CHECK-NEXT:    vmseq.vv v16, v8, v24, v0.t
1121; CHECK-NEXT:    vmv1r.v v0, v16
1122; CHECK-NEXT:    vmv1r.v v8, v6
1123; CHECK-NEXT:    csrr a0, vlenb
1124; CHECK-NEXT:    slli a0, a0, 4
1125; CHECK-NEXT:    add sp, sp, a0
1126; CHECK-NEXT:    .cfi_def_cfa sp, 16
1127; CHECK-NEXT:    addi sp, sp, 16
1128; CHECK-NEXT:    .cfi_def_cfa_offset 0
1129; CHECK-NEXT:    ret
1130  %v = call <vscale x 128 x i1> @llvm.vp.icmp.nxv128i8(<vscale x 128 x i8> %va, <vscale x 128 x i8> %vb, metadata !"eq", <vscale x 128 x i1> %m, i32 %evl)
1131  ret <vscale x 128 x i1> %v
1132}
1133
1134define <vscale x 128 x i1> @icmp_eq_vx_nxv128i8(<vscale x 128 x i8> %va, i8 %b, <vscale x 128 x i1> %m, i32 zeroext %evl) {
1135; CHECK-LABEL: icmp_eq_vx_nxv128i8:
1136; CHECK:       # %bb.0:
1137; CHECK-NEXT:    vsetvli a3, zero, e8, m8, ta, ma
1138; CHECK-NEXT:    vmv1r.v v24, v0
1139; CHECK-NEXT:    vlm.v v0, (a1)
1140; CHECK-NEXT:    csrr a1, vlenb
1141; CHECK-NEXT:    slli a1, a1, 3
1142; CHECK-NEXT:    sub a3, a2, a1
1143; CHECK-NEXT:    sltu a4, a2, a3
1144; CHECK-NEXT:    addi a4, a4, -1
1145; CHECK-NEXT:    and a3, a4, a3
1146; CHECK-NEXT:    vsetvli zero, a3, e8, m8, ta, ma
1147; CHECK-NEXT:    vmseq.vx v25, v16, a0, v0.t
1148; CHECK-NEXT:    bltu a2, a1, .LBB97_2
1149; CHECK-NEXT:  # %bb.1:
1150; CHECK-NEXT:    mv a2, a1
1151; CHECK-NEXT:  .LBB97_2:
1152; CHECK-NEXT:    vmv1r.v v0, v24
1153; CHECK-NEXT:    vsetvli zero, a2, e8, m8, ta, ma
1154; CHECK-NEXT:    vmseq.vx v16, v8, a0, v0.t
1155; CHECK-NEXT:    vmv1r.v v0, v16
1156; CHECK-NEXT:    vmv1r.v v8, v25
1157; CHECK-NEXT:    ret
1158  %elt.head = insertelement <vscale x 128 x i8> poison, i8 %b, i8 0
1159  %vb = shufflevector <vscale x 128 x i8> %elt.head, <vscale x 128 x i8> poison, <vscale x 128 x i32> zeroinitializer
1160  %v = call <vscale x 128 x i1> @llvm.vp.icmp.nxv128i8(<vscale x 128 x i8> %va, <vscale x 128 x i8> %vb, metadata !"eq", <vscale x 128 x i1> %m, i32 %evl)
1161  ret <vscale x 128 x i1> %v
1162}
1163
1164define <vscale x 128 x i1> @icmp_eq_vx_swap_nxv128i8(<vscale x 128 x i8> %va, i8 %b, <vscale x 128 x i1> %m, i32 zeroext %evl) {
1165; CHECK-LABEL: icmp_eq_vx_swap_nxv128i8:
1166; CHECK:       # %bb.0:
1167; CHECK-NEXT:    vsetvli a3, zero, e8, m8, ta, ma
1168; CHECK-NEXT:    vmv1r.v v24, v0
1169; CHECK-NEXT:    vlm.v v0, (a1)
1170; CHECK-NEXT:    csrr a1, vlenb
1171; CHECK-NEXT:    slli a1, a1, 3
1172; CHECK-NEXT:    sub a3, a2, a1
1173; CHECK-NEXT:    sltu a4, a2, a3
1174; CHECK-NEXT:    addi a4, a4, -1
1175; CHECK-NEXT:    and a3, a4, a3
1176; CHECK-NEXT:    vsetvli zero, a3, e8, m8, ta, ma
1177; CHECK-NEXT:    vmseq.vx v25, v16, a0, v0.t
1178; CHECK-NEXT:    bltu a2, a1, .LBB98_2
1179; CHECK-NEXT:  # %bb.1:
1180; CHECK-NEXT:    mv a2, a1
1181; CHECK-NEXT:  .LBB98_2:
1182; CHECK-NEXT:    vmv1r.v v0, v24
1183; CHECK-NEXT:    vsetvli zero, a2, e8, m8, ta, ma
1184; CHECK-NEXT:    vmseq.vx v16, v8, a0, v0.t
1185; CHECK-NEXT:    vmv1r.v v0, v16
1186; CHECK-NEXT:    vmv1r.v v8, v25
1187; CHECK-NEXT:    ret
1188  %elt.head = insertelement <vscale x 128 x i8> poison, i8 %b, i8 0
1189  %vb = shufflevector <vscale x 128 x i8> %elt.head, <vscale x 128 x i8> poison, <vscale x 128 x i32> zeroinitializer
1190  %v = call <vscale x 128 x i1> @llvm.vp.icmp.nxv128i8(<vscale x 128 x i8> %vb, <vscale x 128 x i8> %va, metadata !"eq", <vscale x 128 x i1> %m, i32 %evl)
1191  ret <vscale x 128 x i1> %v
1192}
1193
1194declare <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32>, <vscale x 1 x i32>, metadata, <vscale x 1 x i1>, i32)
1195
1196define <vscale x 1 x i1> @icmp_eq_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1197; CHECK-LABEL: icmp_eq_vv_nxv1i32:
1198; CHECK:       # %bb.0:
1199; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1200; CHECK-NEXT:    vmseq.vv v0, v8, v9, v0.t
1201; CHECK-NEXT:    ret
1202  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
1203  ret <vscale x 1 x i1> %v
1204}
1205
1206define <vscale x 1 x i1> @icmp_eq_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1207; CHECK-LABEL: icmp_eq_vx_nxv1i32:
1208; CHECK:       # %bb.0:
1209; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1210; CHECK-NEXT:    vmseq.vx v0, v8, a0, v0.t
1211; CHECK-NEXT:    ret
1212  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1213  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1214  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
1215  ret <vscale x 1 x i1> %v
1216}
1217
1218define <vscale x 1 x i1> @icmp_eq_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1219; CHECK-LABEL: icmp_eq_vx_swap_nxv1i32:
1220; CHECK:       # %bb.0:
1221; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1222; CHECK-NEXT:    vmseq.vx v0, v8, a0, v0.t
1223; CHECK-NEXT:    ret
1224  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1225  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1226  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
1227  ret <vscale x 1 x i1> %v
1228}
1229
1230define <vscale x 1 x i1> @icmp_eq_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1231; CHECK-LABEL: icmp_eq_vi_nxv1i32:
1232; CHECK:       # %bb.0:
1233; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1234; CHECK-NEXT:    vmseq.vi v0, v8, 4, v0.t
1235; CHECK-NEXT:    ret
1236  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
1237  ret <vscale x 1 x i1> %v
1238}
1239
1240define <vscale x 1 x i1> @icmp_eq_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1241; CHECK-LABEL: icmp_eq_vi_swap_nxv1i32:
1242; CHECK:       # %bb.0:
1243; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1244; CHECK-NEXT:    vmseq.vi v0, v8, 4, v0.t
1245; CHECK-NEXT:    ret
1246  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
1247  ret <vscale x 1 x i1> %v
1248}
1249
1250define <vscale x 1 x i1> @icmp_ne_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1251; CHECK-LABEL: icmp_ne_vv_nxv1i32:
1252; CHECK:       # %bb.0:
1253; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1254; CHECK-NEXT:    vmsne.vv v0, v8, v9, v0.t
1255; CHECK-NEXT:    ret
1256  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
1257  ret <vscale x 1 x i1> %v
1258}
1259
1260define <vscale x 1 x i1> @icmp_ne_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1261; CHECK-LABEL: icmp_ne_vx_nxv1i32:
1262; CHECK:       # %bb.0:
1263; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1264; CHECK-NEXT:    vmsne.vx v0, v8, a0, v0.t
1265; CHECK-NEXT:    ret
1266  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1267  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1268  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
1269  ret <vscale x 1 x i1> %v
1270}
1271
1272define <vscale x 1 x i1> @icmp_ne_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1273; CHECK-LABEL: icmp_ne_vx_swap_nxv1i32:
1274; CHECK:       # %bb.0:
1275; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1276; CHECK-NEXT:    vmsne.vx v0, v8, a0, v0.t
1277; CHECK-NEXT:    ret
1278  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1279  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1280  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
1281  ret <vscale x 1 x i1> %v
1282}
1283
1284define <vscale x 1 x i1> @icmp_ne_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1285; CHECK-LABEL: icmp_ne_vi_nxv1i32:
1286; CHECK:       # %bb.0:
1287; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1288; CHECK-NEXT:    vmsne.vi v0, v8, 4, v0.t
1289; CHECK-NEXT:    ret
1290  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
1291  ret <vscale x 1 x i1> %v
1292}
1293
1294define <vscale x 1 x i1> @icmp_ne_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1295; CHECK-LABEL: icmp_ne_vi_swap_nxv1i32:
1296; CHECK:       # %bb.0:
1297; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1298; CHECK-NEXT:    vmsne.vi v0, v8, 4, v0.t
1299; CHECK-NEXT:    ret
1300  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
1301  ret <vscale x 1 x i1> %v
1302}
1303
1304define <vscale x 1 x i1> @icmp_ugt_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1305; CHECK-LABEL: icmp_ugt_vv_nxv1i32:
1306; CHECK:       # %bb.0:
1307; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1308; CHECK-NEXT:    vmsltu.vv v0, v9, v8, v0.t
1309; CHECK-NEXT:    ret
1310  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
1311  ret <vscale x 1 x i1> %v
1312}
1313
1314define <vscale x 1 x i1> @icmp_ugt_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1315; CHECK-LABEL: icmp_ugt_vx_nxv1i32:
1316; CHECK:       # %bb.0:
1317; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1318; CHECK-NEXT:    vmsgtu.vx v0, v8, a0, v0.t
1319; CHECK-NEXT:    ret
1320  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1321  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1322  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
1323  ret <vscale x 1 x i1> %v
1324}
1325
1326define <vscale x 1 x i1> @icmp_ugt_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1327; CHECK-LABEL: icmp_ugt_vx_swap_nxv1i32:
1328; CHECK:       # %bb.0:
1329; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1330; CHECK-NEXT:    vmsltu.vx v0, v8, a0, v0.t
1331; CHECK-NEXT:    ret
1332  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1333  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1334  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
1335  ret <vscale x 1 x i1> %v
1336}
1337
1338define <vscale x 1 x i1> @icmp_ugt_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1339; CHECK-LABEL: icmp_ugt_vi_nxv1i32:
1340; CHECK:       # %bb.0:
1341; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1342; CHECK-NEXT:    vmsgtu.vi v0, v8, 4, v0.t
1343; CHECK-NEXT:    ret
1344  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
1345  ret <vscale x 1 x i1> %v
1346}
1347
1348define <vscale x 1 x i1> @icmp_ugt_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1349; CHECK-LABEL: icmp_ugt_vi_swap_nxv1i32:
1350; CHECK:       # %bb.0:
1351; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1352; CHECK-NEXT:    vmsleu.vi v0, v8, 3, v0.t
1353; CHECK-NEXT:    ret
1354  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
1355  ret <vscale x 1 x i1> %v
1356}
1357
1358define <vscale x 1 x i1> @icmp_uge_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1359; CHECK-LABEL: icmp_uge_vv_nxv1i32:
1360; CHECK:       # %bb.0:
1361; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1362; CHECK-NEXT:    vmsleu.vv v0, v9, v8, v0.t
1363; CHECK-NEXT:    ret
1364  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
1365  ret <vscale x 1 x i1> %v
1366}
1367
1368define <vscale x 1 x i1> @icmp_uge_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1369; CHECK-LABEL: icmp_uge_vx_nxv1i32:
1370; CHECK:       # %bb.0:
1371; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1372; CHECK-NEXT:    vmv.v.x v9, a0
1373; CHECK-NEXT:    vmsleu.vv v0, v9, v8, v0.t
1374; CHECK-NEXT:    ret
1375  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1376  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1377  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
1378  ret <vscale x 1 x i1> %v
1379}
1380
1381define <vscale x 1 x i1> @icmp_uge_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1382; CHECK-LABEL: icmp_uge_vx_swap_nxv1i32:
1383; CHECK:       # %bb.0:
1384; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1385; CHECK-NEXT:    vmsleu.vx v0, v8, a0, v0.t
1386; CHECK-NEXT:    ret
1387  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1388  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1389  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
1390  ret <vscale x 1 x i1> %v
1391}
1392
1393define <vscale x 1 x i1> @icmp_uge_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1394; CHECK-LABEL: icmp_uge_vi_nxv1i32:
1395; CHECK:       # %bb.0:
1396; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1397; CHECK-NEXT:    vmsgtu.vi v0, v8, 3, v0.t
1398; CHECK-NEXT:    ret
1399  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
1400  ret <vscale x 1 x i1> %v
1401}
1402
1403define <vscale x 1 x i1> @icmp_uge_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1404; CHECK-LABEL: icmp_uge_vi_swap_nxv1i32:
1405; CHECK:       # %bb.0:
1406; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1407; CHECK-NEXT:    vmsleu.vi v0, v8, 4, v0.t
1408; CHECK-NEXT:    ret
1409  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
1410  ret <vscale x 1 x i1> %v
1411}
1412
1413define <vscale x 1 x i1> @icmp_ult_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1414; CHECK-LABEL: icmp_ult_vv_nxv1i32:
1415; CHECK:       # %bb.0:
1416; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1417; CHECK-NEXT:    vmsltu.vv v0, v8, v9, v0.t
1418; CHECK-NEXT:    ret
1419  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
1420  ret <vscale x 1 x i1> %v
1421}
1422
1423define <vscale x 1 x i1> @icmp_ult_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1424; CHECK-LABEL: icmp_ult_vx_nxv1i32:
1425; CHECK:       # %bb.0:
1426; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1427; CHECK-NEXT:    vmsltu.vx v0, v8, a0, v0.t
1428; CHECK-NEXT:    ret
1429  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1430  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1431  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
1432  ret <vscale x 1 x i1> %v
1433}
1434
1435define <vscale x 1 x i1> @icmp_ult_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1436; CHECK-LABEL: icmp_ult_vx_swap_nxv1i32:
1437; CHECK:       # %bb.0:
1438; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1439; CHECK-NEXT:    vmsgtu.vx v0, v8, a0, v0.t
1440; CHECK-NEXT:    ret
1441  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1442  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1443  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
1444  ret <vscale x 1 x i1> %v
1445}
1446
1447define <vscale x 1 x i1> @icmp_ult_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1448; CHECK-LABEL: icmp_ult_vi_nxv1i32:
1449; CHECK:       # %bb.0:
1450; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1451; CHECK-NEXT:    vmsleu.vi v0, v8, 3, v0.t
1452; CHECK-NEXT:    ret
1453  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
1454  ret <vscale x 1 x i1> %v
1455}
1456
1457define <vscale x 1 x i1> @icmp_ult_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1458; CHECK-LABEL: icmp_ult_vi_swap_nxv1i32:
1459; CHECK:       # %bb.0:
1460; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1461; CHECK-NEXT:    vmsgtu.vi v0, v8, 4, v0.t
1462; CHECK-NEXT:    ret
1463  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
1464  ret <vscale x 1 x i1> %v
1465}
1466
1467define <vscale x 1 x i1> @icmp_sgt_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1468; CHECK-LABEL: icmp_sgt_vv_nxv1i32:
1469; CHECK:       # %bb.0:
1470; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1471; CHECK-NEXT:    vmslt.vv v0, v9, v8, v0.t
1472; CHECK-NEXT:    ret
1473  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
1474  ret <vscale x 1 x i1> %v
1475}
1476
1477define <vscale x 1 x i1> @icmp_sgt_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1478; CHECK-LABEL: icmp_sgt_vx_nxv1i32:
1479; CHECK:       # %bb.0:
1480; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1481; CHECK-NEXT:    vmsgt.vx v0, v8, a0, v0.t
1482; CHECK-NEXT:    ret
1483  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1484  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1485  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
1486  ret <vscale x 1 x i1> %v
1487}
1488
1489define <vscale x 1 x i1> @icmp_sgt_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1490; CHECK-LABEL: icmp_sgt_vx_swap_nxv1i32:
1491; CHECK:       # %bb.0:
1492; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1493; CHECK-NEXT:    vmslt.vx v0, v8, a0, v0.t
1494; CHECK-NEXT:    ret
1495  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1496  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1497  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
1498  ret <vscale x 1 x i1> %v
1499}
1500
1501define <vscale x 1 x i1> @icmp_sgt_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1502; CHECK-LABEL: icmp_sgt_vi_nxv1i32:
1503; CHECK:       # %bb.0:
1504; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1505; CHECK-NEXT:    vmsgt.vi v0, v8, 4, v0.t
1506; CHECK-NEXT:    ret
1507  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
1508  ret <vscale x 1 x i1> %v
1509}
1510
1511define <vscale x 1 x i1> @icmp_sgt_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1512; CHECK-LABEL: icmp_sgt_vi_swap_nxv1i32:
1513; CHECK:       # %bb.0:
1514; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1515; CHECK-NEXT:    vmsle.vi v0, v8, 3, v0.t
1516; CHECK-NEXT:    ret
1517  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
1518  ret <vscale x 1 x i1> %v
1519}
1520
1521define <vscale x 1 x i1> @icmp_sge_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1522; CHECK-LABEL: icmp_sge_vv_nxv1i32:
1523; CHECK:       # %bb.0:
1524; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1525; CHECK-NEXT:    vmsle.vv v0, v9, v8, v0.t
1526; CHECK-NEXT:    ret
1527  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
1528  ret <vscale x 1 x i1> %v
1529}
1530
1531define <vscale x 1 x i1> @icmp_sge_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1532; CHECK-LABEL: icmp_sge_vx_nxv1i32:
1533; CHECK:       # %bb.0:
1534; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1535; CHECK-NEXT:    vmv.v.x v9, a0
1536; CHECK-NEXT:    vmsle.vv v0, v9, v8, v0.t
1537; CHECK-NEXT:    ret
1538  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1539  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1540  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
1541  ret <vscale x 1 x i1> %v
1542}
1543
1544define <vscale x 1 x i1> @icmp_sge_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1545; CHECK-LABEL: icmp_sge_vx_swap_nxv1i32:
1546; CHECK:       # %bb.0:
1547; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1548; CHECK-NEXT:    vmsle.vx v0, v8, a0, v0.t
1549; CHECK-NEXT:    ret
1550  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1551  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1552  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
1553  ret <vscale x 1 x i1> %v
1554}
1555
1556define <vscale x 1 x i1> @icmp_sge_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1557; CHECK-LABEL: icmp_sge_vi_nxv1i32:
1558; CHECK:       # %bb.0:
1559; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1560; CHECK-NEXT:    vmsgt.vi v0, v8, 3, v0.t
1561; CHECK-NEXT:    ret
1562  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
1563  ret <vscale x 1 x i1> %v
1564}
1565
1566define <vscale x 1 x i1> @icmp_sge_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1567; CHECK-LABEL: icmp_sge_vi_swap_nxv1i32:
1568; CHECK:       # %bb.0:
1569; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1570; CHECK-NEXT:    vmsle.vi v0, v8, 4, v0.t
1571; CHECK-NEXT:    ret
1572  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
1573  ret <vscale x 1 x i1> %v
1574}
1575
1576define <vscale x 1 x i1> @icmp_slt_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1577; CHECK-LABEL: icmp_slt_vv_nxv1i32:
1578; CHECK:       # %bb.0:
1579; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1580; CHECK-NEXT:    vmslt.vv v0, v8, v9, v0.t
1581; CHECK-NEXT:    ret
1582  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
1583  ret <vscale x 1 x i1> %v
1584}
1585
1586define <vscale x 1 x i1> @icmp_slt_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1587; CHECK-LABEL: icmp_slt_vx_nxv1i32:
1588; CHECK:       # %bb.0:
1589; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1590; CHECK-NEXT:    vmslt.vx v0, v8, a0, v0.t
1591; CHECK-NEXT:    ret
1592  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1593  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1594  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
1595  ret <vscale x 1 x i1> %v
1596}
1597
1598define <vscale x 1 x i1> @icmp_slt_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1599; CHECK-LABEL: icmp_slt_vx_swap_nxv1i32:
1600; CHECK:       # %bb.0:
1601; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1602; CHECK-NEXT:    vmsgt.vx v0, v8, a0, v0.t
1603; CHECK-NEXT:    ret
1604  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1605  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1606  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
1607  ret <vscale x 1 x i1> %v
1608}
1609
1610define <vscale x 1 x i1> @icmp_slt_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1611; CHECK-LABEL: icmp_slt_vi_nxv1i32:
1612; CHECK:       # %bb.0:
1613; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1614; CHECK-NEXT:    vmsle.vi v0, v8, 3, v0.t
1615; CHECK-NEXT:    ret
1616  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
1617  ret <vscale x 1 x i1> %v
1618}
1619
1620define <vscale x 1 x i1> @icmp_slt_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1621; CHECK-LABEL: icmp_slt_vi_swap_nxv1i32:
1622; CHECK:       # %bb.0:
1623; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1624; CHECK-NEXT:    vmsgt.vi v0, v8, 4, v0.t
1625; CHECK-NEXT:    ret
1626  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
1627  ret <vscale x 1 x i1> %v
1628}
1629
1630define <vscale x 1 x i1> @icmp_sle_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1631; CHECK-LABEL: icmp_sle_vv_nxv1i32:
1632; CHECK:       # %bb.0:
1633; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1634; CHECK-NEXT:    vmsle.vv v0, v8, v9, v0.t
1635; CHECK-NEXT:    ret
1636  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
1637  ret <vscale x 1 x i1> %v
1638}
1639
1640define <vscale x 1 x i1> @icmp_sle_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1641; CHECK-LABEL: icmp_sle_vx_nxv1i32:
1642; CHECK:       # %bb.0:
1643; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1644; CHECK-NEXT:    vmsle.vx v0, v8, a0, v0.t
1645; CHECK-NEXT:    ret
1646  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1647  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1648  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
1649  ret <vscale x 1 x i1> %v
1650}
1651
1652define <vscale x 1 x i1> @icmp_sle_vx_swap_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1653; CHECK-LABEL: icmp_sle_vx_swap_nxv1i32:
1654; CHECK:       # %bb.0:
1655; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1656; CHECK-NEXT:    vmv.v.x v9, a0
1657; CHECK-NEXT:    vmsle.vv v0, v9, v8, v0.t
1658; CHECK-NEXT:    ret
1659  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1660  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1661  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %vb, <vscale x 1 x i32> %va, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
1662  ret <vscale x 1 x i1> %v
1663}
1664
1665define <vscale x 1 x i1> @icmp_sle_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1666; CHECK-LABEL: icmp_sle_vi_nxv1i32:
1667; CHECK:       # %bb.0:
1668; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1669; CHECK-NEXT:    vmsle.vi v0, v8, 4, v0.t
1670; CHECK-NEXT:    ret
1671  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 4), metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
1672  ret <vscale x 1 x i1> %v
1673}
1674
1675define <vscale x 1 x i1> @icmp_sle_vi_swap_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1676; CHECK-LABEL: icmp_sle_vi_swap_nxv1i32:
1677; CHECK:       # %bb.0:
1678; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1679; CHECK-NEXT:    vmsgt.vi v0, v8, 3, v0.t
1680; CHECK-NEXT:    ret
1681  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i32(<vscale x 1 x i32> splat (i32 4), <vscale x 1 x i32> %va, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
1682  ret <vscale x 1 x i1> %v
1683}
1684
1685declare <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32>, <vscale x 8 x i32>, metadata, <vscale x 8 x i1>, i32)
1686
1687define <vscale x 8 x i1> @icmp_eq_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1688; CHECK-LABEL: icmp_eq_vv_nxv8i32:
1689; CHECK:       # %bb.0:
1690; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1691; CHECK-NEXT:    vmseq.vv v16, v8, v12, v0.t
1692; CHECK-NEXT:    vmv1r.v v0, v16
1693; CHECK-NEXT:    ret
1694  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
1695  ret <vscale x 8 x i1> %v
1696}
1697
1698define <vscale x 8 x i1> @icmp_eq_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1699; CHECK-LABEL: icmp_eq_vx_nxv8i32:
1700; CHECK:       # %bb.0:
1701; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1702; CHECK-NEXT:    vmseq.vx v12, v8, a0, v0.t
1703; CHECK-NEXT:    vmv1r.v v0, v12
1704; CHECK-NEXT:    ret
1705  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1706  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1707  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
1708  ret <vscale x 8 x i1> %v
1709}
1710
1711define <vscale x 8 x i1> @icmp_eq_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1712; CHECK-LABEL: icmp_eq_vx_swap_nxv8i32:
1713; CHECK:       # %bb.0:
1714; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1715; CHECK-NEXT:    vmseq.vx v12, v8, a0, v0.t
1716; CHECK-NEXT:    vmv1r.v v0, v12
1717; CHECK-NEXT:    ret
1718  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1719  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1720  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
1721  ret <vscale x 8 x i1> %v
1722}
1723
1724define <vscale x 8 x i1> @icmp_eq_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1725; CHECK-LABEL: icmp_eq_vi_nxv8i32:
1726; CHECK:       # %bb.0:
1727; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1728; CHECK-NEXT:    vmseq.vi v12, v8, 4, v0.t
1729; CHECK-NEXT:    vmv1r.v v0, v12
1730; CHECK-NEXT:    ret
1731  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
1732  ret <vscale x 8 x i1> %v
1733}
1734
1735define <vscale x 8 x i1> @icmp_eq_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1736; CHECK-LABEL: icmp_eq_vi_swap_nxv8i32:
1737; CHECK:       # %bb.0:
1738; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1739; CHECK-NEXT:    vmseq.vi v12, v8, 4, v0.t
1740; CHECK-NEXT:    vmv1r.v v0, v12
1741; CHECK-NEXT:    ret
1742  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
1743  ret <vscale x 8 x i1> %v
1744}
1745
1746define <vscale x 8 x i1> @icmp_ne_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1747; CHECK-LABEL: icmp_ne_vv_nxv8i32:
1748; CHECK:       # %bb.0:
1749; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1750; CHECK-NEXT:    vmsne.vv v16, v8, v12, v0.t
1751; CHECK-NEXT:    vmv1r.v v0, v16
1752; CHECK-NEXT:    ret
1753  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
1754  ret <vscale x 8 x i1> %v
1755}
1756
1757define <vscale x 8 x i1> @icmp_ne_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1758; CHECK-LABEL: icmp_ne_vx_nxv8i32:
1759; CHECK:       # %bb.0:
1760; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1761; CHECK-NEXT:    vmsne.vx v12, v8, a0, v0.t
1762; CHECK-NEXT:    vmv1r.v v0, v12
1763; CHECK-NEXT:    ret
1764  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1765  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1766  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
1767  ret <vscale x 8 x i1> %v
1768}
1769
1770define <vscale x 8 x i1> @icmp_ne_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1771; CHECK-LABEL: icmp_ne_vx_swap_nxv8i32:
1772; CHECK:       # %bb.0:
1773; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1774; CHECK-NEXT:    vmsne.vx v12, v8, a0, v0.t
1775; CHECK-NEXT:    vmv1r.v v0, v12
1776; CHECK-NEXT:    ret
1777  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1778  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1779  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
1780  ret <vscale x 8 x i1> %v
1781}
1782
1783define <vscale x 8 x i1> @icmp_ne_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1784; CHECK-LABEL: icmp_ne_vi_nxv8i32:
1785; CHECK:       # %bb.0:
1786; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1787; CHECK-NEXT:    vmsne.vi v12, v8, 4, v0.t
1788; CHECK-NEXT:    vmv1r.v v0, v12
1789; CHECK-NEXT:    ret
1790  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
1791  ret <vscale x 8 x i1> %v
1792}
1793
1794define <vscale x 8 x i1> @icmp_ne_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1795; CHECK-LABEL: icmp_ne_vi_swap_nxv8i32:
1796; CHECK:       # %bb.0:
1797; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1798; CHECK-NEXT:    vmsne.vi v12, v8, 4, v0.t
1799; CHECK-NEXT:    vmv1r.v v0, v12
1800; CHECK-NEXT:    ret
1801  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
1802  ret <vscale x 8 x i1> %v
1803}
1804
1805define <vscale x 8 x i1> @icmp_ugt_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1806; CHECK-LABEL: icmp_ugt_vv_nxv8i32:
1807; CHECK:       # %bb.0:
1808; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1809; CHECK-NEXT:    vmsltu.vv v16, v12, v8, v0.t
1810; CHECK-NEXT:    vmv1r.v v0, v16
1811; CHECK-NEXT:    ret
1812  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
1813  ret <vscale x 8 x i1> %v
1814}
1815
1816define <vscale x 8 x i1> @icmp_ugt_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1817; CHECK-LABEL: icmp_ugt_vx_nxv8i32:
1818; CHECK:       # %bb.0:
1819; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1820; CHECK-NEXT:    vmsgtu.vx v12, v8, a0, v0.t
1821; CHECK-NEXT:    vmv1r.v v0, v12
1822; CHECK-NEXT:    ret
1823  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1824  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1825  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
1826  ret <vscale x 8 x i1> %v
1827}
1828
1829define <vscale x 8 x i1> @icmp_ugt_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1830; CHECK-LABEL: icmp_ugt_vx_swap_nxv8i32:
1831; CHECK:       # %bb.0:
1832; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1833; CHECK-NEXT:    vmsltu.vx v12, v8, a0, v0.t
1834; CHECK-NEXT:    vmv1r.v v0, v12
1835; CHECK-NEXT:    ret
1836  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1837  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1838  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
1839  ret <vscale x 8 x i1> %v
1840}
1841
1842define <vscale x 8 x i1> @icmp_ugt_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1843; CHECK-LABEL: icmp_ugt_vi_nxv8i32:
1844; CHECK:       # %bb.0:
1845; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1846; CHECK-NEXT:    vmsgtu.vi v12, v8, 4, v0.t
1847; CHECK-NEXT:    vmv1r.v v0, v12
1848; CHECK-NEXT:    ret
1849  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
1850  ret <vscale x 8 x i1> %v
1851}
1852
1853define <vscale x 8 x i1> @icmp_ugt_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1854; CHECK-LABEL: icmp_ugt_vi_swap_nxv8i32:
1855; CHECK:       # %bb.0:
1856; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1857; CHECK-NEXT:    vmsleu.vi v12, v8, 3, v0.t
1858; CHECK-NEXT:    vmv1r.v v0, v12
1859; CHECK-NEXT:    ret
1860  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
1861  ret <vscale x 8 x i1> %v
1862}
1863
1864define <vscale x 8 x i1> @icmp_uge_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1865; CHECK-LABEL: icmp_uge_vv_nxv8i32:
1866; CHECK:       # %bb.0:
1867; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1868; CHECK-NEXT:    vmsleu.vv v16, v12, v8, v0.t
1869; CHECK-NEXT:    vmv1r.v v0, v16
1870; CHECK-NEXT:    ret
1871  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
1872  ret <vscale x 8 x i1> %v
1873}
1874
1875define <vscale x 8 x i1> @icmp_uge_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1876; CHECK-LABEL: icmp_uge_vx_nxv8i32:
1877; CHECK:       # %bb.0:
1878; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1879; CHECK-NEXT:    vmv.v.x v16, a0
1880; CHECK-NEXT:    vmsleu.vv v12, v16, v8, v0.t
1881; CHECK-NEXT:    vmv1r.v v0, v12
1882; CHECK-NEXT:    ret
1883  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1884  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1885  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
1886  ret <vscale x 8 x i1> %v
1887}
1888
1889define <vscale x 8 x i1> @icmp_uge_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1890; CHECK-LABEL: icmp_uge_vx_swap_nxv8i32:
1891; CHECK:       # %bb.0:
1892; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1893; CHECK-NEXT:    vmsleu.vx v12, v8, a0, v0.t
1894; CHECK-NEXT:    vmv1r.v v0, v12
1895; CHECK-NEXT:    ret
1896  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1897  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1898  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
1899  ret <vscale x 8 x i1> %v
1900}
1901
1902define <vscale x 8 x i1> @icmp_uge_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1903; CHECK-LABEL: icmp_uge_vi_nxv8i32:
1904; CHECK:       # %bb.0:
1905; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1906; CHECK-NEXT:    vmsgtu.vi v12, v8, 3, v0.t
1907; CHECK-NEXT:    vmv1r.v v0, v12
1908; CHECK-NEXT:    ret
1909  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
1910  ret <vscale x 8 x i1> %v
1911}
1912
1913define <vscale x 8 x i1> @icmp_uge_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1914; CHECK-LABEL: icmp_uge_vi_swap_nxv8i32:
1915; CHECK:       # %bb.0:
1916; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1917; CHECK-NEXT:    vmsleu.vi v12, v8, 4, v0.t
1918; CHECK-NEXT:    vmv1r.v v0, v12
1919; CHECK-NEXT:    ret
1920  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
1921  ret <vscale x 8 x i1> %v
1922}
1923
1924define <vscale x 8 x i1> @icmp_ult_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1925; CHECK-LABEL: icmp_ult_vv_nxv8i32:
1926; CHECK:       # %bb.0:
1927; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1928; CHECK-NEXT:    vmsltu.vv v16, v8, v12, v0.t
1929; CHECK-NEXT:    vmv1r.v v0, v16
1930; CHECK-NEXT:    ret
1931  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
1932  ret <vscale x 8 x i1> %v
1933}
1934
1935define <vscale x 8 x i1> @icmp_ult_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1936; CHECK-LABEL: icmp_ult_vx_nxv8i32:
1937; CHECK:       # %bb.0:
1938; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1939; CHECK-NEXT:    vmsltu.vx v12, v8, a0, v0.t
1940; CHECK-NEXT:    vmv1r.v v0, v12
1941; CHECK-NEXT:    ret
1942  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1943  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1944  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
1945  ret <vscale x 8 x i1> %v
1946}
1947
1948define <vscale x 8 x i1> @icmp_ult_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1949; CHECK-LABEL: icmp_ult_vx_swap_nxv8i32:
1950; CHECK:       # %bb.0:
1951; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1952; CHECK-NEXT:    vmsgtu.vx v12, v8, a0, v0.t
1953; CHECK-NEXT:    vmv1r.v v0, v12
1954; CHECK-NEXT:    ret
1955  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1956  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1957  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
1958  ret <vscale x 8 x i1> %v
1959}
1960
1961define <vscale x 8 x i1> @icmp_ult_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1962; CHECK-LABEL: icmp_ult_vi_nxv8i32:
1963; CHECK:       # %bb.0:
1964; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1965; CHECK-NEXT:    vmsleu.vi v12, v8, 3, v0.t
1966; CHECK-NEXT:    vmv1r.v v0, v12
1967; CHECK-NEXT:    ret
1968  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
1969  ret <vscale x 8 x i1> %v
1970}
1971
1972define <vscale x 8 x i1> @icmp_ult_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1973; CHECK-LABEL: icmp_ult_vi_swap_nxv8i32:
1974; CHECK:       # %bb.0:
1975; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1976; CHECK-NEXT:    vmsgtu.vi v12, v8, 4, v0.t
1977; CHECK-NEXT:    vmv1r.v v0, v12
1978; CHECK-NEXT:    ret
1979  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
1980  ret <vscale x 8 x i1> %v
1981}
1982
1983define <vscale x 8 x i1> @icmp_sgt_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1984; CHECK-LABEL: icmp_sgt_vv_nxv8i32:
1985; CHECK:       # %bb.0:
1986; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1987; CHECK-NEXT:    vmslt.vv v16, v12, v8, v0.t
1988; CHECK-NEXT:    vmv1r.v v0, v16
1989; CHECK-NEXT:    ret
1990  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
1991  ret <vscale x 8 x i1> %v
1992}
1993
1994define <vscale x 8 x i1> @icmp_sgt_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1995; CHECK-LABEL: icmp_sgt_vx_nxv8i32:
1996; CHECK:       # %bb.0:
1997; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1998; CHECK-NEXT:    vmsgt.vx v12, v8, a0, v0.t
1999; CHECK-NEXT:    vmv1r.v v0, v12
2000; CHECK-NEXT:    ret
2001  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
2002  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
2003  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
2004  ret <vscale x 8 x i1> %v
2005}
2006
2007define <vscale x 8 x i1> @icmp_sgt_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2008; CHECK-LABEL: icmp_sgt_vx_swap_nxv8i32:
2009; CHECK:       # %bb.0:
2010; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
2011; CHECK-NEXT:    vmslt.vx v12, v8, a0, v0.t
2012; CHECK-NEXT:    vmv1r.v v0, v12
2013; CHECK-NEXT:    ret
2014  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
2015  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
2016  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
2017  ret <vscale x 8 x i1> %v
2018}
2019
2020define <vscale x 8 x i1> @icmp_sgt_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2021; CHECK-LABEL: icmp_sgt_vi_nxv8i32:
2022; CHECK:       # %bb.0:
2023; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2024; CHECK-NEXT:    vmsgt.vi v12, v8, 4, v0.t
2025; CHECK-NEXT:    vmv1r.v v0, v12
2026; CHECK-NEXT:    ret
2027  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
2028  ret <vscale x 8 x i1> %v
2029}
2030
2031define <vscale x 8 x i1> @icmp_sgt_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2032; CHECK-LABEL: icmp_sgt_vi_swap_nxv8i32:
2033; CHECK:       # %bb.0:
2034; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2035; CHECK-NEXT:    vmsle.vi v12, v8, 3, v0.t
2036; CHECK-NEXT:    vmv1r.v v0, v12
2037; CHECK-NEXT:    ret
2038  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
2039  ret <vscale x 8 x i1> %v
2040}
2041
2042define <vscale x 8 x i1> @icmp_sge_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2043; CHECK-LABEL: icmp_sge_vv_nxv8i32:
2044; CHECK:       # %bb.0:
2045; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2046; CHECK-NEXT:    vmsle.vv v16, v12, v8, v0.t
2047; CHECK-NEXT:    vmv1r.v v0, v16
2048; CHECK-NEXT:    ret
2049  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
2050  ret <vscale x 8 x i1> %v
2051}
2052
2053define <vscale x 8 x i1> @icmp_sge_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2054; CHECK-LABEL: icmp_sge_vx_nxv8i32:
2055; CHECK:       # %bb.0:
2056; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
2057; CHECK-NEXT:    vmv.v.x v16, a0
2058; CHECK-NEXT:    vmsle.vv v12, v16, v8, v0.t
2059; CHECK-NEXT:    vmv1r.v v0, v12
2060; CHECK-NEXT:    ret
2061  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
2062  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
2063  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
2064  ret <vscale x 8 x i1> %v
2065}
2066
2067define <vscale x 8 x i1> @icmp_sge_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2068; CHECK-LABEL: icmp_sge_vx_swap_nxv8i32:
2069; CHECK:       # %bb.0:
2070; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
2071; CHECK-NEXT:    vmsle.vx v12, v8, a0, v0.t
2072; CHECK-NEXT:    vmv1r.v v0, v12
2073; CHECK-NEXT:    ret
2074  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
2075  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
2076  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
2077  ret <vscale x 8 x i1> %v
2078}
2079
2080define <vscale x 8 x i1> @icmp_sge_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2081; CHECK-LABEL: icmp_sge_vi_nxv8i32:
2082; CHECK:       # %bb.0:
2083; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2084; CHECK-NEXT:    vmsgt.vi v12, v8, 3, v0.t
2085; CHECK-NEXT:    vmv1r.v v0, v12
2086; CHECK-NEXT:    ret
2087  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
2088  ret <vscale x 8 x i1> %v
2089}
2090
2091define <vscale x 8 x i1> @icmp_sge_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2092; CHECK-LABEL: icmp_sge_vi_swap_nxv8i32:
2093; CHECK:       # %bb.0:
2094; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2095; CHECK-NEXT:    vmsle.vi v12, v8, 4, v0.t
2096; CHECK-NEXT:    vmv1r.v v0, v12
2097; CHECK-NEXT:    ret
2098  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
2099  ret <vscale x 8 x i1> %v
2100}
2101
2102define <vscale x 8 x i1> @icmp_slt_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2103; CHECK-LABEL: icmp_slt_vv_nxv8i32:
2104; CHECK:       # %bb.0:
2105; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2106; CHECK-NEXT:    vmslt.vv v16, v8, v12, v0.t
2107; CHECK-NEXT:    vmv1r.v v0, v16
2108; CHECK-NEXT:    ret
2109  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
2110  ret <vscale x 8 x i1> %v
2111}
2112
2113define <vscale x 8 x i1> @icmp_slt_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2114; CHECK-LABEL: icmp_slt_vx_nxv8i32:
2115; CHECK:       # %bb.0:
2116; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
2117; CHECK-NEXT:    vmslt.vx v12, v8, a0, v0.t
2118; CHECK-NEXT:    vmv1r.v v0, v12
2119; CHECK-NEXT:    ret
2120  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
2121  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
2122  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
2123  ret <vscale x 8 x i1> %v
2124}
2125
2126define <vscale x 8 x i1> @icmp_slt_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2127; CHECK-LABEL: icmp_slt_vx_swap_nxv8i32:
2128; CHECK:       # %bb.0:
2129; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
2130; CHECK-NEXT:    vmsgt.vx v12, v8, a0, v0.t
2131; CHECK-NEXT:    vmv1r.v v0, v12
2132; CHECK-NEXT:    ret
2133  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
2134  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
2135  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
2136  ret <vscale x 8 x i1> %v
2137}
2138
2139define <vscale x 8 x i1> @icmp_slt_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2140; CHECK-LABEL: icmp_slt_vi_nxv8i32:
2141; CHECK:       # %bb.0:
2142; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2143; CHECK-NEXT:    vmsle.vi v12, v8, 3, v0.t
2144; CHECK-NEXT:    vmv1r.v v0, v12
2145; CHECK-NEXT:    ret
2146  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
2147  ret <vscale x 8 x i1> %v
2148}
2149
2150define <vscale x 8 x i1> @icmp_slt_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2151; CHECK-LABEL: icmp_slt_vi_swap_nxv8i32:
2152; CHECK:       # %bb.0:
2153; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2154; CHECK-NEXT:    vmsgt.vi v12, v8, 4, v0.t
2155; CHECK-NEXT:    vmv1r.v v0, v12
2156; CHECK-NEXT:    ret
2157  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
2158  ret <vscale x 8 x i1> %v
2159}
2160
2161define <vscale x 8 x i1> @icmp_sle_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2162; CHECK-LABEL: icmp_sle_vv_nxv8i32:
2163; CHECK:       # %bb.0:
2164; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2165; CHECK-NEXT:    vmsle.vv v16, v8, v12, v0.t
2166; CHECK-NEXT:    vmv1r.v v0, v16
2167; CHECK-NEXT:    ret
2168  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
2169  ret <vscale x 8 x i1> %v
2170}
2171
2172define <vscale x 8 x i1> @icmp_sle_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2173; CHECK-LABEL: icmp_sle_vx_nxv8i32:
2174; CHECK:       # %bb.0:
2175; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
2176; CHECK-NEXT:    vmsle.vx v12, v8, a0, v0.t
2177; CHECK-NEXT:    vmv1r.v v0, v12
2178; CHECK-NEXT:    ret
2179  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
2180  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
2181  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
2182  ret <vscale x 8 x i1> %v
2183}
2184
2185define <vscale x 8 x i1> @icmp_sle_vx_swap_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2186; CHECK-LABEL: icmp_sle_vx_swap_nxv8i32:
2187; CHECK:       # %bb.0:
2188; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
2189; CHECK-NEXT:    vmv.v.x v16, a0
2190; CHECK-NEXT:    vmsle.vv v12, v16, v8, v0.t
2191; CHECK-NEXT:    vmv1r.v v0, v12
2192; CHECK-NEXT:    ret
2193  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
2194  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
2195  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %vb, <vscale x 8 x i32> %va, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
2196  ret <vscale x 8 x i1> %v
2197}
2198
2199define <vscale x 8 x i1> @icmp_sle_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2200; CHECK-LABEL: icmp_sle_vi_nxv8i32:
2201; CHECK:       # %bb.0:
2202; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2203; CHECK-NEXT:    vmsle.vi v12, v8, 4, v0.t
2204; CHECK-NEXT:    vmv1r.v v0, v12
2205; CHECK-NEXT:    ret
2206  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 4), metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
2207  ret <vscale x 8 x i1> %v
2208}
2209
2210define <vscale x 8 x i1> @icmp_sle_vi_swap_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
2211; CHECK-LABEL: icmp_sle_vi_swap_nxv8i32:
2212; CHECK:       # %bb.0:
2213; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
2214; CHECK-NEXT:    vmsgt.vi v12, v8, 3, v0.t
2215; CHECK-NEXT:    vmv1r.v v0, v12
2216; CHECK-NEXT:    ret
2217  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i32(<vscale x 8 x i32> splat (i32 4), <vscale x 8 x i32> %va, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
2218  ret <vscale x 8 x i1> %v
2219}
2220
2221declare <vscale x 32 x i1> @llvm.vp.icmp.nxv32i32(<vscale x 32 x i32>, <vscale x 32 x i32>, metadata, <vscale x 32 x i1>, i32)
2222
2223define <vscale x 32 x i1> @icmp_eq_vv_nxv32i32(<vscale x 32 x i32> %va, <vscale x 32 x i32> %vb, <vscale x 32 x i1> %m, i32 zeroext %evl) {
2224; CHECK-LABEL: icmp_eq_vv_nxv32i32:
2225; CHECK:       # %bb.0:
2226; CHECK-NEXT:    addi sp, sp, -16
2227; CHECK-NEXT:    .cfi_def_cfa_offset 16
2228; CHECK-NEXT:    csrr a1, vlenb
2229; CHECK-NEXT:    slli a1, a1, 4
2230; CHECK-NEXT:    sub sp, sp, a1
2231; CHECK-NEXT:    .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x10, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 16 * vlenb
2232; CHECK-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma
2233; CHECK-NEXT:    vmv1r.v v24, v0
2234; CHECK-NEXT:    csrr a1, vlenb
2235; CHECK-NEXT:    slli a1, a1, 3
2236; CHECK-NEXT:    add a1, sp, a1
2237; CHECK-NEXT:    addi a1, a1, 16
2238; CHECK-NEXT:    vs8r.v v8, (a1) # Unknown-size Folded Spill
2239; CHECK-NEXT:    csrr a3, vlenb
2240; CHECK-NEXT:    srli a1, a3, 2
2241; CHECK-NEXT:    slli a4, a3, 3
2242; CHECK-NEXT:    slli a3, a3, 1
2243; CHECK-NEXT:    add a4, a0, a4
2244; CHECK-NEXT:    sub a5, a2, a3
2245; CHECK-NEXT:    vl8re32.v v8, (a4)
2246; CHECK-NEXT:    sltu a4, a2, a5
2247; CHECK-NEXT:    addi a4, a4, -1
2248; CHECK-NEXT:    vl8re32.v v0, (a0)
2249; CHECK-NEXT:    addi a0, sp, 16
2250; CHECK-NEXT:    vs8r.v v0, (a0) # Unknown-size Folded Spill
2251; CHECK-NEXT:    vslidedown.vx v0, v24, a1
2252; CHECK-NEXT:    and a4, a4, a5
2253; CHECK-NEXT:    vsetvli zero, a4, e32, m8, ta, ma
2254; CHECK-NEXT:    vmseq.vv v7, v16, v8, v0.t
2255; CHECK-NEXT:    bltu a2, a3, .LBB189_2
2256; CHECK-NEXT:  # %bb.1:
2257; CHECK-NEXT:    mv a2, a3
2258; CHECK-NEXT:  .LBB189_2:
2259; CHECK-NEXT:    vmv1r.v v0, v24
2260; CHECK-NEXT:    csrr a0, vlenb
2261; CHECK-NEXT:    slli a0, a0, 3
2262; CHECK-NEXT:    add a0, sp, a0
2263; CHECK-NEXT:    addi a0, a0, 16
2264; CHECK-NEXT:    vl8r.v v8, (a0) # Unknown-size Folded Reload
2265; CHECK-NEXT:    addi a0, sp, 16
2266; CHECK-NEXT:    vl8r.v v24, (a0) # Unknown-size Folded Reload
2267; CHECK-NEXT:    vsetvli zero, a2, e32, m8, ta, ma
2268; CHECK-NEXT:    vmseq.vv v16, v8, v24, v0.t
2269; CHECK-NEXT:    add a0, a1, a1
2270; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
2271; CHECK-NEXT:    vslideup.vx v16, v7, a1
2272; CHECK-NEXT:    vmv1r.v v0, v16
2273; CHECK-NEXT:    csrr a0, vlenb
2274; CHECK-NEXT:    slli a0, a0, 4
2275; CHECK-NEXT:    add sp, sp, a0
2276; CHECK-NEXT:    .cfi_def_cfa sp, 16
2277; CHECK-NEXT:    addi sp, sp, 16
2278; CHECK-NEXT:    .cfi_def_cfa_offset 0
2279; CHECK-NEXT:    ret
2280  %v = call <vscale x 32 x i1> @llvm.vp.icmp.nxv32i32(<vscale x 32 x i32> %va, <vscale x 32 x i32> %vb, metadata !"eq", <vscale x 32 x i1> %m, i32 %evl)
2281  ret <vscale x 32 x i1> %v
2282}
2283
2284define <vscale x 32 x i1> @icmp_eq_vx_nxv32i32(<vscale x 32 x i32> %va, i32 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
2285; CHECK-LABEL: icmp_eq_vx_nxv32i32:
2286; CHECK:       # %bb.0:
2287; CHECK-NEXT:    vsetvli a2, zero, e8, mf2, ta, ma
2288; CHECK-NEXT:    vmv1r.v v24, v0
2289; CHECK-NEXT:    csrr a3, vlenb
2290; CHECK-NEXT:    srli a2, a3, 2
2291; CHECK-NEXT:    slli a3, a3, 1
2292; CHECK-NEXT:    vslidedown.vx v0, v0, a2
2293; CHECK-NEXT:    sub a4, a1, a3
2294; CHECK-NEXT:    sltu a5, a1, a4
2295; CHECK-NEXT:    addi a5, a5, -1
2296; CHECK-NEXT:    and a4, a5, a4
2297; CHECK-NEXT:    vsetvli zero, a4, e32, m8, ta, ma
2298; CHECK-NEXT:    vmseq.vx v25, v16, a0, v0.t
2299; CHECK-NEXT:    bltu a1, a3, .LBB190_2
2300; CHECK-NEXT:  # %bb.1:
2301; CHECK-NEXT:    mv a1, a3
2302; CHECK-NEXT:  .LBB190_2:
2303; CHECK-NEXT:    vmv1r.v v0, v24
2304; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
2305; CHECK-NEXT:    vmseq.vx v16, v8, a0, v0.t
2306; CHECK-NEXT:    add a0, a2, a2
2307; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
2308; CHECK-NEXT:    vslideup.vx v16, v25, a2
2309; CHECK-NEXT:    vmv1r.v v0, v16
2310; CHECK-NEXT:    ret
2311  %elt.head = insertelement <vscale x 32 x i32> poison, i32 %b, i32 0
2312  %vb = shufflevector <vscale x 32 x i32> %elt.head, <vscale x 32 x i32> poison, <vscale x 32 x i32> zeroinitializer
2313  %v = call <vscale x 32 x i1> @llvm.vp.icmp.nxv32i32(<vscale x 32 x i32> %va, <vscale x 32 x i32> %vb, metadata !"eq", <vscale x 32 x i1> %m, i32 %evl)
2314  ret <vscale x 32 x i1> %v
2315}
2316
2317define <vscale x 32 x i1> @icmp_eq_vx_swap_nxv32i32(<vscale x 32 x i32> %va, i32 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
2318; CHECK-LABEL: icmp_eq_vx_swap_nxv32i32:
2319; CHECK:       # %bb.0:
2320; CHECK-NEXT:    vsetvli a2, zero, e8, mf2, ta, ma
2321; CHECK-NEXT:    vmv1r.v v24, v0
2322; CHECK-NEXT:    csrr a3, vlenb
2323; CHECK-NEXT:    srli a2, a3, 2
2324; CHECK-NEXT:    slli a3, a3, 1
2325; CHECK-NEXT:    vslidedown.vx v0, v0, a2
2326; CHECK-NEXT:    sub a4, a1, a3
2327; CHECK-NEXT:    sltu a5, a1, a4
2328; CHECK-NEXT:    addi a5, a5, -1
2329; CHECK-NEXT:    and a4, a5, a4
2330; CHECK-NEXT:    vsetvli zero, a4, e32, m8, ta, ma
2331; CHECK-NEXT:    vmseq.vx v25, v16, a0, v0.t
2332; CHECK-NEXT:    bltu a1, a3, .LBB191_2
2333; CHECK-NEXT:  # %bb.1:
2334; CHECK-NEXT:    mv a1, a3
2335; CHECK-NEXT:  .LBB191_2:
2336; CHECK-NEXT:    vmv1r.v v0, v24
2337; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
2338; CHECK-NEXT:    vmseq.vx v16, v8, a0, v0.t
2339; CHECK-NEXT:    add a0, a2, a2
2340; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
2341; CHECK-NEXT:    vslideup.vx v16, v25, a2
2342; CHECK-NEXT:    vmv1r.v v0, v16
2343; CHECK-NEXT:    ret
2344  %elt.head = insertelement <vscale x 32 x i32> poison, i32 %b, i32 0
2345  %vb = shufflevector <vscale x 32 x i32> %elt.head, <vscale x 32 x i32> poison, <vscale x 32 x i32> zeroinitializer
2346  %v = call <vscale x 32 x i1> @llvm.vp.icmp.nxv32i32(<vscale x 32 x i32> %vb, <vscale x 32 x i32> %va, metadata !"eq", <vscale x 32 x i1> %m, i32 %evl)
2347  ret <vscale x 32 x i1> %v
2348}
2349
2350declare <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64>, <vscale x 1 x i64>, metadata, <vscale x 1 x i1>, i32)
2351
2352define <vscale x 1 x i1> @icmp_eq_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2353; CHECK-LABEL: icmp_eq_vv_nxv1i64:
2354; CHECK:       # %bb.0:
2355; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2356; CHECK-NEXT:    vmseq.vv v0, v8, v9, v0.t
2357; CHECK-NEXT:    ret
2358  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
2359  ret <vscale x 1 x i1> %v
2360}
2361
2362define <vscale x 1 x i1> @icmp_eq_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2363; RV32-LABEL: icmp_eq_vx_nxv1i64:
2364; RV32:       # %bb.0:
2365; RV32-NEXT:    addi sp, sp, -16
2366; RV32-NEXT:    .cfi_def_cfa_offset 16
2367; RV32-NEXT:    sw a0, 8(sp)
2368; RV32-NEXT:    sw a1, 12(sp)
2369; RV32-NEXT:    addi a0, sp, 8
2370; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2371; RV32-NEXT:    vlse64.v v9, (a0), zero
2372; RV32-NEXT:    vmseq.vv v0, v8, v9, v0.t
2373; RV32-NEXT:    addi sp, sp, 16
2374; RV32-NEXT:    .cfi_def_cfa_offset 0
2375; RV32-NEXT:    ret
2376;
2377; RV64-LABEL: icmp_eq_vx_nxv1i64:
2378; RV64:       # %bb.0:
2379; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2380; RV64-NEXT:    vmseq.vx v0, v8, a0, v0.t
2381; RV64-NEXT:    ret
2382  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2383  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2384  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
2385  ret <vscale x 1 x i1> %v
2386}
2387
2388define <vscale x 1 x i1> @icmp_eq_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2389; RV32-LABEL: icmp_eq_vx_swap_nxv1i64:
2390; RV32:       # %bb.0:
2391; RV32-NEXT:    addi sp, sp, -16
2392; RV32-NEXT:    .cfi_def_cfa_offset 16
2393; RV32-NEXT:    sw a0, 8(sp)
2394; RV32-NEXT:    sw a1, 12(sp)
2395; RV32-NEXT:    addi a0, sp, 8
2396; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2397; RV32-NEXT:    vlse64.v v9, (a0), zero
2398; RV32-NEXT:    vmseq.vv v0, v9, v8, v0.t
2399; RV32-NEXT:    addi sp, sp, 16
2400; RV32-NEXT:    .cfi_def_cfa_offset 0
2401; RV32-NEXT:    ret
2402;
2403; RV64-LABEL: icmp_eq_vx_swap_nxv1i64:
2404; RV64:       # %bb.0:
2405; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2406; RV64-NEXT:    vmseq.vx v0, v8, a0, v0.t
2407; RV64-NEXT:    ret
2408  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2409  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2410  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
2411  ret <vscale x 1 x i1> %v
2412}
2413
2414define <vscale x 1 x i1> @icmp_eq_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2415; CHECK-LABEL: icmp_eq_vi_nxv1i64:
2416; CHECK:       # %bb.0:
2417; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2418; CHECK-NEXT:    vmseq.vi v0, v8, 4, v0.t
2419; CHECK-NEXT:    ret
2420  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
2421  ret <vscale x 1 x i1> %v
2422}
2423
2424define <vscale x 1 x i1> @icmp_eq_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2425; CHECK-LABEL: icmp_eq_vi_swap_nxv1i64:
2426; CHECK:       # %bb.0:
2427; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2428; CHECK-NEXT:    vmseq.vi v0, v8, 4, v0.t
2429; CHECK-NEXT:    ret
2430  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"eq", <vscale x 1 x i1> %m, i32 %evl)
2431  ret <vscale x 1 x i1> %v
2432}
2433
2434define <vscale x 1 x i1> @icmp_ne_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2435; CHECK-LABEL: icmp_ne_vv_nxv1i64:
2436; CHECK:       # %bb.0:
2437; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2438; CHECK-NEXT:    vmsne.vv v0, v8, v9, v0.t
2439; CHECK-NEXT:    ret
2440  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
2441  ret <vscale x 1 x i1> %v
2442}
2443
2444define <vscale x 1 x i1> @icmp_ne_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2445; RV32-LABEL: icmp_ne_vx_nxv1i64:
2446; RV32:       # %bb.0:
2447; RV32-NEXT:    addi sp, sp, -16
2448; RV32-NEXT:    .cfi_def_cfa_offset 16
2449; RV32-NEXT:    sw a0, 8(sp)
2450; RV32-NEXT:    sw a1, 12(sp)
2451; RV32-NEXT:    addi a0, sp, 8
2452; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2453; RV32-NEXT:    vlse64.v v9, (a0), zero
2454; RV32-NEXT:    vmsne.vv v0, v8, v9, v0.t
2455; RV32-NEXT:    addi sp, sp, 16
2456; RV32-NEXT:    .cfi_def_cfa_offset 0
2457; RV32-NEXT:    ret
2458;
2459; RV64-LABEL: icmp_ne_vx_nxv1i64:
2460; RV64:       # %bb.0:
2461; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2462; RV64-NEXT:    vmsne.vx v0, v8, a0, v0.t
2463; RV64-NEXT:    ret
2464  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2465  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2466  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
2467  ret <vscale x 1 x i1> %v
2468}
2469
2470define <vscale x 1 x i1> @icmp_ne_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2471; RV32-LABEL: icmp_ne_vx_swap_nxv1i64:
2472; RV32:       # %bb.0:
2473; RV32-NEXT:    addi sp, sp, -16
2474; RV32-NEXT:    .cfi_def_cfa_offset 16
2475; RV32-NEXT:    sw a0, 8(sp)
2476; RV32-NEXT:    sw a1, 12(sp)
2477; RV32-NEXT:    addi a0, sp, 8
2478; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2479; RV32-NEXT:    vlse64.v v9, (a0), zero
2480; RV32-NEXT:    vmsne.vv v0, v9, v8, v0.t
2481; RV32-NEXT:    addi sp, sp, 16
2482; RV32-NEXT:    .cfi_def_cfa_offset 0
2483; RV32-NEXT:    ret
2484;
2485; RV64-LABEL: icmp_ne_vx_swap_nxv1i64:
2486; RV64:       # %bb.0:
2487; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2488; RV64-NEXT:    vmsne.vx v0, v8, a0, v0.t
2489; RV64-NEXT:    ret
2490  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2491  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2492  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
2493  ret <vscale x 1 x i1> %v
2494}
2495
2496define <vscale x 1 x i1> @icmp_ne_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2497; CHECK-LABEL: icmp_ne_vi_nxv1i64:
2498; CHECK:       # %bb.0:
2499; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2500; CHECK-NEXT:    vmsne.vi v0, v8, 4, v0.t
2501; CHECK-NEXT:    ret
2502  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
2503  ret <vscale x 1 x i1> %v
2504}
2505
2506define <vscale x 1 x i1> @icmp_ne_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2507; CHECK-LABEL: icmp_ne_vi_swap_nxv1i64:
2508; CHECK:       # %bb.0:
2509; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2510; CHECK-NEXT:    vmsne.vi v0, v8, 4, v0.t
2511; CHECK-NEXT:    ret
2512  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"ne", <vscale x 1 x i1> %m, i32 %evl)
2513  ret <vscale x 1 x i1> %v
2514}
2515
2516define <vscale x 1 x i1> @icmp_ugt_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2517; CHECK-LABEL: icmp_ugt_vv_nxv1i64:
2518; CHECK:       # %bb.0:
2519; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2520; CHECK-NEXT:    vmsltu.vv v0, v9, v8, v0.t
2521; CHECK-NEXT:    ret
2522  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
2523  ret <vscale x 1 x i1> %v
2524}
2525
2526define <vscale x 1 x i1> @icmp_ugt_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2527; RV32-LABEL: icmp_ugt_vx_nxv1i64:
2528; RV32:       # %bb.0:
2529; RV32-NEXT:    addi sp, sp, -16
2530; RV32-NEXT:    .cfi_def_cfa_offset 16
2531; RV32-NEXT:    sw a0, 8(sp)
2532; RV32-NEXT:    sw a1, 12(sp)
2533; RV32-NEXT:    addi a0, sp, 8
2534; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2535; RV32-NEXT:    vlse64.v v9, (a0), zero
2536; RV32-NEXT:    vmsltu.vv v0, v9, v8, v0.t
2537; RV32-NEXT:    addi sp, sp, 16
2538; RV32-NEXT:    .cfi_def_cfa_offset 0
2539; RV32-NEXT:    ret
2540;
2541; RV64-LABEL: icmp_ugt_vx_nxv1i64:
2542; RV64:       # %bb.0:
2543; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2544; RV64-NEXT:    vmsgtu.vx v0, v8, a0, v0.t
2545; RV64-NEXT:    ret
2546  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2547  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2548  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
2549  ret <vscale x 1 x i1> %v
2550}
2551
2552define <vscale x 1 x i1> @icmp_ugt_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2553; RV32-LABEL: icmp_ugt_vx_swap_nxv1i64:
2554; RV32:       # %bb.0:
2555; RV32-NEXT:    addi sp, sp, -16
2556; RV32-NEXT:    .cfi_def_cfa_offset 16
2557; RV32-NEXT:    sw a0, 8(sp)
2558; RV32-NEXT:    sw a1, 12(sp)
2559; RV32-NEXT:    addi a0, sp, 8
2560; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2561; RV32-NEXT:    vlse64.v v9, (a0), zero
2562; RV32-NEXT:    vmsltu.vv v0, v8, v9, v0.t
2563; RV32-NEXT:    addi sp, sp, 16
2564; RV32-NEXT:    .cfi_def_cfa_offset 0
2565; RV32-NEXT:    ret
2566;
2567; RV64-LABEL: icmp_ugt_vx_swap_nxv1i64:
2568; RV64:       # %bb.0:
2569; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2570; RV64-NEXT:    vmsltu.vx v0, v8, a0, v0.t
2571; RV64-NEXT:    ret
2572  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2573  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2574  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
2575  ret <vscale x 1 x i1> %v
2576}
2577
2578define <vscale x 1 x i1> @icmp_ugt_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2579; CHECK-LABEL: icmp_ugt_vi_nxv1i64:
2580; CHECK:       # %bb.0:
2581; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2582; CHECK-NEXT:    vmsgtu.vi v0, v8, 4, v0.t
2583; CHECK-NEXT:    ret
2584  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
2585  ret <vscale x 1 x i1> %v
2586}
2587
2588define <vscale x 1 x i1> @icmp_ugt_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2589; CHECK-LABEL: icmp_ugt_vi_swap_nxv1i64:
2590; CHECK:       # %bb.0:
2591; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2592; CHECK-NEXT:    vmsleu.vi v0, v8, 3, v0.t
2593; CHECK-NEXT:    ret
2594  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"ugt", <vscale x 1 x i1> %m, i32 %evl)
2595  ret <vscale x 1 x i1> %v
2596}
2597
2598define <vscale x 1 x i1> @icmp_uge_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2599; CHECK-LABEL: icmp_uge_vv_nxv1i64:
2600; CHECK:       # %bb.0:
2601; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2602; CHECK-NEXT:    vmsleu.vv v0, v9, v8, v0.t
2603; CHECK-NEXT:    ret
2604  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
2605  ret <vscale x 1 x i1> %v
2606}
2607
2608define <vscale x 1 x i1> @icmp_uge_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2609; RV32-LABEL: icmp_uge_vx_nxv1i64:
2610; RV32:       # %bb.0:
2611; RV32-NEXT:    addi sp, sp, -16
2612; RV32-NEXT:    .cfi_def_cfa_offset 16
2613; RV32-NEXT:    sw a0, 8(sp)
2614; RV32-NEXT:    sw a1, 12(sp)
2615; RV32-NEXT:    addi a0, sp, 8
2616; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2617; RV32-NEXT:    vlse64.v v9, (a0), zero
2618; RV32-NEXT:    vmsleu.vv v0, v9, v8, v0.t
2619; RV32-NEXT:    addi sp, sp, 16
2620; RV32-NEXT:    .cfi_def_cfa_offset 0
2621; RV32-NEXT:    ret
2622;
2623; RV64-LABEL: icmp_uge_vx_nxv1i64:
2624; RV64:       # %bb.0:
2625; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2626; RV64-NEXT:    vmv.v.x v9, a0
2627; RV64-NEXT:    vmsleu.vv v0, v9, v8, v0.t
2628; RV64-NEXT:    ret
2629  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2630  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2631  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
2632  ret <vscale x 1 x i1> %v
2633}
2634
2635define <vscale x 1 x i1> @icmp_uge_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2636; RV32-LABEL: icmp_uge_vx_swap_nxv1i64:
2637; RV32:       # %bb.0:
2638; RV32-NEXT:    addi sp, sp, -16
2639; RV32-NEXT:    .cfi_def_cfa_offset 16
2640; RV32-NEXT:    sw a0, 8(sp)
2641; RV32-NEXT:    sw a1, 12(sp)
2642; RV32-NEXT:    addi a0, sp, 8
2643; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2644; RV32-NEXT:    vlse64.v v9, (a0), zero
2645; RV32-NEXT:    vmsleu.vv v0, v8, v9, v0.t
2646; RV32-NEXT:    addi sp, sp, 16
2647; RV32-NEXT:    .cfi_def_cfa_offset 0
2648; RV32-NEXT:    ret
2649;
2650; RV64-LABEL: icmp_uge_vx_swap_nxv1i64:
2651; RV64:       # %bb.0:
2652; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2653; RV64-NEXT:    vmsleu.vx v0, v8, a0, v0.t
2654; RV64-NEXT:    ret
2655  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2656  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2657  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
2658  ret <vscale x 1 x i1> %v
2659}
2660
2661define <vscale x 1 x i1> @icmp_uge_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2662; CHECK-LABEL: icmp_uge_vi_nxv1i64:
2663; CHECK:       # %bb.0:
2664; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2665; CHECK-NEXT:    vmsgtu.vi v0, v8, 3, v0.t
2666; CHECK-NEXT:    ret
2667  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
2668  ret <vscale x 1 x i1> %v
2669}
2670
2671define <vscale x 1 x i1> @icmp_uge_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2672; CHECK-LABEL: icmp_uge_vi_swap_nxv1i64:
2673; CHECK:       # %bb.0:
2674; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2675; CHECK-NEXT:    vmsleu.vi v0, v8, 4, v0.t
2676; CHECK-NEXT:    ret
2677  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"uge", <vscale x 1 x i1> %m, i32 %evl)
2678  ret <vscale x 1 x i1> %v
2679}
2680
2681define <vscale x 1 x i1> @icmp_ult_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2682; CHECK-LABEL: icmp_ult_vv_nxv1i64:
2683; CHECK:       # %bb.0:
2684; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2685; CHECK-NEXT:    vmsltu.vv v0, v8, v9, v0.t
2686; CHECK-NEXT:    ret
2687  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
2688  ret <vscale x 1 x i1> %v
2689}
2690
2691define <vscale x 1 x i1> @icmp_ult_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2692; RV32-LABEL: icmp_ult_vx_nxv1i64:
2693; RV32:       # %bb.0:
2694; RV32-NEXT:    addi sp, sp, -16
2695; RV32-NEXT:    .cfi_def_cfa_offset 16
2696; RV32-NEXT:    sw a0, 8(sp)
2697; RV32-NEXT:    sw a1, 12(sp)
2698; RV32-NEXT:    addi a0, sp, 8
2699; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2700; RV32-NEXT:    vlse64.v v9, (a0), zero
2701; RV32-NEXT:    vmsltu.vv v0, v8, v9, v0.t
2702; RV32-NEXT:    addi sp, sp, 16
2703; RV32-NEXT:    .cfi_def_cfa_offset 0
2704; RV32-NEXT:    ret
2705;
2706; RV64-LABEL: icmp_ult_vx_nxv1i64:
2707; RV64:       # %bb.0:
2708; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2709; RV64-NEXT:    vmsltu.vx v0, v8, a0, v0.t
2710; RV64-NEXT:    ret
2711  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2712  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2713  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
2714  ret <vscale x 1 x i1> %v
2715}
2716
2717define <vscale x 1 x i1> @icmp_ult_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2718; RV32-LABEL: icmp_ult_vx_swap_nxv1i64:
2719; RV32:       # %bb.0:
2720; RV32-NEXT:    addi sp, sp, -16
2721; RV32-NEXT:    .cfi_def_cfa_offset 16
2722; RV32-NEXT:    sw a0, 8(sp)
2723; RV32-NEXT:    sw a1, 12(sp)
2724; RV32-NEXT:    addi a0, sp, 8
2725; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2726; RV32-NEXT:    vlse64.v v9, (a0), zero
2727; RV32-NEXT:    vmsltu.vv v0, v9, v8, v0.t
2728; RV32-NEXT:    addi sp, sp, 16
2729; RV32-NEXT:    .cfi_def_cfa_offset 0
2730; RV32-NEXT:    ret
2731;
2732; RV64-LABEL: icmp_ult_vx_swap_nxv1i64:
2733; RV64:       # %bb.0:
2734; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2735; RV64-NEXT:    vmsgtu.vx v0, v8, a0, v0.t
2736; RV64-NEXT:    ret
2737  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2738  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2739  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
2740  ret <vscale x 1 x i1> %v
2741}
2742
2743define <vscale x 1 x i1> @icmp_ult_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2744; CHECK-LABEL: icmp_ult_vi_nxv1i64:
2745; CHECK:       # %bb.0:
2746; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2747; CHECK-NEXT:    vmsleu.vi v0, v8, 3, v0.t
2748; CHECK-NEXT:    ret
2749  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
2750  ret <vscale x 1 x i1> %v
2751}
2752
2753define <vscale x 1 x i1> @icmp_ult_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2754; CHECK-LABEL: icmp_ult_vi_swap_nxv1i64:
2755; CHECK:       # %bb.0:
2756; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2757; CHECK-NEXT:    vmsgtu.vi v0, v8, 4, v0.t
2758; CHECK-NEXT:    ret
2759  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"ult", <vscale x 1 x i1> %m, i32 %evl)
2760  ret <vscale x 1 x i1> %v
2761}
2762
2763define <vscale x 1 x i1> @icmp_sgt_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2764; CHECK-LABEL: icmp_sgt_vv_nxv1i64:
2765; CHECK:       # %bb.0:
2766; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2767; CHECK-NEXT:    vmslt.vv v0, v9, v8, v0.t
2768; CHECK-NEXT:    ret
2769  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
2770  ret <vscale x 1 x i1> %v
2771}
2772
2773define <vscale x 1 x i1> @icmp_sgt_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2774; RV32-LABEL: icmp_sgt_vx_nxv1i64:
2775; RV32:       # %bb.0:
2776; RV32-NEXT:    addi sp, sp, -16
2777; RV32-NEXT:    .cfi_def_cfa_offset 16
2778; RV32-NEXT:    sw a0, 8(sp)
2779; RV32-NEXT:    sw a1, 12(sp)
2780; RV32-NEXT:    addi a0, sp, 8
2781; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2782; RV32-NEXT:    vlse64.v v9, (a0), zero
2783; RV32-NEXT:    vmslt.vv v0, v9, v8, v0.t
2784; RV32-NEXT:    addi sp, sp, 16
2785; RV32-NEXT:    .cfi_def_cfa_offset 0
2786; RV32-NEXT:    ret
2787;
2788; RV64-LABEL: icmp_sgt_vx_nxv1i64:
2789; RV64:       # %bb.0:
2790; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2791; RV64-NEXT:    vmsgt.vx v0, v8, a0, v0.t
2792; RV64-NEXT:    ret
2793  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2794  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2795  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
2796  ret <vscale x 1 x i1> %v
2797}
2798
2799define <vscale x 1 x i1> @icmp_sgt_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2800; RV32-LABEL: icmp_sgt_vx_swap_nxv1i64:
2801; RV32:       # %bb.0:
2802; RV32-NEXT:    addi sp, sp, -16
2803; RV32-NEXT:    .cfi_def_cfa_offset 16
2804; RV32-NEXT:    sw a0, 8(sp)
2805; RV32-NEXT:    sw a1, 12(sp)
2806; RV32-NEXT:    addi a0, sp, 8
2807; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2808; RV32-NEXT:    vlse64.v v9, (a0), zero
2809; RV32-NEXT:    vmslt.vv v0, v8, v9, v0.t
2810; RV32-NEXT:    addi sp, sp, 16
2811; RV32-NEXT:    .cfi_def_cfa_offset 0
2812; RV32-NEXT:    ret
2813;
2814; RV64-LABEL: icmp_sgt_vx_swap_nxv1i64:
2815; RV64:       # %bb.0:
2816; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2817; RV64-NEXT:    vmslt.vx v0, v8, a0, v0.t
2818; RV64-NEXT:    ret
2819  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2820  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2821  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
2822  ret <vscale x 1 x i1> %v
2823}
2824
2825define <vscale x 1 x i1> @icmp_sgt_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2826; CHECK-LABEL: icmp_sgt_vi_nxv1i64:
2827; CHECK:       # %bb.0:
2828; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2829; CHECK-NEXT:    vmsgt.vi v0, v8, 4, v0.t
2830; CHECK-NEXT:    ret
2831  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
2832  ret <vscale x 1 x i1> %v
2833}
2834
2835define <vscale x 1 x i1> @icmp_sgt_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2836; CHECK-LABEL: icmp_sgt_vi_swap_nxv1i64:
2837; CHECK:       # %bb.0:
2838; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2839; CHECK-NEXT:    vmsle.vi v0, v8, 3, v0.t
2840; CHECK-NEXT:    ret
2841  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"sgt", <vscale x 1 x i1> %m, i32 %evl)
2842  ret <vscale x 1 x i1> %v
2843}
2844
2845define <vscale x 1 x i1> @icmp_sge_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2846; CHECK-LABEL: icmp_sge_vv_nxv1i64:
2847; CHECK:       # %bb.0:
2848; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2849; CHECK-NEXT:    vmsle.vv v0, v9, v8, v0.t
2850; CHECK-NEXT:    ret
2851  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
2852  ret <vscale x 1 x i1> %v
2853}
2854
2855define <vscale x 1 x i1> @icmp_sge_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2856; RV32-LABEL: icmp_sge_vx_nxv1i64:
2857; RV32:       # %bb.0:
2858; RV32-NEXT:    addi sp, sp, -16
2859; RV32-NEXT:    .cfi_def_cfa_offset 16
2860; RV32-NEXT:    sw a0, 8(sp)
2861; RV32-NEXT:    sw a1, 12(sp)
2862; RV32-NEXT:    addi a0, sp, 8
2863; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2864; RV32-NEXT:    vlse64.v v9, (a0), zero
2865; RV32-NEXT:    vmsle.vv v0, v9, v8, v0.t
2866; RV32-NEXT:    addi sp, sp, 16
2867; RV32-NEXT:    .cfi_def_cfa_offset 0
2868; RV32-NEXT:    ret
2869;
2870; RV64-LABEL: icmp_sge_vx_nxv1i64:
2871; RV64:       # %bb.0:
2872; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2873; RV64-NEXT:    vmv.v.x v9, a0
2874; RV64-NEXT:    vmsle.vv v0, v9, v8, v0.t
2875; RV64-NEXT:    ret
2876  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2877  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2878  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
2879  ret <vscale x 1 x i1> %v
2880}
2881
2882define <vscale x 1 x i1> @icmp_sge_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2883; RV32-LABEL: icmp_sge_vx_swap_nxv1i64:
2884; RV32:       # %bb.0:
2885; RV32-NEXT:    addi sp, sp, -16
2886; RV32-NEXT:    .cfi_def_cfa_offset 16
2887; RV32-NEXT:    sw a0, 8(sp)
2888; RV32-NEXT:    sw a1, 12(sp)
2889; RV32-NEXT:    addi a0, sp, 8
2890; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2891; RV32-NEXT:    vlse64.v v9, (a0), zero
2892; RV32-NEXT:    vmsle.vv v0, v8, v9, v0.t
2893; RV32-NEXT:    addi sp, sp, 16
2894; RV32-NEXT:    .cfi_def_cfa_offset 0
2895; RV32-NEXT:    ret
2896;
2897; RV64-LABEL: icmp_sge_vx_swap_nxv1i64:
2898; RV64:       # %bb.0:
2899; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2900; RV64-NEXT:    vmsle.vx v0, v8, a0, v0.t
2901; RV64-NEXT:    ret
2902  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2903  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2904  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
2905  ret <vscale x 1 x i1> %v
2906}
2907
2908define <vscale x 1 x i1> @icmp_sge_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2909; CHECK-LABEL: icmp_sge_vi_nxv1i64:
2910; CHECK:       # %bb.0:
2911; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2912; CHECK-NEXT:    vmsgt.vi v0, v8, 3, v0.t
2913; CHECK-NEXT:    ret
2914  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
2915  ret <vscale x 1 x i1> %v
2916}
2917
2918define <vscale x 1 x i1> @icmp_sge_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2919; CHECK-LABEL: icmp_sge_vi_swap_nxv1i64:
2920; CHECK:       # %bb.0:
2921; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2922; CHECK-NEXT:    vmsle.vi v0, v8, 4, v0.t
2923; CHECK-NEXT:    ret
2924  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"sge", <vscale x 1 x i1> %m, i32 %evl)
2925  ret <vscale x 1 x i1> %v
2926}
2927
2928define <vscale x 1 x i1> @icmp_slt_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2929; CHECK-LABEL: icmp_slt_vv_nxv1i64:
2930; CHECK:       # %bb.0:
2931; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2932; CHECK-NEXT:    vmslt.vv v0, v8, v9, v0.t
2933; CHECK-NEXT:    ret
2934  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
2935  ret <vscale x 1 x i1> %v
2936}
2937
2938define <vscale x 1 x i1> @icmp_slt_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2939; RV32-LABEL: icmp_slt_vx_nxv1i64:
2940; RV32:       # %bb.0:
2941; RV32-NEXT:    addi sp, sp, -16
2942; RV32-NEXT:    .cfi_def_cfa_offset 16
2943; RV32-NEXT:    sw a0, 8(sp)
2944; RV32-NEXT:    sw a1, 12(sp)
2945; RV32-NEXT:    addi a0, sp, 8
2946; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2947; RV32-NEXT:    vlse64.v v9, (a0), zero
2948; RV32-NEXT:    vmslt.vv v0, v8, v9, v0.t
2949; RV32-NEXT:    addi sp, sp, 16
2950; RV32-NEXT:    .cfi_def_cfa_offset 0
2951; RV32-NEXT:    ret
2952;
2953; RV64-LABEL: icmp_slt_vx_nxv1i64:
2954; RV64:       # %bb.0:
2955; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2956; RV64-NEXT:    vmslt.vx v0, v8, a0, v0.t
2957; RV64-NEXT:    ret
2958  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2959  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2960  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
2961  ret <vscale x 1 x i1> %v
2962}
2963
2964define <vscale x 1 x i1> @icmp_slt_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2965; RV32-LABEL: icmp_slt_vx_swap_nxv1i64:
2966; RV32:       # %bb.0:
2967; RV32-NEXT:    addi sp, sp, -16
2968; RV32-NEXT:    .cfi_def_cfa_offset 16
2969; RV32-NEXT:    sw a0, 8(sp)
2970; RV32-NEXT:    sw a1, 12(sp)
2971; RV32-NEXT:    addi a0, sp, 8
2972; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2973; RV32-NEXT:    vlse64.v v9, (a0), zero
2974; RV32-NEXT:    vmslt.vv v0, v9, v8, v0.t
2975; RV32-NEXT:    addi sp, sp, 16
2976; RV32-NEXT:    .cfi_def_cfa_offset 0
2977; RV32-NEXT:    ret
2978;
2979; RV64-LABEL: icmp_slt_vx_swap_nxv1i64:
2980; RV64:       # %bb.0:
2981; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
2982; RV64-NEXT:    vmsgt.vx v0, v8, a0, v0.t
2983; RV64-NEXT:    ret
2984  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
2985  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
2986  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
2987  ret <vscale x 1 x i1> %v
2988}
2989
2990define <vscale x 1 x i1> @icmp_slt_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
2991; CHECK-LABEL: icmp_slt_vi_nxv1i64:
2992; CHECK:       # %bb.0:
2993; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
2994; CHECK-NEXT:    vmsle.vi v0, v8, 3, v0.t
2995; CHECK-NEXT:    ret
2996  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
2997  ret <vscale x 1 x i1> %v
2998}
2999
3000define <vscale x 1 x i1> @icmp_slt_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3001; CHECK-LABEL: icmp_slt_vi_swap_nxv1i64:
3002; CHECK:       # %bb.0:
3003; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
3004; CHECK-NEXT:    vmsgt.vi v0, v8, 4, v0.t
3005; CHECK-NEXT:    ret
3006  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"slt", <vscale x 1 x i1> %m, i32 %evl)
3007  ret <vscale x 1 x i1> %v
3008}
3009
3010define <vscale x 1 x i1> @icmp_sle_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3011; CHECK-LABEL: icmp_sle_vv_nxv1i64:
3012; CHECK:       # %bb.0:
3013; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
3014; CHECK-NEXT:    vmsle.vv v0, v8, v9, v0.t
3015; CHECK-NEXT:    ret
3016  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
3017  ret <vscale x 1 x i1> %v
3018}
3019
3020define <vscale x 1 x i1> @icmp_sle_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3021; RV32-LABEL: icmp_sle_vx_nxv1i64:
3022; RV32:       # %bb.0:
3023; RV32-NEXT:    addi sp, sp, -16
3024; RV32-NEXT:    .cfi_def_cfa_offset 16
3025; RV32-NEXT:    sw a0, 8(sp)
3026; RV32-NEXT:    sw a1, 12(sp)
3027; RV32-NEXT:    addi a0, sp, 8
3028; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3029; RV32-NEXT:    vlse64.v v9, (a0), zero
3030; RV32-NEXT:    vmsle.vv v0, v8, v9, v0.t
3031; RV32-NEXT:    addi sp, sp, 16
3032; RV32-NEXT:    .cfi_def_cfa_offset 0
3033; RV32-NEXT:    ret
3034;
3035; RV64-LABEL: icmp_sle_vx_nxv1i64:
3036; RV64:       # %bb.0:
3037; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
3038; RV64-NEXT:    vmsle.vx v0, v8, a0, v0.t
3039; RV64-NEXT:    ret
3040  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
3041  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
3042  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
3043  ret <vscale x 1 x i1> %v
3044}
3045
3046define <vscale x 1 x i1> @icmp_sle_vx_swap_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3047; RV32-LABEL: icmp_sle_vx_swap_nxv1i64:
3048; RV32:       # %bb.0:
3049; RV32-NEXT:    addi sp, sp, -16
3050; RV32-NEXT:    .cfi_def_cfa_offset 16
3051; RV32-NEXT:    sw a0, 8(sp)
3052; RV32-NEXT:    sw a1, 12(sp)
3053; RV32-NEXT:    addi a0, sp, 8
3054; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3055; RV32-NEXT:    vlse64.v v9, (a0), zero
3056; RV32-NEXT:    vmsle.vv v0, v9, v8, v0.t
3057; RV32-NEXT:    addi sp, sp, 16
3058; RV32-NEXT:    .cfi_def_cfa_offset 0
3059; RV32-NEXT:    ret
3060;
3061; RV64-LABEL: icmp_sle_vx_swap_nxv1i64:
3062; RV64:       # %bb.0:
3063; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
3064; RV64-NEXT:    vmv.v.x v9, a0
3065; RV64-NEXT:    vmsle.vv v0, v9, v8, v0.t
3066; RV64-NEXT:    ret
3067  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
3068  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
3069  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %vb, <vscale x 1 x i64> %va, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
3070  ret <vscale x 1 x i1> %v
3071}
3072
3073define <vscale x 1 x i1> @icmp_sle_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3074; CHECK-LABEL: icmp_sle_vi_nxv1i64:
3075; CHECK:       # %bb.0:
3076; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
3077; CHECK-NEXT:    vmsle.vi v0, v8, 4, v0.t
3078; CHECK-NEXT:    ret
3079  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 4), metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
3080  ret <vscale x 1 x i1> %v
3081}
3082
3083define <vscale x 1 x i1> @icmp_sle_vi_swap_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
3084; CHECK-LABEL: icmp_sle_vi_swap_nxv1i64:
3085; CHECK:       # %bb.0:
3086; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
3087; CHECK-NEXT:    vmsgt.vi v0, v8, 3, v0.t
3088; CHECK-NEXT:    ret
3089  %v = call <vscale x 1 x i1> @llvm.vp.icmp.nxv1i64(<vscale x 1 x i64> splat (i64 4), <vscale x 1 x i64> %va, metadata !"sle", <vscale x 1 x i1> %m, i32 %evl)
3090  ret <vscale x 1 x i1> %v
3091}
3092
3093declare <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64>, <vscale x 8 x i64>, metadata, <vscale x 8 x i1>, i32)
3094
3095define <vscale x 8 x i1> @icmp_eq_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3096; CHECK-LABEL: icmp_eq_vv_nxv8i64:
3097; CHECK:       # %bb.0:
3098; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3099; CHECK-NEXT:    vmseq.vv v24, v8, v16, v0.t
3100; CHECK-NEXT:    vmv1r.v v0, v24
3101; CHECK-NEXT:    ret
3102  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
3103  ret <vscale x 8 x i1> %v
3104}
3105
3106define <vscale x 8 x i1> @icmp_eq_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3107; RV32-LABEL: icmp_eq_vx_nxv8i64:
3108; RV32:       # %bb.0:
3109; RV32-NEXT:    addi sp, sp, -16
3110; RV32-NEXT:    .cfi_def_cfa_offset 16
3111; RV32-NEXT:    sw a0, 8(sp)
3112; RV32-NEXT:    sw a1, 12(sp)
3113; RV32-NEXT:    addi a0, sp, 8
3114; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3115; RV32-NEXT:    vlse64.v v24, (a0), zero
3116; RV32-NEXT:    vmseq.vv v16, v8, v24, v0.t
3117; RV32-NEXT:    vmv1r.v v0, v16
3118; RV32-NEXT:    addi sp, sp, 16
3119; RV32-NEXT:    .cfi_def_cfa_offset 0
3120; RV32-NEXT:    ret
3121;
3122; RV64-LABEL: icmp_eq_vx_nxv8i64:
3123; RV64:       # %bb.0:
3124; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3125; RV64-NEXT:    vmseq.vx v16, v8, a0, v0.t
3126; RV64-NEXT:    vmv1r.v v0, v16
3127; RV64-NEXT:    ret
3128  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3129  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3130  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
3131  ret <vscale x 8 x i1> %v
3132}
3133
3134define <vscale x 8 x i1> @icmp_eq_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3135; RV32-LABEL: icmp_eq_vx_swap_nxv8i64:
3136; RV32:       # %bb.0:
3137; RV32-NEXT:    addi sp, sp, -16
3138; RV32-NEXT:    .cfi_def_cfa_offset 16
3139; RV32-NEXT:    sw a0, 8(sp)
3140; RV32-NEXT:    sw a1, 12(sp)
3141; RV32-NEXT:    addi a0, sp, 8
3142; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3143; RV32-NEXT:    vlse64.v v24, (a0), zero
3144; RV32-NEXT:    vmseq.vv v16, v24, v8, v0.t
3145; RV32-NEXT:    vmv1r.v v0, v16
3146; RV32-NEXT:    addi sp, sp, 16
3147; RV32-NEXT:    .cfi_def_cfa_offset 0
3148; RV32-NEXT:    ret
3149;
3150; RV64-LABEL: icmp_eq_vx_swap_nxv8i64:
3151; RV64:       # %bb.0:
3152; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3153; RV64-NEXT:    vmseq.vx v16, v8, a0, v0.t
3154; RV64-NEXT:    vmv1r.v v0, v16
3155; RV64-NEXT:    ret
3156  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3157  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3158  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
3159  ret <vscale x 8 x i1> %v
3160}
3161
3162define <vscale x 8 x i1> @icmp_eq_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3163; CHECK-LABEL: icmp_eq_vi_nxv8i64:
3164; CHECK:       # %bb.0:
3165; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3166; CHECK-NEXT:    vmseq.vi v16, v8, 4, v0.t
3167; CHECK-NEXT:    vmv1r.v v0, v16
3168; CHECK-NEXT:    ret
3169  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
3170  ret <vscale x 8 x i1> %v
3171}
3172
3173define <vscale x 8 x i1> @icmp_eq_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3174; CHECK-LABEL: icmp_eq_vi_swap_nxv8i64:
3175; CHECK:       # %bb.0:
3176; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3177; CHECK-NEXT:    vmseq.vi v16, v8, 4, v0.t
3178; CHECK-NEXT:    vmv1r.v v0, v16
3179; CHECK-NEXT:    ret
3180  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"eq", <vscale x 8 x i1> %m, i32 %evl)
3181  ret <vscale x 8 x i1> %v
3182}
3183
3184define <vscale x 8 x i1> @icmp_ne_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3185; CHECK-LABEL: icmp_ne_vv_nxv8i64:
3186; CHECK:       # %bb.0:
3187; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3188; CHECK-NEXT:    vmsne.vv v24, v8, v16, v0.t
3189; CHECK-NEXT:    vmv1r.v v0, v24
3190; CHECK-NEXT:    ret
3191  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
3192  ret <vscale x 8 x i1> %v
3193}
3194
3195define <vscale x 8 x i1> @icmp_ne_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3196; RV32-LABEL: icmp_ne_vx_nxv8i64:
3197; RV32:       # %bb.0:
3198; RV32-NEXT:    addi sp, sp, -16
3199; RV32-NEXT:    .cfi_def_cfa_offset 16
3200; RV32-NEXT:    sw a0, 8(sp)
3201; RV32-NEXT:    sw a1, 12(sp)
3202; RV32-NEXT:    addi a0, sp, 8
3203; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3204; RV32-NEXT:    vlse64.v v24, (a0), zero
3205; RV32-NEXT:    vmsne.vv v16, v8, v24, v0.t
3206; RV32-NEXT:    vmv1r.v v0, v16
3207; RV32-NEXT:    addi sp, sp, 16
3208; RV32-NEXT:    .cfi_def_cfa_offset 0
3209; RV32-NEXT:    ret
3210;
3211; RV64-LABEL: icmp_ne_vx_nxv8i64:
3212; RV64:       # %bb.0:
3213; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3214; RV64-NEXT:    vmsne.vx v16, v8, a0, v0.t
3215; RV64-NEXT:    vmv1r.v v0, v16
3216; RV64-NEXT:    ret
3217  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3218  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3219  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
3220  ret <vscale x 8 x i1> %v
3221}
3222
3223define <vscale x 8 x i1> @icmp_ne_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3224; RV32-LABEL: icmp_ne_vx_swap_nxv8i64:
3225; RV32:       # %bb.0:
3226; RV32-NEXT:    addi sp, sp, -16
3227; RV32-NEXT:    .cfi_def_cfa_offset 16
3228; RV32-NEXT:    sw a0, 8(sp)
3229; RV32-NEXT:    sw a1, 12(sp)
3230; RV32-NEXT:    addi a0, sp, 8
3231; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3232; RV32-NEXT:    vlse64.v v24, (a0), zero
3233; RV32-NEXT:    vmsne.vv v16, v24, v8, v0.t
3234; RV32-NEXT:    vmv1r.v v0, v16
3235; RV32-NEXT:    addi sp, sp, 16
3236; RV32-NEXT:    .cfi_def_cfa_offset 0
3237; RV32-NEXT:    ret
3238;
3239; RV64-LABEL: icmp_ne_vx_swap_nxv8i64:
3240; RV64:       # %bb.0:
3241; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3242; RV64-NEXT:    vmsne.vx v16, v8, a0, v0.t
3243; RV64-NEXT:    vmv1r.v v0, v16
3244; RV64-NEXT:    ret
3245  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3246  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3247  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
3248  ret <vscale x 8 x i1> %v
3249}
3250
3251define <vscale x 8 x i1> @icmp_ne_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3252; CHECK-LABEL: icmp_ne_vi_nxv8i64:
3253; CHECK:       # %bb.0:
3254; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3255; CHECK-NEXT:    vmsne.vi v16, v8, 4, v0.t
3256; CHECK-NEXT:    vmv1r.v v0, v16
3257; CHECK-NEXT:    ret
3258  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
3259  ret <vscale x 8 x i1> %v
3260}
3261
3262define <vscale x 8 x i1> @icmp_ne_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3263; CHECK-LABEL: icmp_ne_vi_swap_nxv8i64:
3264; CHECK:       # %bb.0:
3265; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3266; CHECK-NEXT:    vmsne.vi v16, v8, 4, v0.t
3267; CHECK-NEXT:    vmv1r.v v0, v16
3268; CHECK-NEXT:    ret
3269  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"ne", <vscale x 8 x i1> %m, i32 %evl)
3270  ret <vscale x 8 x i1> %v
3271}
3272
3273define <vscale x 8 x i1> @icmp_ugt_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3274; CHECK-LABEL: icmp_ugt_vv_nxv8i64:
3275; CHECK:       # %bb.0:
3276; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3277; CHECK-NEXT:    vmsltu.vv v24, v16, v8, v0.t
3278; CHECK-NEXT:    vmv1r.v v0, v24
3279; CHECK-NEXT:    ret
3280  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
3281  ret <vscale x 8 x i1> %v
3282}
3283
3284define <vscale x 8 x i1> @icmp_ugt_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3285; RV32-LABEL: icmp_ugt_vx_nxv8i64:
3286; RV32:       # %bb.0:
3287; RV32-NEXT:    addi sp, sp, -16
3288; RV32-NEXT:    .cfi_def_cfa_offset 16
3289; RV32-NEXT:    sw a0, 8(sp)
3290; RV32-NEXT:    sw a1, 12(sp)
3291; RV32-NEXT:    addi a0, sp, 8
3292; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3293; RV32-NEXT:    vlse64.v v24, (a0), zero
3294; RV32-NEXT:    vmsltu.vv v16, v24, v8, v0.t
3295; RV32-NEXT:    vmv1r.v v0, v16
3296; RV32-NEXT:    addi sp, sp, 16
3297; RV32-NEXT:    .cfi_def_cfa_offset 0
3298; RV32-NEXT:    ret
3299;
3300; RV64-LABEL: icmp_ugt_vx_nxv8i64:
3301; RV64:       # %bb.0:
3302; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3303; RV64-NEXT:    vmsgtu.vx v16, v8, a0, v0.t
3304; RV64-NEXT:    vmv1r.v v0, v16
3305; RV64-NEXT:    ret
3306  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3307  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3308  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
3309  ret <vscale x 8 x i1> %v
3310}
3311
3312define <vscale x 8 x i1> @icmp_ugt_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3313; RV32-LABEL: icmp_ugt_vx_swap_nxv8i64:
3314; RV32:       # %bb.0:
3315; RV32-NEXT:    addi sp, sp, -16
3316; RV32-NEXT:    .cfi_def_cfa_offset 16
3317; RV32-NEXT:    sw a0, 8(sp)
3318; RV32-NEXT:    sw a1, 12(sp)
3319; RV32-NEXT:    addi a0, sp, 8
3320; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3321; RV32-NEXT:    vlse64.v v24, (a0), zero
3322; RV32-NEXT:    vmsltu.vv v16, v8, v24, v0.t
3323; RV32-NEXT:    vmv1r.v v0, v16
3324; RV32-NEXT:    addi sp, sp, 16
3325; RV32-NEXT:    .cfi_def_cfa_offset 0
3326; RV32-NEXT:    ret
3327;
3328; RV64-LABEL: icmp_ugt_vx_swap_nxv8i64:
3329; RV64:       # %bb.0:
3330; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3331; RV64-NEXT:    vmsltu.vx v16, v8, a0, v0.t
3332; RV64-NEXT:    vmv1r.v v0, v16
3333; RV64-NEXT:    ret
3334  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3335  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3336  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
3337  ret <vscale x 8 x i1> %v
3338}
3339
3340define <vscale x 8 x i1> @icmp_ugt_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3341; CHECK-LABEL: icmp_ugt_vi_nxv8i64:
3342; CHECK:       # %bb.0:
3343; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3344; CHECK-NEXT:    vmsgtu.vi v16, v8, 4, v0.t
3345; CHECK-NEXT:    vmv1r.v v0, v16
3346; CHECK-NEXT:    ret
3347  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
3348  ret <vscale x 8 x i1> %v
3349}
3350
3351define <vscale x 8 x i1> @icmp_ugt_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3352; CHECK-LABEL: icmp_ugt_vi_swap_nxv8i64:
3353; CHECK:       # %bb.0:
3354; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3355; CHECK-NEXT:    vmsleu.vi v16, v8, 3, v0.t
3356; CHECK-NEXT:    vmv1r.v v0, v16
3357; CHECK-NEXT:    ret
3358  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"ugt", <vscale x 8 x i1> %m, i32 %evl)
3359  ret <vscale x 8 x i1> %v
3360}
3361
3362define <vscale x 8 x i1> @icmp_uge_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3363; CHECK-LABEL: icmp_uge_vv_nxv8i64:
3364; CHECK:       # %bb.0:
3365; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3366; CHECK-NEXT:    vmsleu.vv v24, v16, v8, v0.t
3367; CHECK-NEXT:    vmv1r.v v0, v24
3368; CHECK-NEXT:    ret
3369  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
3370  ret <vscale x 8 x i1> %v
3371}
3372
3373define <vscale x 8 x i1> @icmp_uge_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3374; RV32-LABEL: icmp_uge_vx_nxv8i64:
3375; RV32:       # %bb.0:
3376; RV32-NEXT:    addi sp, sp, -16
3377; RV32-NEXT:    .cfi_def_cfa_offset 16
3378; RV32-NEXT:    sw a0, 8(sp)
3379; RV32-NEXT:    sw a1, 12(sp)
3380; RV32-NEXT:    addi a0, sp, 8
3381; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3382; RV32-NEXT:    vlse64.v v24, (a0), zero
3383; RV32-NEXT:    vmsleu.vv v16, v24, v8, v0.t
3384; RV32-NEXT:    vmv1r.v v0, v16
3385; RV32-NEXT:    addi sp, sp, 16
3386; RV32-NEXT:    .cfi_def_cfa_offset 0
3387; RV32-NEXT:    ret
3388;
3389; RV64-LABEL: icmp_uge_vx_nxv8i64:
3390; RV64:       # %bb.0:
3391; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3392; RV64-NEXT:    vmv.v.x v24, a0
3393; RV64-NEXT:    vmsleu.vv v16, v24, v8, v0.t
3394; RV64-NEXT:    vmv1r.v v0, v16
3395; RV64-NEXT:    ret
3396  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3397  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3398  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
3399  ret <vscale x 8 x i1> %v
3400}
3401
3402define <vscale x 8 x i1> @icmp_uge_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3403; RV32-LABEL: icmp_uge_vx_swap_nxv8i64:
3404; RV32:       # %bb.0:
3405; RV32-NEXT:    addi sp, sp, -16
3406; RV32-NEXT:    .cfi_def_cfa_offset 16
3407; RV32-NEXT:    sw a0, 8(sp)
3408; RV32-NEXT:    sw a1, 12(sp)
3409; RV32-NEXT:    addi a0, sp, 8
3410; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3411; RV32-NEXT:    vlse64.v v24, (a0), zero
3412; RV32-NEXT:    vmsleu.vv v16, v8, v24, v0.t
3413; RV32-NEXT:    vmv1r.v v0, v16
3414; RV32-NEXT:    addi sp, sp, 16
3415; RV32-NEXT:    .cfi_def_cfa_offset 0
3416; RV32-NEXT:    ret
3417;
3418; RV64-LABEL: icmp_uge_vx_swap_nxv8i64:
3419; RV64:       # %bb.0:
3420; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3421; RV64-NEXT:    vmsleu.vx v16, v8, a0, v0.t
3422; RV64-NEXT:    vmv1r.v v0, v16
3423; RV64-NEXT:    ret
3424  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3425  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3426  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
3427  ret <vscale x 8 x i1> %v
3428}
3429
3430define <vscale x 8 x i1> @icmp_uge_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3431; CHECK-LABEL: icmp_uge_vi_nxv8i64:
3432; CHECK:       # %bb.0:
3433; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3434; CHECK-NEXT:    vmsgtu.vi v16, v8, 3, v0.t
3435; CHECK-NEXT:    vmv1r.v v0, v16
3436; CHECK-NEXT:    ret
3437  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
3438  ret <vscale x 8 x i1> %v
3439}
3440
3441define <vscale x 8 x i1> @icmp_uge_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3442; CHECK-LABEL: icmp_uge_vi_swap_nxv8i64:
3443; CHECK:       # %bb.0:
3444; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3445; CHECK-NEXT:    vmsleu.vi v16, v8, 4, v0.t
3446; CHECK-NEXT:    vmv1r.v v0, v16
3447; CHECK-NEXT:    ret
3448  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"uge", <vscale x 8 x i1> %m, i32 %evl)
3449  ret <vscale x 8 x i1> %v
3450}
3451
3452define <vscale x 8 x i1> @icmp_ult_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3453; CHECK-LABEL: icmp_ult_vv_nxv8i64:
3454; CHECK:       # %bb.0:
3455; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3456; CHECK-NEXT:    vmsltu.vv v24, v8, v16, v0.t
3457; CHECK-NEXT:    vmv1r.v v0, v24
3458; CHECK-NEXT:    ret
3459  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
3460  ret <vscale x 8 x i1> %v
3461}
3462
3463define <vscale x 8 x i1> @icmp_ult_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3464; RV32-LABEL: icmp_ult_vx_nxv8i64:
3465; RV32:       # %bb.0:
3466; RV32-NEXT:    addi sp, sp, -16
3467; RV32-NEXT:    .cfi_def_cfa_offset 16
3468; RV32-NEXT:    sw a0, 8(sp)
3469; RV32-NEXT:    sw a1, 12(sp)
3470; RV32-NEXT:    addi a0, sp, 8
3471; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3472; RV32-NEXT:    vlse64.v v24, (a0), zero
3473; RV32-NEXT:    vmsltu.vv v16, v8, v24, v0.t
3474; RV32-NEXT:    vmv1r.v v0, v16
3475; RV32-NEXT:    addi sp, sp, 16
3476; RV32-NEXT:    .cfi_def_cfa_offset 0
3477; RV32-NEXT:    ret
3478;
3479; RV64-LABEL: icmp_ult_vx_nxv8i64:
3480; RV64:       # %bb.0:
3481; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3482; RV64-NEXT:    vmsltu.vx v16, v8, a0, v0.t
3483; RV64-NEXT:    vmv1r.v v0, v16
3484; RV64-NEXT:    ret
3485  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3486  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3487  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
3488  ret <vscale x 8 x i1> %v
3489}
3490
3491define <vscale x 8 x i1> @icmp_ult_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3492; RV32-LABEL: icmp_ult_vx_swap_nxv8i64:
3493; RV32:       # %bb.0:
3494; RV32-NEXT:    addi sp, sp, -16
3495; RV32-NEXT:    .cfi_def_cfa_offset 16
3496; RV32-NEXT:    sw a0, 8(sp)
3497; RV32-NEXT:    sw a1, 12(sp)
3498; RV32-NEXT:    addi a0, sp, 8
3499; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3500; RV32-NEXT:    vlse64.v v24, (a0), zero
3501; RV32-NEXT:    vmsltu.vv v16, v24, v8, v0.t
3502; RV32-NEXT:    vmv1r.v v0, v16
3503; RV32-NEXT:    addi sp, sp, 16
3504; RV32-NEXT:    .cfi_def_cfa_offset 0
3505; RV32-NEXT:    ret
3506;
3507; RV64-LABEL: icmp_ult_vx_swap_nxv8i64:
3508; RV64:       # %bb.0:
3509; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3510; RV64-NEXT:    vmsgtu.vx v16, v8, a0, v0.t
3511; RV64-NEXT:    vmv1r.v v0, v16
3512; RV64-NEXT:    ret
3513  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3514  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3515  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
3516  ret <vscale x 8 x i1> %v
3517}
3518
3519define <vscale x 8 x i1> @icmp_ult_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3520; CHECK-LABEL: icmp_ult_vi_nxv8i64:
3521; CHECK:       # %bb.0:
3522; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3523; CHECK-NEXT:    vmsleu.vi v16, v8, 3, v0.t
3524; CHECK-NEXT:    vmv1r.v v0, v16
3525; CHECK-NEXT:    ret
3526  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
3527  ret <vscale x 8 x i1> %v
3528}
3529
3530define <vscale x 8 x i1> @icmp_ult_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3531; CHECK-LABEL: icmp_ult_vi_swap_nxv8i64:
3532; CHECK:       # %bb.0:
3533; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3534; CHECK-NEXT:    vmsgtu.vi v16, v8, 4, v0.t
3535; CHECK-NEXT:    vmv1r.v v0, v16
3536; CHECK-NEXT:    ret
3537  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"ult", <vscale x 8 x i1> %m, i32 %evl)
3538  ret <vscale x 8 x i1> %v
3539}
3540
3541define <vscale x 8 x i1> @icmp_sgt_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3542; CHECK-LABEL: icmp_sgt_vv_nxv8i64:
3543; CHECK:       # %bb.0:
3544; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3545; CHECK-NEXT:    vmslt.vv v24, v16, v8, v0.t
3546; CHECK-NEXT:    vmv1r.v v0, v24
3547; CHECK-NEXT:    ret
3548  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
3549  ret <vscale x 8 x i1> %v
3550}
3551
3552define <vscale x 8 x i1> @icmp_sgt_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3553; RV32-LABEL: icmp_sgt_vx_nxv8i64:
3554; RV32:       # %bb.0:
3555; RV32-NEXT:    addi sp, sp, -16
3556; RV32-NEXT:    .cfi_def_cfa_offset 16
3557; RV32-NEXT:    sw a0, 8(sp)
3558; RV32-NEXT:    sw a1, 12(sp)
3559; RV32-NEXT:    addi a0, sp, 8
3560; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3561; RV32-NEXT:    vlse64.v v24, (a0), zero
3562; RV32-NEXT:    vmslt.vv v16, v24, v8, v0.t
3563; RV32-NEXT:    vmv1r.v v0, v16
3564; RV32-NEXT:    addi sp, sp, 16
3565; RV32-NEXT:    .cfi_def_cfa_offset 0
3566; RV32-NEXT:    ret
3567;
3568; RV64-LABEL: icmp_sgt_vx_nxv8i64:
3569; RV64:       # %bb.0:
3570; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3571; RV64-NEXT:    vmsgt.vx v16, v8, a0, v0.t
3572; RV64-NEXT:    vmv1r.v v0, v16
3573; RV64-NEXT:    ret
3574  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3575  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3576  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
3577  ret <vscale x 8 x i1> %v
3578}
3579
3580define <vscale x 8 x i1> @icmp_sgt_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3581; RV32-LABEL: icmp_sgt_vx_swap_nxv8i64:
3582; RV32:       # %bb.0:
3583; RV32-NEXT:    addi sp, sp, -16
3584; RV32-NEXT:    .cfi_def_cfa_offset 16
3585; RV32-NEXT:    sw a0, 8(sp)
3586; RV32-NEXT:    sw a1, 12(sp)
3587; RV32-NEXT:    addi a0, sp, 8
3588; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3589; RV32-NEXT:    vlse64.v v24, (a0), zero
3590; RV32-NEXT:    vmslt.vv v16, v8, v24, v0.t
3591; RV32-NEXT:    vmv1r.v v0, v16
3592; RV32-NEXT:    addi sp, sp, 16
3593; RV32-NEXT:    .cfi_def_cfa_offset 0
3594; RV32-NEXT:    ret
3595;
3596; RV64-LABEL: icmp_sgt_vx_swap_nxv8i64:
3597; RV64:       # %bb.0:
3598; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3599; RV64-NEXT:    vmslt.vx v16, v8, a0, v0.t
3600; RV64-NEXT:    vmv1r.v v0, v16
3601; RV64-NEXT:    ret
3602  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3603  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3604  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
3605  ret <vscale x 8 x i1> %v
3606}
3607
3608define <vscale x 8 x i1> @icmp_sgt_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3609; CHECK-LABEL: icmp_sgt_vi_nxv8i64:
3610; CHECK:       # %bb.0:
3611; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3612; CHECK-NEXT:    vmsgt.vi v16, v8, 4, v0.t
3613; CHECK-NEXT:    vmv1r.v v0, v16
3614; CHECK-NEXT:    ret
3615  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
3616  ret <vscale x 8 x i1> %v
3617}
3618
3619define <vscale x 8 x i1> @icmp_sgt_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3620; CHECK-LABEL: icmp_sgt_vi_swap_nxv8i64:
3621; CHECK:       # %bb.0:
3622; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3623; CHECK-NEXT:    vmsle.vi v16, v8, 3, v0.t
3624; CHECK-NEXT:    vmv1r.v v0, v16
3625; CHECK-NEXT:    ret
3626  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"sgt", <vscale x 8 x i1> %m, i32 %evl)
3627  ret <vscale x 8 x i1> %v
3628}
3629
3630define <vscale x 8 x i1> @icmp_sge_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3631; CHECK-LABEL: icmp_sge_vv_nxv8i64:
3632; CHECK:       # %bb.0:
3633; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3634; CHECK-NEXT:    vmsle.vv v24, v16, v8, v0.t
3635; CHECK-NEXT:    vmv1r.v v0, v24
3636; CHECK-NEXT:    ret
3637  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
3638  ret <vscale x 8 x i1> %v
3639}
3640
3641define <vscale x 8 x i1> @icmp_sge_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3642; RV32-LABEL: icmp_sge_vx_nxv8i64:
3643; RV32:       # %bb.0:
3644; RV32-NEXT:    addi sp, sp, -16
3645; RV32-NEXT:    .cfi_def_cfa_offset 16
3646; RV32-NEXT:    sw a0, 8(sp)
3647; RV32-NEXT:    sw a1, 12(sp)
3648; RV32-NEXT:    addi a0, sp, 8
3649; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3650; RV32-NEXT:    vlse64.v v24, (a0), zero
3651; RV32-NEXT:    vmsle.vv v16, v24, v8, v0.t
3652; RV32-NEXT:    vmv1r.v v0, v16
3653; RV32-NEXT:    addi sp, sp, 16
3654; RV32-NEXT:    .cfi_def_cfa_offset 0
3655; RV32-NEXT:    ret
3656;
3657; RV64-LABEL: icmp_sge_vx_nxv8i64:
3658; RV64:       # %bb.0:
3659; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3660; RV64-NEXT:    vmv.v.x v24, a0
3661; RV64-NEXT:    vmsle.vv v16, v24, v8, v0.t
3662; RV64-NEXT:    vmv1r.v v0, v16
3663; RV64-NEXT:    ret
3664  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3665  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3666  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
3667  ret <vscale x 8 x i1> %v
3668}
3669
3670define <vscale x 8 x i1> @icmp_sge_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3671; RV32-LABEL: icmp_sge_vx_swap_nxv8i64:
3672; RV32:       # %bb.0:
3673; RV32-NEXT:    addi sp, sp, -16
3674; RV32-NEXT:    .cfi_def_cfa_offset 16
3675; RV32-NEXT:    sw a0, 8(sp)
3676; RV32-NEXT:    sw a1, 12(sp)
3677; RV32-NEXT:    addi a0, sp, 8
3678; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3679; RV32-NEXT:    vlse64.v v24, (a0), zero
3680; RV32-NEXT:    vmsle.vv v16, v8, v24, v0.t
3681; RV32-NEXT:    vmv1r.v v0, v16
3682; RV32-NEXT:    addi sp, sp, 16
3683; RV32-NEXT:    .cfi_def_cfa_offset 0
3684; RV32-NEXT:    ret
3685;
3686; RV64-LABEL: icmp_sge_vx_swap_nxv8i64:
3687; RV64:       # %bb.0:
3688; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3689; RV64-NEXT:    vmsle.vx v16, v8, a0, v0.t
3690; RV64-NEXT:    vmv1r.v v0, v16
3691; RV64-NEXT:    ret
3692  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3693  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3694  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
3695  ret <vscale x 8 x i1> %v
3696}
3697
3698define <vscale x 8 x i1> @icmp_sge_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3699; CHECK-LABEL: icmp_sge_vi_nxv8i64:
3700; CHECK:       # %bb.0:
3701; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3702; CHECK-NEXT:    vmsgt.vi v16, v8, 3, v0.t
3703; CHECK-NEXT:    vmv1r.v v0, v16
3704; CHECK-NEXT:    ret
3705  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
3706  ret <vscale x 8 x i1> %v
3707}
3708
3709define <vscale x 8 x i1> @icmp_sge_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3710; CHECK-LABEL: icmp_sge_vi_swap_nxv8i64:
3711; CHECK:       # %bb.0:
3712; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3713; CHECK-NEXT:    vmsle.vi v16, v8, 4, v0.t
3714; CHECK-NEXT:    vmv1r.v v0, v16
3715; CHECK-NEXT:    ret
3716  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"sge", <vscale x 8 x i1> %m, i32 %evl)
3717  ret <vscale x 8 x i1> %v
3718}
3719
3720define <vscale x 8 x i1> @icmp_slt_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3721; CHECK-LABEL: icmp_slt_vv_nxv8i64:
3722; CHECK:       # %bb.0:
3723; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3724; CHECK-NEXT:    vmslt.vv v24, v8, v16, v0.t
3725; CHECK-NEXT:    vmv1r.v v0, v24
3726; CHECK-NEXT:    ret
3727  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
3728  ret <vscale x 8 x i1> %v
3729}
3730
3731define <vscale x 8 x i1> @icmp_slt_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3732; RV32-LABEL: icmp_slt_vx_nxv8i64:
3733; RV32:       # %bb.0:
3734; RV32-NEXT:    addi sp, sp, -16
3735; RV32-NEXT:    .cfi_def_cfa_offset 16
3736; RV32-NEXT:    sw a0, 8(sp)
3737; RV32-NEXT:    sw a1, 12(sp)
3738; RV32-NEXT:    addi a0, sp, 8
3739; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3740; RV32-NEXT:    vlse64.v v24, (a0), zero
3741; RV32-NEXT:    vmslt.vv v16, v8, v24, v0.t
3742; RV32-NEXT:    vmv1r.v v0, v16
3743; RV32-NEXT:    addi sp, sp, 16
3744; RV32-NEXT:    .cfi_def_cfa_offset 0
3745; RV32-NEXT:    ret
3746;
3747; RV64-LABEL: icmp_slt_vx_nxv8i64:
3748; RV64:       # %bb.0:
3749; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3750; RV64-NEXT:    vmslt.vx v16, v8, a0, v0.t
3751; RV64-NEXT:    vmv1r.v v0, v16
3752; RV64-NEXT:    ret
3753  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3754  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3755  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
3756  ret <vscale x 8 x i1> %v
3757}
3758
3759define <vscale x 8 x i1> @icmp_slt_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3760; RV32-LABEL: icmp_slt_vx_swap_nxv8i64:
3761; RV32:       # %bb.0:
3762; RV32-NEXT:    addi sp, sp, -16
3763; RV32-NEXT:    .cfi_def_cfa_offset 16
3764; RV32-NEXT:    sw a0, 8(sp)
3765; RV32-NEXT:    sw a1, 12(sp)
3766; RV32-NEXT:    addi a0, sp, 8
3767; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3768; RV32-NEXT:    vlse64.v v24, (a0), zero
3769; RV32-NEXT:    vmslt.vv v16, v24, v8, v0.t
3770; RV32-NEXT:    vmv1r.v v0, v16
3771; RV32-NEXT:    addi sp, sp, 16
3772; RV32-NEXT:    .cfi_def_cfa_offset 0
3773; RV32-NEXT:    ret
3774;
3775; RV64-LABEL: icmp_slt_vx_swap_nxv8i64:
3776; RV64:       # %bb.0:
3777; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3778; RV64-NEXT:    vmsgt.vx v16, v8, a0, v0.t
3779; RV64-NEXT:    vmv1r.v v0, v16
3780; RV64-NEXT:    ret
3781  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3782  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3783  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
3784  ret <vscale x 8 x i1> %v
3785}
3786
3787define <vscale x 8 x i1> @icmp_slt_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3788; CHECK-LABEL: icmp_slt_vi_nxv8i64:
3789; CHECK:       # %bb.0:
3790; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3791; CHECK-NEXT:    vmsle.vi v16, v8, 3, v0.t
3792; CHECK-NEXT:    vmv1r.v v0, v16
3793; CHECK-NEXT:    ret
3794  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
3795  ret <vscale x 8 x i1> %v
3796}
3797
3798define <vscale x 8 x i1> @icmp_slt_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3799; CHECK-LABEL: icmp_slt_vi_swap_nxv8i64:
3800; CHECK:       # %bb.0:
3801; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3802; CHECK-NEXT:    vmsgt.vi v16, v8, 4, v0.t
3803; CHECK-NEXT:    vmv1r.v v0, v16
3804; CHECK-NEXT:    ret
3805  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"slt", <vscale x 8 x i1> %m, i32 %evl)
3806  ret <vscale x 8 x i1> %v
3807}
3808
3809define <vscale x 8 x i1> @icmp_sle_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3810; CHECK-LABEL: icmp_sle_vv_nxv8i64:
3811; CHECK:       # %bb.0:
3812; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3813; CHECK-NEXT:    vmsle.vv v24, v8, v16, v0.t
3814; CHECK-NEXT:    vmv1r.v v0, v24
3815; CHECK-NEXT:    ret
3816  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
3817  ret <vscale x 8 x i1> %v
3818}
3819
3820define <vscale x 8 x i1> @icmp_sle_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3821; RV32-LABEL: icmp_sle_vx_nxv8i64:
3822; RV32:       # %bb.0:
3823; RV32-NEXT:    addi sp, sp, -16
3824; RV32-NEXT:    .cfi_def_cfa_offset 16
3825; RV32-NEXT:    sw a0, 8(sp)
3826; RV32-NEXT:    sw a1, 12(sp)
3827; RV32-NEXT:    addi a0, sp, 8
3828; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3829; RV32-NEXT:    vlse64.v v24, (a0), zero
3830; RV32-NEXT:    vmsle.vv v16, v8, v24, v0.t
3831; RV32-NEXT:    vmv1r.v v0, v16
3832; RV32-NEXT:    addi sp, sp, 16
3833; RV32-NEXT:    .cfi_def_cfa_offset 0
3834; RV32-NEXT:    ret
3835;
3836; RV64-LABEL: icmp_sle_vx_nxv8i64:
3837; RV64:       # %bb.0:
3838; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3839; RV64-NEXT:    vmsle.vx v16, v8, a0, v0.t
3840; RV64-NEXT:    vmv1r.v v0, v16
3841; RV64-NEXT:    ret
3842  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3843  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3844  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
3845  ret <vscale x 8 x i1> %v
3846}
3847
3848define <vscale x 8 x i1> @icmp_sle_vx_swap_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3849; RV32-LABEL: icmp_sle_vx_swap_nxv8i64:
3850; RV32:       # %bb.0:
3851; RV32-NEXT:    addi sp, sp, -16
3852; RV32-NEXT:    .cfi_def_cfa_offset 16
3853; RV32-NEXT:    sw a0, 8(sp)
3854; RV32-NEXT:    sw a1, 12(sp)
3855; RV32-NEXT:    addi a0, sp, 8
3856; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
3857; RV32-NEXT:    vlse64.v v24, (a0), zero
3858; RV32-NEXT:    vmsle.vv v16, v24, v8, v0.t
3859; RV32-NEXT:    vmv1r.v v0, v16
3860; RV32-NEXT:    addi sp, sp, 16
3861; RV32-NEXT:    .cfi_def_cfa_offset 0
3862; RV32-NEXT:    ret
3863;
3864; RV64-LABEL: icmp_sle_vx_swap_nxv8i64:
3865; RV64:       # %bb.0:
3866; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
3867; RV64-NEXT:    vmv.v.x v24, a0
3868; RV64-NEXT:    vmsle.vv v16, v24, v8, v0.t
3869; RV64-NEXT:    vmv1r.v v0, v16
3870; RV64-NEXT:    ret
3871  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
3872  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
3873  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %vb, <vscale x 8 x i64> %va, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
3874  ret <vscale x 8 x i1> %v
3875}
3876
3877define <vscale x 8 x i1> @icmp_sle_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3878; CHECK-LABEL: icmp_sle_vi_nxv8i64:
3879; CHECK:       # %bb.0:
3880; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3881; CHECK-NEXT:    vmsle.vi v16, v8, 4, v0.t
3882; CHECK-NEXT:    vmv1r.v v0, v16
3883; CHECK-NEXT:    ret
3884  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 4), metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
3885  ret <vscale x 8 x i1> %v
3886}
3887
3888define <vscale x 8 x i1> @icmp_sle_vi_swap_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
3889; CHECK-LABEL: icmp_sle_vi_swap_nxv8i64:
3890; CHECK:       # %bb.0:
3891; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
3892; CHECK-NEXT:    vmsgt.vi v16, v8, 3, v0.t
3893; CHECK-NEXT:    vmv1r.v v0, v16
3894; CHECK-NEXT:    ret
3895  %v = call <vscale x 8 x i1> @llvm.vp.icmp.nxv8i64(<vscale x 8 x i64> splat (i64 4), <vscale x 8 x i64> %va, metadata !"sle", <vscale x 8 x i1> %m, i32 %evl)
3896  ret <vscale x 8 x i1> %v
3897}
3898