Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / fixed-vectors-xsfvcp-x.ll
blob88803f7cd5d8936d5b9f05c41acf7f5c945b30d0
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN:  sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+zvfh,+xsfvcp \
3 ; RUN:    -verify-machineinstrs | FileCheck %s
4 ; RUN:  sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+zvfh,+xsfvcp \
5 ; RUN:    -verify-machineinstrs | FileCheck %s
7 define void @test_sf_vc_x_se_e8mf8(i8 zeroext %rs1, iXLen %vl) {
8 ; CHECK-LABEL: test_sf_vc_x_se_e8mf8:
9 ; CHECK:       # %bb.0: # %entry
10 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
11 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
12 ; CHECK-NEXT:    ret
13 entry:
14   tail call void @llvm.riscv.sf.vc.x.se.e8mf8.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 5, iXLen %vl)
15   ret void
18 declare void @llvm.riscv.sf.vc.x.se.e8mf8.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen)
20 define void @test_sf_vc_x_se_e8mf4(i8 zeroext %rs1, iXLen %vl) {
21 ; CHECK-LABEL: test_sf_vc_x_se_e8mf4:
22 ; CHECK:       # %bb.0: # %entry
23 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
24 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
25 ; CHECK-NEXT:    ret
26 entry:
27   tail call void @llvm.riscv.sf.vc.x.se.e8mf4.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 6, iXLen %vl)
28   ret void
31 declare void @llvm.riscv.sf.vc.x.se.e8mf4.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen)
33 define void @test_sf_vc_x_se_e8mf2(i8 zeroext %rs1, iXLen %vl) {
34 ; CHECK-LABEL: test_sf_vc_x_se_e8mf2:
35 ; CHECK:       # %bb.0: # %entry
36 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
37 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
38 ; CHECK-NEXT:    ret
39 entry:
40   tail call void @llvm.riscv.sf.vc.x.se.e8mf2.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 7, iXLen %vl)
41   ret void
44 declare void @llvm.riscv.sf.vc.x.se.e8mf2.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen)
46 define void @test_sf_vc_x_se_e8m1(i8 zeroext %rs1, iXLen %vl) {
47 ; CHECK-LABEL: test_sf_vc_x_se_e8m1:
48 ; CHECK:       # %bb.0: # %entry
49 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
50 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
51 ; CHECK-NEXT:    ret
52 entry:
53   tail call void @llvm.riscv.sf.vc.x.se.e8m1.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 0, iXLen %vl)
54   ret void
57 declare void @llvm.riscv.sf.vc.x.se.e8m1.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen)
59 define void @test_sf_vc_x_se_e8m2(i8 zeroext %rs1, iXLen %vl) {
60 ; CHECK-LABEL: test_sf_vc_x_se_e8m2:
61 ; CHECK:       # %bb.0: # %entry
62 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
63 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
64 ; CHECK-NEXT:    ret
65 entry:
66   tail call void @llvm.riscv.sf.vc.x.se.e8m2.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 1, iXLen %vl)
67   ret void
70 declare void @llvm.riscv.sf.vc.x.se.e8m2.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen)
72 define void @test_sf_vc_x_se_e8m4(i8 zeroext %rs1, iXLen %vl) {
73 ; CHECK-LABEL: test_sf_vc_x_se_e8m4:
74 ; CHECK:       # %bb.0: # %entry
75 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
76 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
77 ; CHECK-NEXT:    ret
78 entry:
79   tail call void @llvm.riscv.sf.vc.x.se.e8m4.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 2, iXLen %vl)
80   ret void
83 declare void @llvm.riscv.sf.vc.x.se.e8m4.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen)
85 define void @test_sf_vc_x_se_e8m8(i8 zeroext %rs1, iXLen %vl) {
86 ; CHECK-LABEL: test_sf_vc_x_se_e8m8:
87 ; CHECK:       # %bb.0: # %entry
88 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
89 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
90 ; CHECK-NEXT:    ret
91 entry:
92   tail call void @llvm.riscv.sf.vc.x.se.e8m8.iXLen.i8.iXLen(iXLen 3, iXLen 31, iXLen 31, i8 %rs1, iXLen 8, iXLen 3, iXLen %vl)
93   ret void
96 declare void @llvm.riscv.sf.vc.x.se.e8m8.iXLen.i8.iXLen(iXLen, iXLen, iXLen, i8, iXLen, iXLen, iXLen)
98 define void @test_sf_vc_x_se_e16mf4(i16 zeroext %rs1, iXLen %vl) {
99 ; CHECK-LABEL: test_sf_vc_x_se_e16mf4:
100 ; CHECK:       # %bb.0: # %entry
101 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
102 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
103 ; CHECK-NEXT:    ret
104 entry:
105   tail call void @llvm.riscv.sf.vc.x.se.e16mf4.iXLen.i16.iXLen(iXLen 3, iXLen 31, iXLen 31, i16 %rs1, iXLen 16, iXLen 6, iXLen %vl)
106   ret void
109 declare void @llvm.riscv.sf.vc.x.se.e16mf4.iXLen.i16.iXLen(iXLen, iXLen, iXLen, i16, iXLen, iXLen, iXLen)
111 define void @test_sf_vc_x_se_e16mf2(i16 zeroext %rs1, iXLen %vl) {
112 ; CHECK-LABEL: test_sf_vc_x_se_e16mf2:
113 ; CHECK:       # %bb.0: # %entry
114 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
115 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
116 ; CHECK-NEXT:    ret
117 entry:
118   tail call void @llvm.riscv.sf.vc.x.se.e16mf2.iXLen.i16.iXLen(iXLen 3, iXLen 31, iXLen 31, i16 %rs1, iXLen 16, iXLen 7, iXLen %vl)
119   ret void
122 declare void @llvm.riscv.sf.vc.x.se.e16mf2.iXLen.i16.iXLen(iXLen, iXLen, iXLen, i16, iXLen, iXLen, iXLen)
124 define void @test_sf_vc_x_se_e16m1(i16 zeroext %rs1, iXLen %vl) {
125 ; CHECK-LABEL: test_sf_vc_x_se_e16m1:
126 ; CHECK:       # %bb.0: # %entry
127 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
128 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
129 ; CHECK-NEXT:    ret
130 entry:
131   tail call void @llvm.riscv.sf.vc.x.se.e16m1.iXLen.i16.iXLen(iXLen 3, iXLen 31, iXLen 31, i16 %rs1, iXLen 16, iXLen 0, iXLen %vl)
132   ret void
135 declare void @llvm.riscv.sf.vc.x.se.e16m1.iXLen.i16.iXLen(iXLen, iXLen, iXLen, i16, iXLen, iXLen, iXLen)
137 define void @test_sf_vc_x_se_e16m2(i16 zeroext %rs1, iXLen %vl) {
138 ; CHECK-LABEL: test_sf_vc_x_se_e16m2:
139 ; CHECK:       # %bb.0: # %entry
140 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
141 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
142 ; CHECK-NEXT:    ret
143 entry:
144   tail call void @llvm.riscv.sf.vc.x.se.e16m2.iXLen.i16.iXLen(iXLen 3, iXLen 31, iXLen 31, i16 %rs1, iXLen 16, iXLen 1, iXLen %vl)
145   ret void
148 declare void @llvm.riscv.sf.vc.x.se.e16m2.iXLen.i16.iXLen(iXLen, iXLen, iXLen, i16, iXLen, iXLen, iXLen)
150 define void @test_sf_vc_x_se_e16m4(i16 zeroext %rs1, iXLen %vl) {
151 ; CHECK-LABEL: test_sf_vc_x_se_e16m4:
152 ; CHECK:       # %bb.0: # %entry
153 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
154 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
155 ; CHECK-NEXT:    ret
156 entry:
157   tail call void @llvm.riscv.sf.vc.x.se.e16m4.iXLen.i16.iXLen(iXLen 3, iXLen 31, iXLen 31, i16 %rs1, iXLen 16, iXLen 2, iXLen %vl)
158   ret void
161 declare void @llvm.riscv.sf.vc.x.se.e16m4.iXLen.i16.iXLen(iXLen, iXLen, iXLen, i16, iXLen, iXLen, iXLen)
163 define void @test_sf_vc_x_se_e16m8(i16 zeroext %rs1, iXLen %vl) {
164 ; CHECK-LABEL: test_sf_vc_x_se_e16m8:
165 ; CHECK:       # %bb.0: # %entry
166 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
167 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
168 ; CHECK-NEXT:    ret
169 entry:
170   tail call void @llvm.riscv.sf.vc.x.se.e16m8.iXLen.i16.iXLen(iXLen 3, iXLen 31, iXLen 31, i16 %rs1, iXLen 16, iXLen 3, iXLen %vl)
171   ret void
174 declare void @llvm.riscv.sf.vc.x.se.e16m8.iXLen.i16.iXLen(iXLen, iXLen, iXLen, i16, iXLen, iXLen, iXLen)
176 define void @test_sf_vc_x_se_e32mf2(i32 signext %rs1, iXLen %vl) {
177 ; CHECK-LABEL: test_sf_vc_x_se_e32mf2:
178 ; CHECK:       # %bb.0: # %entry
179 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
180 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
181 ; CHECK-NEXT:    ret
182 entry:
183   tail call void @llvm.riscv.sf.vc.x.se.e32mf2.iXLen.i32.iXLen(iXLen 3, iXLen 31, iXLen 31, i32 %rs1, iXLen 32, iXLen 7, iXLen %vl)
184   ret void
187 declare void @llvm.riscv.sf.vc.x.se.e32mf2.iXLen.i32.iXLen(iXLen, iXLen, iXLen, i32, iXLen, iXLen, iXLen)
189 define void @test_sf_vc_x_se_e32m1(i32 signext %rs1, iXLen %vl) {
190 ; CHECK-LABEL: test_sf_vc_x_se_e32m1:
191 ; CHECK:       # %bb.0: # %entry
192 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
193 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
194 ; CHECK-NEXT:    ret
195 entry:
196   tail call void @llvm.riscv.sf.vc.x.se.e32m1.iXLen.i32.iXLen(iXLen 3, iXLen 31, iXLen 31, i32 %rs1, iXLen 32, iXLen 0, iXLen %vl)
197   ret void
200 declare void @llvm.riscv.sf.vc.x.se.e32m1.iXLen.i32.iXLen(iXLen, iXLen, iXLen, i32, iXLen, iXLen, iXLen)
202 define void @test_sf_vc_x_se_e32m2(i32 signext %rs1, iXLen %vl) {
203 ; CHECK-LABEL: test_sf_vc_x_se_e32m2:
204 ; CHECK:       # %bb.0: # %entry
205 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
206 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
207 ; CHECK-NEXT:    ret
208 entry:
209   tail call void @llvm.riscv.sf.vc.x.se.e32m2.iXLen.i32.iXLen(iXLen 3, iXLen 31, iXLen 31, i32 %rs1, iXLen 32, iXLen 1, iXLen %vl)
210   ret void
213 declare void @llvm.riscv.sf.vc.x.se.e32m2.iXLen.i32.iXLen(iXLen, iXLen, iXLen, i32, iXLen, iXLen, iXLen)
215 define void @test_sf_vc_x_se_e32m4(i32 signext %rs1, iXLen %vl) {
216 ; CHECK-LABEL: test_sf_vc_x_se_e32m4:
217 ; CHECK:       # %bb.0: # %entry
218 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
219 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
220 ; CHECK-NEXT:    ret
221 entry:
222   tail call void @llvm.riscv.sf.vc.x.se.e32m4.iXLen.i32.iXLen(iXLen 3, iXLen 31, iXLen 31, i32 %rs1, iXLen 32, iXLen 2, iXLen %vl)
223   ret void
226 declare void @llvm.riscv.sf.vc.x.se.e32m4.iXLen.i32.iXLen(iXLen, iXLen, iXLen, i32, iXLen, iXLen, iXLen)
228 define void @test_sf_vc_x_se_e32m8(i32 signext %rs1, iXLen %vl) {
229 ; CHECK-LABEL: test_sf_vc_x_se_e32m8:
230 ; CHECK:       # %bb.0: # %entry
231 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
232 ; CHECK-NEXT:    sf.vc.x 3, 31, 31, a0
233 ; CHECK-NEXT:    ret
234 entry:
235   tail call void @llvm.riscv.sf.vc.x.se.e32m8.iXLen.i32.iXLen(iXLen 3, iXLen 31, iXLen 31, i32 %rs1, iXLen 32, iXLen 3, iXLen %vl)
236   ret void
239 declare void @llvm.riscv.sf.vc.x.se.e32m8.iXLen.i32.iXLen(iXLen, iXLen, iXLen, i32, iXLen, iXLen, iXLen)
241 define <1 x i8> @test_sf_vc_v_x_se_e8mf8(i8 zeroext %rs1, iXLen %vl) {
242 ; CHECK-LABEL: test_sf_vc_v_x_se_e8mf8:
243 ; CHECK:       # %bb.0: # %entry
244 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
245 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
246 ; CHECK-NEXT:    ret
247 entry:
248   %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.x.se.nxv1i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
249   ret <1 x i8> %0
252 declare <1 x i8> @llvm.riscv.sf.vc.v.x.se.nxv1i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
254 define <2 x i8> @test_sf_vc_v_x_se_e8mf4(i8 zeroext %rs1, iXLen %vl) {
255 ; CHECK-LABEL: test_sf_vc_v_x_se_e8mf4:
256 ; CHECK:       # %bb.0: # %entry
257 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
258 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
259 ; CHECK-NEXT:    ret
260 entry:
261   %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.x.se.nxv2i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
262   ret <2 x i8> %0
265 declare <2 x i8> @llvm.riscv.sf.vc.v.x.se.nxv2i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
267 define <4 x i8> @test_sf_vc_v_x_se_e8mf2(i8 zeroext %rs1, iXLen %vl) {
268 ; CHECK-LABEL: test_sf_vc_v_x_se_e8mf2:
269 ; CHECK:       # %bb.0: # %entry
270 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
271 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
272 ; CHECK-NEXT:    ret
273 entry:
274   %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.x.se.nxv4i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
275   ret <4 x i8> %0
278 declare <4 x i8> @llvm.riscv.sf.vc.v.x.se.nxv4i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
280 define <8 x i8> @test_sf_vc_v_x_se_e8m1(i8 zeroext %rs1, iXLen %vl) {
281 ; CHECK-LABEL: test_sf_vc_v_x_se_e8m1:
282 ; CHECK:       # %bb.0: # %entry
283 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
284 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
285 ; CHECK-NEXT:    ret
286 entry:
287   %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.x.se.nxv8i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
288   ret <8 x i8> %0
291 declare <8 x i8> @llvm.riscv.sf.vc.v.x.se.nxv8i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
293 define <16 x i8> @test_sf_vc_v_x_se_e8m2(i8 zeroext %rs1, iXLen %vl) {
294 ; CHECK-LABEL: test_sf_vc_v_x_se_e8m2:
295 ; CHECK:       # %bb.0: # %entry
296 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
297 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
298 ; CHECK-NEXT:    ret
299 entry:
300   %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.x.se.nxv16i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
301   ret <16 x i8> %0
304 declare <16 x i8> @llvm.riscv.sf.vc.v.x.se.nxv16i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
306 define <32 x i8> @test_sf_vc_v_x_se_e8m4(i8 zeroext %rs1, iXLen %vl) {
307 ; CHECK-LABEL: test_sf_vc_v_x_se_e8m4:
308 ; CHECK:       # %bb.0: # %entry
309 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
310 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
311 ; CHECK-NEXT:    ret
312 entry:
313   %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.x.se.nxv32i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
314   ret <32 x i8> %0
317 declare <32 x i8> @llvm.riscv.sf.vc.v.x.se.nxv32i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
319 define <64 x i8> @test_sf_vc_v_x_se_e8m8(i8 zeroext %rs1, iXLen %vl) {
320 ; CHECK-LABEL: test_sf_vc_v_x_se_e8m8:
321 ; CHECK:       # %bb.0: # %entry
322 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
323 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
324 ; CHECK-NEXT:    ret
325 entry:
326   %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.x.se.nxv64i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
327   ret <64 x i8> %0
330 declare <64 x i8> @llvm.riscv.sf.vc.v.x.se.nxv64i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
332 define <1 x i16> @test_sf_vc_v_x_se_e16mf4(i16 zeroext %rs1, iXLen %vl) {
333 ; CHECK-LABEL: test_sf_vc_v_x_se_e16mf4:
334 ; CHECK:       # %bb.0: # %entry
335 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
336 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
337 ; CHECK-NEXT:    ret
338 entry:
339   %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.x.se.nxv1i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl)
340   ret <1 x i16> %0
343 declare <1 x i16> @llvm.riscv.sf.vc.v.x.se.nxv1i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen)
345 define <2 x i16> @test_sf_vc_v_x_se_e16mf2(i16 zeroext %rs1, iXLen %vl) {
346 ; CHECK-LABEL: test_sf_vc_v_x_se_e16mf2:
347 ; CHECK:       # %bb.0: # %entry
348 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
349 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
350 ; CHECK-NEXT:    ret
351 entry:
352   %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.x.se.nxv2i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl)
353   ret <2 x i16> %0
356 declare <2 x i16> @llvm.riscv.sf.vc.v.x.se.nxv2i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen)
358 define <4 x i16> @test_sf_vc_v_x_se_e16m1(i16 zeroext %rs1, iXLen %vl) {
359 ; CHECK-LABEL: test_sf_vc_v_x_se_e16m1:
360 ; CHECK:       # %bb.0: # %entry
361 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
362 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
363 ; CHECK-NEXT:    ret
364 entry:
365   %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.x.se.nxv4i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl)
366   ret <4 x i16> %0
369 declare <4 x i16> @llvm.riscv.sf.vc.v.x.se.nxv4i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen)
371 define <8 x i16> @test_sf_vc_v_x_se_e16m2(i16 zeroext %rs1, iXLen %vl) {
372 ; CHECK-LABEL: test_sf_vc_v_x_se_e16m2:
373 ; CHECK:       # %bb.0: # %entry
374 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
375 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
376 ; CHECK-NEXT:    ret
377 entry:
378   %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.x.se.nxv8i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl)
379   ret <8 x i16> %0
382 declare <8 x i16> @llvm.riscv.sf.vc.v.x.se.nxv8i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen)
384 define <16 x i16> @test_sf_vc_v_x_se_e16m4(i16 zeroext %rs1, iXLen %vl) {
385 ; CHECK-LABEL: test_sf_vc_v_x_se_e16m4:
386 ; CHECK:       # %bb.0: # %entry
387 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
388 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
389 ; CHECK-NEXT:    ret
390 entry:
391   %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.x.se.nxv16i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl)
392   ret <16 x i16> %0
395 declare <16 x i16> @llvm.riscv.sf.vc.v.x.se.nxv16i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen)
397 define <32 x i16> @test_sf_vc_v_x_se_e16m8(i16 zeroext %rs1, iXLen %vl) {
398 ; CHECK-LABEL: test_sf_vc_v_x_se_e16m8:
399 ; CHECK:       # %bb.0: # %entry
400 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
401 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
402 ; CHECK-NEXT:    ret
403 entry:
404   %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.x.se.nxv32i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl)
405   ret <32 x i16> %0
408 declare <32 x i16> @llvm.riscv.sf.vc.v.x.se.nxv32i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen)
410 define <1 x i32> @test_sf_vc_v_x_se_e32mf2(i32 signext %rs1, iXLen %vl) {
411 ; CHECK-LABEL: test_sf_vc_v_x_se_e32mf2:
412 ; CHECK:       # %bb.0: # %entry
413 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
414 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
415 ; CHECK-NEXT:    ret
416 entry:
417   %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.x.se.nxv1i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl)
418   ret <1 x i32> %0
421 declare <1 x i32> @llvm.riscv.sf.vc.v.x.se.nxv1i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen)
423 define <2 x i32> @test_sf_vc_v_x_se_e32m1(i32 signext %rs1, iXLen %vl) {
424 ; CHECK-LABEL: test_sf_vc_v_x_se_e32m1:
425 ; CHECK:       # %bb.0: # %entry
426 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
427 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
428 ; CHECK-NEXT:    ret
429 entry:
430   %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.x.se.nxv2i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl)
431   ret <2 x i32> %0
434 declare <2 x i32> @llvm.riscv.sf.vc.v.x.se.nxv2i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen)
436 define <4 x i32> @test_sf_vc_v_x_se_e32m2(i32 signext %rs1, iXLen %vl) {
437 ; CHECK-LABEL: test_sf_vc_v_x_se_e32m2:
438 ; CHECK:       # %bb.0: # %entry
439 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
440 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
441 ; CHECK-NEXT:    ret
442 entry:
443   %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.x.se.nxv4i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl)
444   ret <4 x i32> %0
447 declare <4 x i32> @llvm.riscv.sf.vc.v.x.se.nxv4i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen)
449 define <8 x i32> @test_sf_vc_v_x_se_e32m4(i32 signext %rs1, iXLen %vl) {
450 ; CHECK-LABEL: test_sf_vc_v_x_se_e32m4:
451 ; CHECK:       # %bb.0: # %entry
452 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
453 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
454 ; CHECK-NEXT:    ret
455 entry:
456   %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.x.se.nxv8i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl)
457   ret <8 x i32> %0
460 declare <8 x i32> @llvm.riscv.sf.vc.v.x.se.nxv8i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen)
462 define <16 x i32> @test_sf_vc_v_x_se_e32m8(i32 signext %rs1, iXLen %vl) {
463 ; CHECK-LABEL: test_sf_vc_v_x_se_e32m8:
464 ; CHECK:       # %bb.0: # %entry
465 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
466 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
467 ; CHECK-NEXT:    ret
468 entry:
469   %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.x.se.nxv16i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl)
470   ret <16 x i32> %0
473 declare <16 x i32> @llvm.riscv.sf.vc.v.x.se.nxv16i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen)
475 define <1 x i8> @test_sf_vc_v_x_e8mf8(i8 zeroext %rs1, iXLen %vl) {
476 ; CHECK-LABEL: test_sf_vc_v_x_e8mf8:
477 ; CHECK:       # %bb.0: # %entry
478 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
479 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
480 ; CHECK-NEXT:    ret
481 entry:
482   %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.x.nxv1i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
483   ret <1 x i8> %0
486 declare <1 x i8> @llvm.riscv.sf.vc.v.x.nxv1i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
488 define <2 x i8> @test_sf_vc_v_x_e8mf4(i8 zeroext %rs1, iXLen %vl) {
489 ; CHECK-LABEL: test_sf_vc_v_x_e8mf4:
490 ; CHECK:       # %bb.0: # %entry
491 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
492 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
493 ; CHECK-NEXT:    ret
494 entry:
495   %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.x.nxv2i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
496   ret <2 x i8> %0
499 declare <2 x i8> @llvm.riscv.sf.vc.v.x.nxv2i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
501 define <4 x i8> @test_sf_vc_v_x_e8mf2(i8 zeroext %rs1, iXLen %vl) {
502 ; CHECK-LABEL: test_sf_vc_v_x_e8mf2:
503 ; CHECK:       # %bb.0: # %entry
504 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
505 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
506 ; CHECK-NEXT:    ret
507 entry:
508   %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.x.nxv4i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
509   ret <4 x i8> %0
512 declare <4 x i8> @llvm.riscv.sf.vc.v.x.nxv4i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
514 define <8 x i8> @test_sf_vc_v_x_e8m1(i8 zeroext %rs1, iXLen %vl) {
515 ; CHECK-LABEL: test_sf_vc_v_x_e8m1:
516 ; CHECK:       # %bb.0: # %entry
517 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
518 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
519 ; CHECK-NEXT:    ret
520 entry:
521   %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.x.nxv8i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
522   ret <8 x i8> %0
525 declare <8 x i8> @llvm.riscv.sf.vc.v.x.nxv8i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
527 define <16 x i8> @test_sf_vc_v_x_e8m2(i8 zeroext %rs1, iXLen %vl) {
528 ; CHECK-LABEL: test_sf_vc_v_x_e8m2:
529 ; CHECK:       # %bb.0: # %entry
530 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
531 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
532 ; CHECK-NEXT:    ret
533 entry:
534   %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.x.nxv16i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
535   ret <16 x i8> %0
538 declare <16 x i8> @llvm.riscv.sf.vc.v.x.nxv16i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
540 define <32 x i8> @test_sf_vc_v_x_e8m4(i8 zeroext %rs1, iXLen %vl) {
541 ; CHECK-LABEL: test_sf_vc_v_x_e8m4:
542 ; CHECK:       # %bb.0: # %entry
543 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
544 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
545 ; CHECK-NEXT:    ret
546 entry:
547   %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.x.nxv32i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
548   ret <32 x i8> %0
551 declare <32 x i8> @llvm.riscv.sf.vc.v.x.nxv32i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
553 define <64 x i8> @test_sf_vc_v_x_e8m8(i8 zeroext %rs1, iXLen %vl) {
554 ; CHECK-LABEL: test_sf_vc_v_x_e8m8:
555 ; CHECK:       # %bb.0: # %entry
556 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
557 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
558 ; CHECK-NEXT:    ret
559 entry:
560   %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.x.nxv64i8.iXLen.i8.iXLen(iXLen 3, iXLen 31, i8 %rs1, iXLen %vl)
561   ret <64 x i8> %0
564 declare <64 x i8> @llvm.riscv.sf.vc.v.x.nxv64i8.iXLen.i8.iXLen(iXLen, iXLen, i8, iXLen)
566 define <1 x i16> @test_sf_vc_v_x_e16mf4(i16 zeroext %rs1, iXLen %vl) {
567 ; CHECK-LABEL: test_sf_vc_v_x_e16mf4:
568 ; CHECK:       # %bb.0: # %entry
569 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
570 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
571 ; CHECK-NEXT:    ret
572 entry:
573   %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.x.nxv1i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl)
574   ret <1 x i16> %0
577 declare <1 x i16> @llvm.riscv.sf.vc.v.x.nxv1i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen)
579 define <2 x i16> @test_sf_vc_v_x_e16mf2(i16 zeroext %rs1, iXLen %vl) {
580 ; CHECK-LABEL: test_sf_vc_v_x_e16mf2:
581 ; CHECK:       # %bb.0: # %entry
582 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
583 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
584 ; CHECK-NEXT:    ret
585 entry:
586   %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.x.nxv2i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl)
587   ret <2 x i16> %0
590 declare <2 x i16> @llvm.riscv.sf.vc.v.x.nxv2i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen)
592 define <4 x i16> @test_sf_vc_v_x_e16m1(i16 zeroext %rs1, iXLen %vl) {
593 ; CHECK-LABEL: test_sf_vc_v_x_e16m1:
594 ; CHECK:       # %bb.0: # %entry
595 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
596 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
597 ; CHECK-NEXT:    ret
598 entry:
599   %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.x.nxv4i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl)
600   ret <4 x i16> %0
603 declare <4 x i16> @llvm.riscv.sf.vc.v.x.nxv4i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen)
605 define <8 x i16> @test_sf_vc_v_x_e16m2(i16 zeroext %rs1, iXLen %vl) {
606 ; CHECK-LABEL: test_sf_vc_v_x_e16m2:
607 ; CHECK:       # %bb.0: # %entry
608 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
609 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
610 ; CHECK-NEXT:    ret
611 entry:
612   %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.x.nxv8i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl)
613   ret <8 x i16> %0
616 declare <8 x i16> @llvm.riscv.sf.vc.v.x.nxv8i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen)
618 define <16 x i16> @test_sf_vc_v_x_e16m4(i16 zeroext %rs1, iXLen %vl) {
619 ; CHECK-LABEL: test_sf_vc_v_x_e16m4:
620 ; CHECK:       # %bb.0: # %entry
621 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
622 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
623 ; CHECK-NEXT:    ret
624 entry:
625   %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.x.nxv16i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl)
626   ret <16 x i16> %0
629 declare <16 x i16> @llvm.riscv.sf.vc.v.x.nxv16i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen)
631 define <32 x i16> @test_sf_vc_v_x_e16m8(i16 zeroext %rs1, iXLen %vl) {
632 ; CHECK-LABEL: test_sf_vc_v_x_e16m8:
633 ; CHECK:       # %bb.0: # %entry
634 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
635 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
636 ; CHECK-NEXT:    ret
637 entry:
638   %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.x.nxv32i16.iXLen.i16.iXLen(iXLen 3, iXLen 31, i16 %rs1, iXLen %vl)
639   ret <32 x i16> %0
642 declare <32 x i16> @llvm.riscv.sf.vc.v.x.nxv32i16.iXLen.i16.iXLen(iXLen, iXLen, i16, iXLen)
644 define <1 x i32> @test_sf_vc_v_x_e32mf2(i32 signext %rs1, iXLen %vl) {
645 ; CHECK-LABEL: test_sf_vc_v_x_e32mf2:
646 ; CHECK:       # %bb.0: # %entry
647 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
648 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
649 ; CHECK-NEXT:    ret
650 entry:
651   %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.x.nxv1i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl)
652   ret <1 x i32> %0
655 declare <1 x i32> @llvm.riscv.sf.vc.v.x.nxv1i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen)
657 define <2 x i32> @test_sf_vc_v_x_e32m1(i32 signext %rs1, iXLen %vl) {
658 ; CHECK-LABEL: test_sf_vc_v_x_e32m1:
659 ; CHECK:       # %bb.0: # %entry
660 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
661 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
662 ; CHECK-NEXT:    ret
663 entry:
664   %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.x.nxv2i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl)
665   ret <2 x i32> %0
668 declare <2 x i32> @llvm.riscv.sf.vc.v.x.nxv2i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen)
670 define <4 x i32> @test_sf_vc_v_x_e32m2(i32 signext %rs1, iXLen %vl) {
671 ; CHECK-LABEL: test_sf_vc_v_x_e32m2:
672 ; CHECK:       # %bb.0: # %entry
673 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
674 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
675 ; CHECK-NEXT:    ret
676 entry:
677   %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.x.nxv4i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl)
678   ret <4 x i32> %0
681 declare <4 x i32> @llvm.riscv.sf.vc.v.x.nxv4i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen)
683 define <8 x i32> @test_sf_vc_v_x_e32m4(i32 signext %rs1, iXLen %vl) {
684 ; CHECK-LABEL: test_sf_vc_v_x_e32m4:
685 ; CHECK:       # %bb.0: # %entry
686 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
687 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
688 ; CHECK-NEXT:    ret
689 entry:
690   %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.x.nxv8i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl)
691   ret <8 x i32> %0
694 declare <8 x i32> @llvm.riscv.sf.vc.v.x.nxv8i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen)
696 define <16 x i32> @test_sf_vc_v_x_e32m8(i32 signext %rs1, iXLen %vl) {
697 ; CHECK-LABEL: test_sf_vc_v_x_e32m8:
698 ; CHECK:       # %bb.0: # %entry
699 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
700 ; CHECK-NEXT:    sf.vc.v.x 3, 31, v8, a0
701 ; CHECK-NEXT:    ret
702 entry:
703   %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.x.nxv16i32.iXLen.i32.iXLen(iXLen 3, iXLen 31, i32 %rs1, iXLen %vl)
704   ret <16 x i32> %0
707 declare <16 x i32> @llvm.riscv.sf.vc.v.x.nxv16i32.iXLen.i32.iXLen(iXLen, iXLen, i32, iXLen)
709 define void @test_sf_vc_i_se_e8mf8(iXLen %vl) {
710 ; CHECK-LABEL: test_sf_vc_i_se_e8mf8:
711 ; CHECK:       # %bb.0: # %entry
712 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
713 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
714 ; CHECK-NEXT:    ret
715 entry:
716   tail call void @llvm.riscv.sf.vc.i.se.e8mf8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 5, iXLen %vl)
717   ret void
720 declare void @llvm.riscv.sf.vc.i.se.e8mf8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
722 define void @test_sf_vc_i_se_e8mf4(iXLen %vl) {
723 ; CHECK-LABEL: test_sf_vc_i_se_e8mf4:
724 ; CHECK:       # %bb.0: # %entry
725 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
726 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
727 ; CHECK-NEXT:    ret
728 entry:
729   tail call void @llvm.riscv.sf.vc.i.se.e8mf4.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 6, iXLen %vl)
730   ret void
733 declare void @llvm.riscv.sf.vc.i.se.e8mf4.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
735 define void @test_sf_vc_i_se_e8mf2(iXLen %vl) {
736 ; CHECK-LABEL: test_sf_vc_i_se_e8mf2:
737 ; CHECK:       # %bb.0: # %entry
738 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
739 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
740 ; CHECK-NEXT:    ret
741 entry:
742   tail call void @llvm.riscv.sf.vc.i.se.e8mf2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 7, iXLen %vl)
743   ret void
746 declare void @llvm.riscv.sf.vc.i.se.e8mf2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
748 define void @test_sf_vc_i_se_e8m1(iXLen %vl) {
749 ; CHECK-LABEL: test_sf_vc_i_se_e8m1:
750 ; CHECK:       # %bb.0: # %entry
751 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
752 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
753 ; CHECK-NEXT:    ret
754 entry:
755   tail call void @llvm.riscv.sf.vc.i.se.e8m1.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 0, iXLen %vl)
756   ret void
759 declare void @llvm.riscv.sf.vc.i.se.e8m1.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
761 define void @test_sf_vc_i_se_e8m2(iXLen %vl) {
762 ; CHECK-LABEL: test_sf_vc_i_se_e8m2:
763 ; CHECK:       # %bb.0: # %entry
764 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
765 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
766 ; CHECK-NEXT:    ret
767 entry:
768   tail call void @llvm.riscv.sf.vc.i.se.e8m2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 1, iXLen %vl)
769   ret void
772 declare void @llvm.riscv.sf.vc.i.se.e8m2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
774 define void @test_sf_vc_i_se_e8m4(iXLen %vl) {
775 ; CHECK-LABEL: test_sf_vc_i_se_e8m4:
776 ; CHECK:       # %bb.0: # %entry
777 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
778 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
779 ; CHECK-NEXT:    ret
780 entry:
781   tail call void @llvm.riscv.sf.vc.i.se.e8m4.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 2, iXLen %vl)
782   ret void
785 declare void @llvm.riscv.sf.vc.i.se.e8m4.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
787 define void @test_sf_vc_i_se_e8m8(iXLen %vl) {
788 ; CHECK-LABEL: test_sf_vc_i_se_e8m8:
789 ; CHECK:       # %bb.0: # %entry
790 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
791 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
792 ; CHECK-NEXT:    ret
793 entry:
794   tail call void @llvm.riscv.sf.vc.i.se.e8m8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 8, iXLen 3, iXLen %vl)
795   ret void
798 declare void @llvm.riscv.sf.vc.i.se.e8m8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
800 define void @test_sf_vc_i_se_e16mf4(iXLen %vl) {
801 ; CHECK-LABEL: test_sf_vc_i_se_e16mf4:
802 ; CHECK:       # %bb.0: # %entry
803 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
804 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
805 ; CHECK-NEXT:    ret
806 entry:
807   tail call void @llvm.riscv.sf.vc.i.se.e16mf4.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 16, iXLen 6, iXLen %vl)
808   ret void
811 declare void @llvm.riscv.sf.vc.i.se.e16mf4.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
813 define void @test_sf_vc_i_se_e16mf2(iXLen %vl) {
814 ; CHECK-LABEL: test_sf_vc_i_se_e16mf2:
815 ; CHECK:       # %bb.0: # %entry
816 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
817 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
818 ; CHECK-NEXT:    ret
819 entry:
820   tail call void @llvm.riscv.sf.vc.i.se.e16mf2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 16, iXLen 7, iXLen %vl)
821   ret void
824 declare void @llvm.riscv.sf.vc.i.se.e16mf2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
826 define void @test_sf_vc_i_se_e16m1(iXLen %vl) {
827 ; CHECK-LABEL: test_sf_vc_i_se_e16m1:
828 ; CHECK:       # %bb.0: # %entry
829 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
830 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
831 ; CHECK-NEXT:    ret
832 entry:
833   tail call void @llvm.riscv.sf.vc.i.se.e16m1.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 16, iXLen 0, iXLen %vl)
834   ret void
837 declare void @llvm.riscv.sf.vc.i.se.e16m1.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
839 define void @test_sf_vc_i_se_e16m2(iXLen %vl) {
840 ; CHECK-LABEL: test_sf_vc_i_se_e16m2:
841 ; CHECK:       # %bb.0: # %entry
842 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
843 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
844 ; CHECK-NEXT:    ret
845 entry:
846   tail call void @llvm.riscv.sf.vc.i.se.e16m2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 16, iXLen 1, iXLen %vl)
847   ret void
850 declare void @llvm.riscv.sf.vc.i.se.e16m2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
852 define void @test_sf_vc_i_se_e16m4(iXLen %vl) {
853 ; CHECK-LABEL: test_sf_vc_i_se_e16m4:
854 ; CHECK:       # %bb.0: # %entry
855 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
856 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
857 ; CHECK-NEXT:    ret
858 entry:
859   tail call void @llvm.riscv.sf.vc.i.se.e16m4.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 16, iXLen 2, iXLen %vl)
860   ret void
863 declare void @llvm.riscv.sf.vc.i.se.e16m4.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
865 define void @test_sf_vc_i_se_e16m8(iXLen %vl) {
866 ; CHECK-LABEL: test_sf_vc_i_se_e16m8:
867 ; CHECK:       # %bb.0: # %entry
868 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
869 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
870 ; CHECK-NEXT:    ret
871 entry:
872   tail call void @llvm.riscv.sf.vc.i.se.e16m8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 16, iXLen 3, iXLen %vl)
873   ret void
876 declare void @llvm.riscv.sf.vc.i.se.e16m8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
878 define void @test_sf_vc_i_se_e32mf2(iXLen %vl) {
879 ; CHECK-LABEL: test_sf_vc_i_se_e32mf2:
880 ; CHECK:       # %bb.0: # %entry
881 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
882 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
883 ; CHECK-NEXT:    ret
884 entry:
885   tail call void @llvm.riscv.sf.vc.i.se.e32mf2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 32, iXLen 7, iXLen %vl)
886   ret void
889 declare void @llvm.riscv.sf.vc.i.se.e32mf2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
891 define void @test_sf_vc_i_se_e32m1(iXLen %vl) {
892 ; CHECK-LABEL: test_sf_vc_i_se_e32m1:
893 ; CHECK:       # %bb.0: # %entry
894 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
895 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
896 ; CHECK-NEXT:    ret
897 entry:
898   tail call void @llvm.riscv.sf.vc.i.se.e32m1.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 32, iXLen 0, iXLen %vl)
899   ret void
902 declare void @llvm.riscv.sf.vc.i.se.e32m1.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
904 define void @test_sf_vc_i_se_e32m2(iXLen %vl) {
905 ; CHECK-LABEL: test_sf_vc_i_se_e32m2:
906 ; CHECK:       # %bb.0: # %entry
907 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
908 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
909 ; CHECK-NEXT:    ret
910 entry:
911   tail call void @llvm.riscv.sf.vc.i.se.e32m2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 32, iXLen 1, iXLen %vl)
912   ret void
915 declare void @llvm.riscv.sf.vc.i.se.e32m2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
917 define void @test_sf_vc_i_se_e32m4(iXLen %vl) {
918 ; CHECK-LABEL: test_sf_vc_i_se_e32m4:
919 ; CHECK:       # %bb.0: # %entry
920 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
921 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
922 ; CHECK-NEXT:    ret
923 entry:
924   tail call void @llvm.riscv.sf.vc.i.se.e32m4.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 32, iXLen 2, iXLen %vl)
925   ret void
928 declare void @llvm.riscv.sf.vc.i.se.e32m4.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
930 define void @test_sf_vc_i_se_e32m8(iXLen %vl) {
931 ; CHECK-LABEL: test_sf_vc_i_se_e32m8:
932 ; CHECK:       # %bb.0: # %entry
933 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
934 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
935 ; CHECK-NEXT:    ret
936 entry:
937   tail call void @llvm.riscv.sf.vc.i.se.e32m8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 32, iXLen 3, iXLen %vl)
938   ret void
941 declare void @llvm.riscv.sf.vc.i.se.e32m8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
943 define void @test_sf_vc_i_se_e64m1(iXLen %vl) {
944 ; CHECK-LABEL: test_sf_vc_i_se_e64m1:
945 ; CHECK:       # %bb.0: # %entry
946 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
947 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
948 ; CHECK-NEXT:    ret
949 entry:
950   tail call void @llvm.riscv.sf.vc.i.se.e64m1.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 64, iXLen 0, iXLen %vl)
951   ret void
954 declare void @llvm.riscv.sf.vc.i.se.e64m1.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
956 define void @test_sf_vc_i_se_e64m2(iXLen %vl) {
957 ; CHECK-LABEL: test_sf_vc_i_se_e64m2:
958 ; CHECK:       # %bb.0: # %entry
959 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
960 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
961 ; CHECK-NEXT:    ret
962 entry:
963   tail call void @llvm.riscv.sf.vc.i.se.e64m2.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 64, iXLen 1, iXLen %vl)
964   ret void
967 declare void @llvm.riscv.sf.vc.i.se.e64m2.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
969 define void @test_sf_vc_i_se_e64m4(iXLen %vl) {
970 ; CHECK-LABEL: test_sf_vc_i_se_e64m4:
971 ; CHECK:       # %bb.0: # %entry
972 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
973 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
974 ; CHECK-NEXT:    ret
975 entry:
976   tail call void @llvm.riscv.sf.vc.i.se.e64m4.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 64, iXLen 2, iXLen %vl)
977   ret void
980 declare void @llvm.riscv.sf.vc.i.se.e64m4.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
982 define void @test_sf_vc_i_se_e64m8(iXLen %vl) {
983 ; CHECK-LABEL: test_sf_vc_i_se_e64m8:
984 ; CHECK:       # %bb.0: # %entry
985 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
986 ; CHECK-NEXT:    sf.vc.i 3, 31, 31, 10
987 ; CHECK-NEXT:    ret
988 entry:
989   tail call void @llvm.riscv.sf.vc.i.se.e64m8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 31, iXLen 10, iXLen 64, iXLen 3, iXLen %vl)
990   ret void
993 declare void @llvm.riscv.sf.vc.i.se.e64m8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen, iXLen, iXLen, iXLen)
995 define <1 x i8> @test_sf_vc_v_i_se_e8mf8(iXLen %vl) {
996 ; CHECK-LABEL: test_sf_vc_v_i_se_e8mf8:
997 ; CHECK:       # %bb.0: # %entry
998 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
999 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1000 ; CHECK-NEXT:    ret
1001 entry:
1002   %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.i.se.nxv1i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1003   ret <1 x i8> %0
1006 declare <1 x i8> @llvm.riscv.sf.vc.v.i.se.nxv1i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1008 define <2 x i8> @test_sf_vc_v_i_se_e8mf4(iXLen %vl) {
1009 ; CHECK-LABEL: test_sf_vc_v_i_se_e8mf4:
1010 ; CHECK:       # %bb.0: # %entry
1011 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
1012 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1013 ; CHECK-NEXT:    ret
1014 entry:
1015   %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.i.se.nxv2i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1016   ret <2 x i8> %0
1019 declare <2 x i8> @llvm.riscv.sf.vc.v.i.se.nxv2i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1021 define <4 x i8> @test_sf_vc_v_i_se_e8mf2(iXLen %vl) {
1022 ; CHECK-LABEL: test_sf_vc_v_i_se_e8mf2:
1023 ; CHECK:       # %bb.0: # %entry
1024 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
1025 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1026 ; CHECK-NEXT:    ret
1027 entry:
1028   %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.i.se.nxv4i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1029   ret <4 x i8> %0
1032 declare <4 x i8> @llvm.riscv.sf.vc.v.i.se.nxv4i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1034 define <8 x i8> @test_sf_vc_v_i_se_e8m1(iXLen %vl) {
1035 ; CHECK-LABEL: test_sf_vc_v_i_se_e8m1:
1036 ; CHECK:       # %bb.0: # %entry
1037 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
1038 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1039 ; CHECK-NEXT:    ret
1040 entry:
1041   %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.i.se.nxv8i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1042   ret <8 x i8> %0
1045 declare <8 x i8> @llvm.riscv.sf.vc.v.i.se.nxv8i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1047 define <16 x i8> @test_sf_vc_v_i_se_e8m2(iXLen %vl) {
1048 ; CHECK-LABEL: test_sf_vc_v_i_se_e8m2:
1049 ; CHECK:       # %bb.0: # %entry
1050 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
1051 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1052 ; CHECK-NEXT:    ret
1053 entry:
1054   %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.i.se.nxv16i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1055   ret <16 x i8> %0
1058 declare <16 x i8> @llvm.riscv.sf.vc.v.i.se.nxv16i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1060 define <32 x i8> @test_sf_vc_v_i_se_e8m4(iXLen %vl) {
1061 ; CHECK-LABEL: test_sf_vc_v_i_se_e8m4:
1062 ; CHECK:       # %bb.0: # %entry
1063 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
1064 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1065 ; CHECK-NEXT:    ret
1066 entry:
1067   %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.i.se.nxv32i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1068   ret <32 x i8> %0
1071 declare <32 x i8> @llvm.riscv.sf.vc.v.i.se.nxv32i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1073 define <64 x i8> @test_sf_vc_v_i_se_e8m8(iXLen %vl) {
1074 ; CHECK-LABEL: test_sf_vc_v_i_se_e8m8:
1075 ; CHECK:       # %bb.0: # %entry
1076 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
1077 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1078 ; CHECK-NEXT:    ret
1079 entry:
1080   %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.i.se.nxv64i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1081   ret <64 x i8> %0
1084 declare <64 x i8> @llvm.riscv.sf.vc.v.i.se.nxv64i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1086 define <1 x i16> @test_sf_vc_v_i_se_e16mf4(iXLen %vl) {
1087 ; CHECK-LABEL: test_sf_vc_v_i_se_e16mf4:
1088 ; CHECK:       # %bb.0: # %entry
1089 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1090 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1091 ; CHECK-NEXT:    ret
1092 entry:
1093   %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.i.se.nxv1i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1094   ret <1 x i16> %0
1097 declare <1 x i16> @llvm.riscv.sf.vc.v.i.se.nxv1i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1099 define <2 x i16> @test_sf_vc_v_i_se_e16mf2(iXLen %vl) {
1100 ; CHECK-LABEL: test_sf_vc_v_i_se_e16mf2:
1101 ; CHECK:       # %bb.0: # %entry
1102 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1103 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1104 ; CHECK-NEXT:    ret
1105 entry:
1106   %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.i.se.nxv2i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1107   ret <2 x i16> %0
1110 declare <2 x i16> @llvm.riscv.sf.vc.v.i.se.nxv2i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1112 define <4 x i16> @test_sf_vc_v_i_se_e16m1(iXLen %vl) {
1113 ; CHECK-LABEL: test_sf_vc_v_i_se_e16m1:
1114 ; CHECK:       # %bb.0: # %entry
1115 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
1116 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1117 ; CHECK-NEXT:    ret
1118 entry:
1119   %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.i.se.nxv4i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1120   ret <4 x i16> %0
1123 declare <4 x i16> @llvm.riscv.sf.vc.v.i.se.nxv4i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1125 define <8 x i16> @test_sf_vc_v_i_se_e16m2(iXLen %vl) {
1126 ; CHECK-LABEL: test_sf_vc_v_i_se_e16m2:
1127 ; CHECK:       # %bb.0: # %entry
1128 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
1129 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1130 ; CHECK-NEXT:    ret
1131 entry:
1132   %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.i.se.nxv8i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1133   ret <8 x i16> %0
1136 declare <8 x i16> @llvm.riscv.sf.vc.v.i.se.nxv8i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1138 define <16 x i16> @test_sf_vc_v_i_se_e16m4(iXLen %vl) {
1139 ; CHECK-LABEL: test_sf_vc_v_i_se_e16m4:
1140 ; CHECK:       # %bb.0: # %entry
1141 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1142 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1143 ; CHECK-NEXT:    ret
1144 entry:
1145   %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.i.se.nxv16i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1146   ret <16 x i16> %0
1149 declare <16 x i16> @llvm.riscv.sf.vc.v.i.se.nxv16i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1151 define <32 x i16> @test_sf_vc_v_i_se_e16m8(iXLen %vl) {
1152 ; CHECK-LABEL: test_sf_vc_v_i_se_e16m8:
1153 ; CHECK:       # %bb.0: # %entry
1154 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1155 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1156 ; CHECK-NEXT:    ret
1157 entry:
1158   %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.i.se.nxv32i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1159   ret <32 x i16> %0
1162 declare <32 x i16> @llvm.riscv.sf.vc.v.i.se.nxv32i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1164 define <1 x i32> @test_sf_vc_v_i_se_e32mf2(iXLen %vl) {
1165 ; CHECK-LABEL: test_sf_vc_v_i_se_e32mf2:
1166 ; CHECK:       # %bb.0: # %entry
1167 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1168 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1169 ; CHECK-NEXT:    ret
1170 entry:
1171   %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.i.se.nxv1i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1172   ret <1 x i32> %0
1175 declare <1 x i32> @llvm.riscv.sf.vc.v.i.se.nxv1i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1177 define <2 x i32> @test_sf_vc_v_i_se_e32m1(iXLen %vl) {
1178 ; CHECK-LABEL: test_sf_vc_v_i_se_e32m1:
1179 ; CHECK:       # %bb.0: # %entry
1180 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1181 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1182 ; CHECK-NEXT:    ret
1183 entry:
1184   %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.i.se.nxv2i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1185   ret <2 x i32> %0
1188 declare <2 x i32> @llvm.riscv.sf.vc.v.i.se.nxv2i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1190 define <4 x i32> @test_sf_vc_v_i_se_e32m2(iXLen %vl) {
1191 ; CHECK-LABEL: test_sf_vc_v_i_se_e32m2:
1192 ; CHECK:       # %bb.0: # %entry
1193 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1194 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1195 ; CHECK-NEXT:    ret
1196 entry:
1197   %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.i.se.nxv4i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1198   ret <4 x i32> %0
1201 declare <4 x i32> @llvm.riscv.sf.vc.v.i.se.nxv4i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1203 define <8 x i32> @test_sf_vc_v_i_se_e32m4(iXLen %vl) {
1204 ; CHECK-LABEL: test_sf_vc_v_i_se_e32m4:
1205 ; CHECK:       # %bb.0: # %entry
1206 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1207 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1208 ; CHECK-NEXT:    ret
1209 entry:
1210   %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.i.se.nxv8i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1211   ret <8 x i32> %0
1214 declare <8 x i32> @llvm.riscv.sf.vc.v.i.se.nxv8i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1216 define <16 x i32> @test_sf_vc_v_i_se_e32m8(iXLen %vl) {
1217 ; CHECK-LABEL: test_sf_vc_v_i_se_e32m8:
1218 ; CHECK:       # %bb.0: # %entry
1219 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1220 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1221 ; CHECK-NEXT:    ret
1222 entry:
1223   %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.i.se.nxv16i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1224   ret <16 x i32> %0
1227 declare <16 x i32> @llvm.riscv.sf.vc.v.i.se.nxv16i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1229 define <1 x i64> @test_sf_vc_v_i_se_e64m1(iXLen %vl) {
1230 ; CHECK-LABEL: test_sf_vc_v_i_se_e64m1:
1231 ; CHECK:       # %bb.0: # %entry
1232 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1233 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1234 ; CHECK-NEXT:    ret
1235 entry:
1236   %0 = tail call <1 x i64> @llvm.riscv.sf.vc.v.i.se.nxv1i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1237   ret <1 x i64> %0
1240 declare <1 x i64> @llvm.riscv.sf.vc.v.i.se.nxv1i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1242 define <2 x i64> @test_sf_vc_v_i_se_e64m2(iXLen %vl) {
1243 ; CHECK-LABEL: test_sf_vc_v_i_se_e64m2:
1244 ; CHECK:       # %bb.0: # %entry
1245 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1246 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1247 ; CHECK-NEXT:    ret
1248 entry:
1249   %0 = tail call <2 x i64> @llvm.riscv.sf.vc.v.i.se.nxv2i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1250   ret <2 x i64> %0
1253 declare <2 x i64> @llvm.riscv.sf.vc.v.i.se.nxv2i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1255 define <4 x i64> @test_sf_vc_v_i_se_e64m4(iXLen %vl) {
1256 ; CHECK-LABEL: test_sf_vc_v_i_se_e64m4:
1257 ; CHECK:       # %bb.0: # %entry
1258 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1259 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1260 ; CHECK-NEXT:    ret
1261 entry:
1262   %0 = tail call <4 x i64> @llvm.riscv.sf.vc.v.i.se.nxv4i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1263   ret <4 x i64> %0
1266 declare <4 x i64> @llvm.riscv.sf.vc.v.i.se.nxv4i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1268 define <8 x i64> @test_sf_vc_v_i_se_e64m8(iXLen %vl) {
1269 ; CHECK-LABEL: test_sf_vc_v_i_se_e64m8:
1270 ; CHECK:       # %bb.0: # %entry
1271 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1272 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1273 ; CHECK-NEXT:    ret
1274 entry:
1275   %0 = tail call <8 x i64> @llvm.riscv.sf.vc.v.i.se.nxv8i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1276   ret <8 x i64> %0
1279 declare <8 x i64> @llvm.riscv.sf.vc.v.i.se.nxv8i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1281 define <1 x i8> @test_sf_vc_v_i_e8mf8(iXLen %vl) {
1282 ; CHECK-LABEL: test_sf_vc_v_i_e8mf8:
1283 ; CHECK:       # %bb.0: # %entry
1284 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
1285 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1286 ; CHECK-NEXT:    ret
1287 entry:
1288   %0 = tail call <1 x i8> @llvm.riscv.sf.vc.v.i.nxv1i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1289   ret <1 x i8> %0
1292 declare <1 x i8> @llvm.riscv.sf.vc.v.i.nxv1i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1294 define <2 x i8> @test_sf_vc_v_i_e8mf4(iXLen %vl) {
1295 ; CHECK-LABEL: test_sf_vc_v_i_e8mf4:
1296 ; CHECK:       # %bb.0: # %entry
1297 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
1298 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1299 ; CHECK-NEXT:    ret
1300 entry:
1301   %0 = tail call <2 x i8> @llvm.riscv.sf.vc.v.i.nxv2i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1302   ret <2 x i8> %0
1305 declare <2 x i8> @llvm.riscv.sf.vc.v.i.nxv2i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1307 define <4 x i8> @test_sf_vc_v_i_e8mf2(iXLen %vl) {
1308 ; CHECK-LABEL: test_sf_vc_v_i_e8mf2:
1309 ; CHECK:       # %bb.0: # %entry
1310 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
1311 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1312 ; CHECK-NEXT:    ret
1313 entry:
1314   %0 = tail call <4 x i8> @llvm.riscv.sf.vc.v.i.nxv4i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1315   ret <4 x i8> %0
1318 declare <4 x i8> @llvm.riscv.sf.vc.v.i.nxv4i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1320 define <8 x i8> @test_sf_vc_v_i_e8m1(iXLen %vl) {
1321 ; CHECK-LABEL: test_sf_vc_v_i_e8m1:
1322 ; CHECK:       # %bb.0: # %entry
1323 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
1324 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1325 ; CHECK-NEXT:    ret
1326 entry:
1327   %0 = tail call <8 x i8> @llvm.riscv.sf.vc.v.i.nxv8i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1328   ret <8 x i8> %0
1331 declare <8 x i8> @llvm.riscv.sf.vc.v.i.nxv8i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1333 define <16 x i8> @test_sf_vc_v_i_e8m2(iXLen %vl) {
1334 ; CHECK-LABEL: test_sf_vc_v_i_e8m2:
1335 ; CHECK:       # %bb.0: # %entry
1336 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
1337 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1338 ; CHECK-NEXT:    ret
1339 entry:
1340   %0 = tail call <16 x i8> @llvm.riscv.sf.vc.v.i.nxv16i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1341   ret <16 x i8> %0
1344 declare <16 x i8> @llvm.riscv.sf.vc.v.i.nxv16i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1346 define <32 x i8> @test_sf_vc_v_i_e8m4(iXLen %vl) {
1347 ; CHECK-LABEL: test_sf_vc_v_i_e8m4:
1348 ; CHECK:       # %bb.0: # %entry
1349 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
1350 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1351 ; CHECK-NEXT:    ret
1352 entry:
1353   %0 = tail call <32 x i8> @llvm.riscv.sf.vc.v.i.nxv32i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1354   ret <32 x i8> %0
1357 declare <32 x i8> @llvm.riscv.sf.vc.v.i.nxv32i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1359 define <64 x i8> @test_sf_vc_v_i_e8m8(iXLen %vl) {
1360 ; CHECK-LABEL: test_sf_vc_v_i_e8m8:
1361 ; CHECK:       # %bb.0: # %entry
1362 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
1363 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1364 ; CHECK-NEXT:    ret
1365 entry:
1366   %0 = tail call <64 x i8> @llvm.riscv.sf.vc.v.i.nxv64i8.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1367   ret <64 x i8> %0
1370 declare <64 x i8> @llvm.riscv.sf.vc.v.i.nxv64i8.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1372 define <1 x i16> @test_sf_vc_v_i_e16mf4(iXLen %vl) {
1373 ; CHECK-LABEL: test_sf_vc_v_i_e16mf4:
1374 ; CHECK:       # %bb.0: # %entry
1375 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1376 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1377 ; CHECK-NEXT:    ret
1378 entry:
1379   %0 = tail call <1 x i16> @llvm.riscv.sf.vc.v.i.nxv1i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1380   ret <1 x i16> %0
1383 declare <1 x i16> @llvm.riscv.sf.vc.v.i.nxv1i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1385 define <2 x i16> @test_sf_vc_v_i_e16mf2(iXLen %vl) {
1386 ; CHECK-LABEL: test_sf_vc_v_i_e16mf2:
1387 ; CHECK:       # %bb.0: # %entry
1388 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1389 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1390 ; CHECK-NEXT:    ret
1391 entry:
1392   %0 = tail call <2 x i16> @llvm.riscv.sf.vc.v.i.nxv2i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1393   ret <2 x i16> %0
1396 declare <2 x i16> @llvm.riscv.sf.vc.v.i.nxv2i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1398 define <4 x i16> @test_sf_vc_v_i_e16m1(iXLen %vl) {
1399 ; CHECK-LABEL: test_sf_vc_v_i_e16m1:
1400 ; CHECK:       # %bb.0: # %entry
1401 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
1402 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1403 ; CHECK-NEXT:    ret
1404 entry:
1405   %0 = tail call <4 x i16> @llvm.riscv.sf.vc.v.i.nxv4i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1406   ret <4 x i16> %0
1409 declare <4 x i16> @llvm.riscv.sf.vc.v.i.nxv4i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1411 define <8 x i16> @test_sf_vc_v_i_e16m2(iXLen %vl) {
1412 ; CHECK-LABEL: test_sf_vc_v_i_e16m2:
1413 ; CHECK:       # %bb.0: # %entry
1414 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
1415 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1416 ; CHECK-NEXT:    ret
1417 entry:
1418   %0 = tail call <8 x i16> @llvm.riscv.sf.vc.v.i.nxv8i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1419   ret <8 x i16> %0
1422 declare <8 x i16> @llvm.riscv.sf.vc.v.i.nxv8i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1424 define <16 x i16> @test_sf_vc_v_i_e16m4(iXLen %vl) {
1425 ; CHECK-LABEL: test_sf_vc_v_i_e16m4:
1426 ; CHECK:       # %bb.0: # %entry
1427 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1428 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1429 ; CHECK-NEXT:    ret
1430 entry:
1431   %0 = tail call <16 x i16> @llvm.riscv.sf.vc.v.i.nxv16i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1432   ret <16 x i16> %0
1435 declare <16 x i16> @llvm.riscv.sf.vc.v.i.nxv16i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1437 define <32 x i16> @test_sf_vc_v_i_e16m8(iXLen %vl) {
1438 ; CHECK-LABEL: test_sf_vc_v_i_e16m8:
1439 ; CHECK:       # %bb.0: # %entry
1440 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1441 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1442 ; CHECK-NEXT:    ret
1443 entry:
1444   %0 = tail call <32 x i16> @llvm.riscv.sf.vc.v.i.nxv32i16.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1445   ret <32 x i16> %0
1448 declare <32 x i16> @llvm.riscv.sf.vc.v.i.nxv32i16.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1450 define <1 x i32> @test_sf_vc_v_i_e32mf2(iXLen %vl) {
1451 ; CHECK-LABEL: test_sf_vc_v_i_e32mf2:
1452 ; CHECK:       # %bb.0: # %entry
1453 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1454 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1455 ; CHECK-NEXT:    ret
1456 entry:
1457   %0 = tail call <1 x i32> @llvm.riscv.sf.vc.v.i.nxv1i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1458   ret <1 x i32> %0
1461 declare <1 x i32> @llvm.riscv.sf.vc.v.i.nxv1i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1463 define <2 x i32> @test_sf_vc_v_i_e32m1(iXLen %vl) {
1464 ; CHECK-LABEL: test_sf_vc_v_i_e32m1:
1465 ; CHECK:       # %bb.0: # %entry
1466 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1467 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1468 ; CHECK-NEXT:    ret
1469 entry:
1470   %0 = tail call <2 x i32> @llvm.riscv.sf.vc.v.i.nxv2i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1471   ret <2 x i32> %0
1474 declare <2 x i32> @llvm.riscv.sf.vc.v.i.nxv2i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1476 define <4 x i32> @test_sf_vc_v_i_e32m2(iXLen %vl) {
1477 ; CHECK-LABEL: test_sf_vc_v_i_e32m2:
1478 ; CHECK:       # %bb.0: # %entry
1479 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1480 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1481 ; CHECK-NEXT:    ret
1482 entry:
1483   %0 = tail call <4 x i32> @llvm.riscv.sf.vc.v.i.nxv4i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1484   ret <4 x i32> %0
1487 declare <4 x i32> @llvm.riscv.sf.vc.v.i.nxv4i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1489 define <8 x i32> @test_sf_vc_v_i_e32m4(iXLen %vl) {
1490 ; CHECK-LABEL: test_sf_vc_v_i_e32m4:
1491 ; CHECK:       # %bb.0: # %entry
1492 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1493 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1494 ; CHECK-NEXT:    ret
1495 entry:
1496   %0 = tail call <8 x i32> @llvm.riscv.sf.vc.v.i.nxv8i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1497   ret <8 x i32> %0
1500 declare <8 x i32> @llvm.riscv.sf.vc.v.i.nxv8i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1502 define <16 x i32> @test_sf_vc_v_i_e32m8(iXLen %vl) {
1503 ; CHECK-LABEL: test_sf_vc_v_i_e32m8:
1504 ; CHECK:       # %bb.0: # %entry
1505 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1506 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1507 ; CHECK-NEXT:    ret
1508 entry:
1509   %0 = tail call <16 x i32> @llvm.riscv.sf.vc.v.i.nxv16i32.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1510   ret <16 x i32> %0
1513 declare <16 x i32> @llvm.riscv.sf.vc.v.i.nxv16i32.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1515 define <1 x i64> @test_sf_vc_v_i_e64m1(iXLen %vl) {
1516 ; CHECK-LABEL: test_sf_vc_v_i_e64m1:
1517 ; CHECK:       # %bb.0: # %entry
1518 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1519 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1520 ; CHECK-NEXT:    ret
1521 entry:
1522   %0 = tail call <1 x i64> @llvm.riscv.sf.vc.v.i.nxv1i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1523   ret <1 x i64> %0
1526 declare <1 x i64> @llvm.riscv.sf.vc.v.i.nxv1i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1528 define <2 x i64> @test_sf_vc_v_i_e64m2(iXLen %vl) {
1529 ; CHECK-LABEL: test_sf_vc_v_i_e64m2:
1530 ; CHECK:       # %bb.0: # %entry
1531 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1532 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1533 ; CHECK-NEXT:    ret
1534 entry:
1535   %0 = tail call <2 x i64> @llvm.riscv.sf.vc.v.i.nxv2i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1536   ret <2 x i64> %0
1539 declare <2 x i64> @llvm.riscv.sf.vc.v.i.nxv2i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1541 define <4 x i64> @test_sf_vc_v_i_e64m4(iXLen %vl) {
1542 ; CHECK-LABEL: test_sf_vc_v_i_e64m4:
1543 ; CHECK:       # %bb.0: # %entry
1544 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1545 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1546 ; CHECK-NEXT:    ret
1547 entry:
1548   %0 = tail call <4 x i64> @llvm.riscv.sf.vc.v.i.nxv4i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1549   ret <4 x i64> %0
1552 declare <4 x i64> @llvm.riscv.sf.vc.v.i.nxv4i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1554 define <8 x i64> @test_sf_vc_v_i_e64m8(iXLen %vl) {
1555 ; CHECK-LABEL: test_sf_vc_v_i_e64m8:
1556 ; CHECK:       # %bb.0: # %entry
1557 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1558 ; CHECK-NEXT:    sf.vc.v.i 3, 31, v8, 10
1559 ; CHECK-NEXT:    ret
1560 entry:
1561   %0 = tail call <8 x i64> @llvm.riscv.sf.vc.v.i.nxv8i64.iXLen.iXLen.iXLen(iXLen 3, iXLen 31, iXLen 10, iXLen %vl)
1562   ret <8 x i64> %0
1565 declare <8 x i64> @llvm.riscv.sf.vc.v.i.nxv8i64.iXLen.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1567 define <1 x half> @test_sf_vc_fv_x_se_e16mf4(i16 %rs1, iXLen %vl) {
1568 ; CHECK-LABEL: test_sf_vc_fv_x_se_e16mf4:
1569 ; CHECK:       # %bb.0: # %entry
1570 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1571 ; CHECK-NEXT:    sf.vc.v.x 3, 4, v8, a0
1572 ; CHECK-NEXT:    ret
1573 entry:
1574   %0 = tail call <1 x half> @llvm.riscv.sf.vc.v.x.se.nxv1f16.i16.iXLen(iXLen 3, iXLen 4, i16 %rs1, iXLen %vl)
1575   ret <1 x half> %0
1578 declare <1 x half> @llvm.riscv.sf.vc.v.x.se.nxv1f16.i16.iXLen(iXLen, iXLen, i16, iXLen)
1580 define <2 x half> @test_sf_vc_fv_x_se_e16mf2(i16 %rs1, iXLen %vl) {
1581 ; CHECK-LABEL: test_sf_vc_fv_x_se_e16mf2:
1582 ; CHECK:       # %bb.0: # %entry
1583 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
1584 ; CHECK-NEXT:    sf.vc.v.x 3, 4, v8, a0
1585 ; CHECK-NEXT:    ret
1586 entry:
1587   %0 = tail call <2 x half> @llvm.riscv.sf.vc.v.x.se.nxv2f16.i16.iXLen(iXLen 3, iXLen 4, i16 %rs1, iXLen %vl)
1588   ret <2 x half> %0
1591 declare <2 x half> @llvm.riscv.sf.vc.v.x.se.nxv2f16.i16.iXLen(iXLen, iXLen, i16, iXLen)
1593 define <4 x half> @test_sf_vc_fv_x_se_e16m1(i16 %rs1, iXLen %vl) {
1594 ; CHECK-LABEL: test_sf_vc_fv_x_se_e16m1:
1595 ; CHECK:       # %bb.0: # %entry
1596 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
1597 ; CHECK-NEXT:    sf.vc.v.x 3, 4, v8, a0
1598 ; CHECK-NEXT:    ret
1599 entry:
1600   %0 = tail call <4 x half> @llvm.riscv.sf.vc.v.x.se.nxv4f16.i16.iXLen(iXLen 3, iXLen 4, i16 %rs1, iXLen %vl)
1601   ret <4 x half> %0
1604 declare <4 x half> @llvm.riscv.sf.vc.v.x.se.nxv4f16.i16.iXLen(iXLen, iXLen, i16, iXLen)
1606 define <8 x half> @test_sf_vc_fv_x_se_e16m2(i16 %rs1, iXLen %vl) {
1607 ; CHECK-LABEL: test_sf_vc_fv_x_se_e16m2:
1608 ; CHECK:       # %bb.0: # %entry
1609 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1610 ; CHECK-NEXT:    sf.vc.v.x 3, 4, v8, a0
1611 ; CHECK-NEXT:    ret
1612 entry:
1613   %0 = tail call <8 x half> @llvm.riscv.sf.vc.v.x.se.nxv8f16.i16.iXLen(iXLen 3, iXLen 4, i16 %rs1, iXLen %vl)
1614   ret <8 x half> %0
1617 declare <8 x half> @llvm.riscv.sf.vc.v.x.se.nxv8f16.i16.iXLen(iXLen, iXLen, i16, iXLen)
1619 define <16 x half> @test_sf_vc_fv_x_se_e16m4(i16 %rs1, iXLen %vl) {
1620 ; CHECK-LABEL: test_sf_vc_fv_x_se_e16m4:
1621 ; CHECK:       # %bb.0: # %entry
1622 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
1623 ; CHECK-NEXT:    sf.vc.v.x 3, 4, v8, a0
1624 ; CHECK-NEXT:    ret
1625 entry:
1626   %0 = tail call <16 x half> @llvm.riscv.sf.vc.v.x.se.nxv16f16.i16.iXLen(iXLen 3, iXLen 4, i16 %rs1, iXLen %vl)
1627   ret <16 x half> %0
1630 declare <16 x half> @llvm.riscv.sf.vc.v.x.se.nxv16f16.i16.iXLen(iXLen, iXLen, i16, iXLen)
1632 define <32 x half> @test_sf_vc_fv_x_se_e16m8(i16 %rs1, iXLen %vl) {
1633 ; CHECK-LABEL: test_sf_vc_fv_x_se_e16m8:
1634 ; CHECK:       # %bb.0: # %entry
1635 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
1636 ; CHECK-NEXT:    sf.vc.v.x 3, 4, v8, a0
1637 ; CHECK-NEXT:    ret
1638 entry:
1639   %0 = tail call <32 x half> @llvm.riscv.sf.vc.v.x.se.nxv32f16.i16.iXLen(iXLen 3, iXLen 4, i16 %rs1, iXLen %vl)
1640   ret <32 x half> %0
1643 declare <32 x half> @llvm.riscv.sf.vc.v.x.se.nxv32f16.i16.iXLen(iXLen, iXLen, i16, iXLen)
1645 define <1 x float> @test_sf_vc_fv_x_se_e32mf2(i32 %rs1, iXLen %vl) {
1646 ; CHECK-LABEL: test_sf_vc_fv_x_se_e32mf2:
1647 ; CHECK:       # %bb.0: # %entry
1648 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1649 ; CHECK-NEXT:    sf.vc.v.x 3, 4, v8, a0
1650 ; CHECK-NEXT:    ret
1651 entry:
1652   %0 = tail call <1 x float> @llvm.riscv.sf.vc.v.x.se.nxv1f32.i32.iXLen(iXLen 3, iXLen 4, i32 %rs1, iXLen %vl)
1653   ret <1 x float> %0
1656 declare <1 x float> @llvm.riscv.sf.vc.v.x.se.nxv1f32.i32.iXLen(iXLen, iXLen, i32, iXLen)
1658 define <2 x float> @test_sf_vc_fv_x_se_e32m1(i32 %rs1, iXLen %vl) {
1659 ; CHECK-LABEL: test_sf_vc_fv_x_se_e32m1:
1660 ; CHECK:       # %bb.0: # %entry
1661 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1662 ; CHECK-NEXT:    sf.vc.v.x 3, 4, v8, a0
1663 ; CHECK-NEXT:    ret
1664 entry:
1665   %0 = tail call <2 x float> @llvm.riscv.sf.vc.v.x.se.nxv2f32.i32.iXLen(iXLen 3, iXLen 4, i32 %rs1, iXLen %vl)
1666   ret <2 x float> %0
1669 declare <2 x float> @llvm.riscv.sf.vc.v.x.se.nxv2f32.i32.iXLen(iXLen, iXLen, i32, iXLen)
1671 define <4 x float> @test_sf_vc_fv_x_se_e32m2(i32 %rs1, iXLen %vl) {
1672 ; CHECK-LABEL: test_sf_vc_fv_x_se_e32m2:
1673 ; CHECK:       # %bb.0: # %entry
1674 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1675 ; CHECK-NEXT:    sf.vc.v.x 3, 4, v8, a0
1676 ; CHECK-NEXT:    ret
1677 entry:
1678   %0 = tail call <4 x float> @llvm.riscv.sf.vc.v.x.se.nxv4f32.i32.iXLen(iXLen 3, iXLen 4, i32 %rs1, iXLen %vl)
1679   ret <4 x float> %0
1682 declare <4 x float> @llvm.riscv.sf.vc.v.x.se.nxv4f32.i32.iXLen(iXLen, iXLen, i32, iXLen)
1684 define <8 x float> @test_sf_vc_fv_x_se_e32m4(i32 %rs1, iXLen %vl) {
1685 ; CHECK-LABEL: test_sf_vc_fv_x_se_e32m4:
1686 ; CHECK:       # %bb.0: # %entry
1687 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1688 ; CHECK-NEXT:    sf.vc.v.x 3, 4, v8, a0
1689 ; CHECK-NEXT:    ret
1690 entry:
1691   %0 = tail call <8 x float> @llvm.riscv.sf.vc.v.x.se.nxv8f32.i32.iXLen(iXLen 3, iXLen 4, i32 %rs1, iXLen %vl)
1692   ret <8 x float> %0
1695 declare <8 x float> @llvm.riscv.sf.vc.v.x.se.nxv8f32.i32.iXLen(iXLen, iXLen, i32, iXLen)
1697 define <16 x float> @test_sf_vc_fv_x_se_e32m8(i32 %rs1, iXLen %vl) {
1698 ; CHECK-LABEL: test_sf_vc_fv_x_se_e32m8:
1699 ; CHECK:       # %bb.0: # %entry
1700 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1701 ; CHECK-NEXT:    sf.vc.v.x 3, 4, v8, a0
1702 ; CHECK-NEXT:    ret
1703 entry:
1704   %0 = tail call <16 x float> @llvm.riscv.sf.vc.v.x.se.nxv16f32.i32.iXLen(iXLen 3, iXLen 4, i32 %rs1, iXLen %vl)
1705   ret <16 x float> %0
1708 declare <16 x float> @llvm.riscv.sf.vc.v.x.se.nxv16f32.i32.iXLen(iXLen, iXLen, i32, iXLen)
1710 define <1 x half> @test_sf_vc_fv_i_se_e16mf4(iXLen %vl) {
1711 ; CHECK-LABEL: test_sf_vc_fv_i_se_e16mf4:
1712 ; CHECK:       # %bb.0: # %entry
1713 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1714 ; CHECK-NEXT:    sf.vc.v.i 3, 8, v8, 4
1715 ; CHECK-NEXT:    ret
1716 entry:
1717   %0 = tail call <1 x half> @llvm.riscv.sf.vc.v.i.se.nxv1f16.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl)
1718   ret <1 x half> %0
1721 declare <1 x half> @llvm.riscv.sf.vc.v.i.se.nxv1f16.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1723 define <2 x half> @test_sf_vc_fv_i_se_e16mf2(iXLen %vl) {
1724 ; CHECK-LABEL: test_sf_vc_fv_i_se_e16mf2:
1725 ; CHECK:       # %bb.0: # %entry
1726 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
1727 ; CHECK-NEXT:    sf.vc.v.i 3, 8, v8, 4
1728 ; CHECK-NEXT:    ret
1729 entry:
1730   %0 = tail call <2 x half> @llvm.riscv.sf.vc.v.i.se.nxv2f16.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl)
1731   ret <2 x half> %0
1734 declare <2 x half> @llvm.riscv.sf.vc.v.i.se.nxv2f16.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1736 define <4 x half> @test_sf_vc_fv_i_se_e16m1(iXLen %vl) {
1737 ; CHECK-LABEL: test_sf_vc_fv_i_se_e16m1:
1738 ; CHECK:       # %bb.0: # %entry
1739 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
1740 ; CHECK-NEXT:    sf.vc.v.i 3, 8, v8, 4
1741 ; CHECK-NEXT:    ret
1742 entry:
1743   %0 = tail call <4 x half> @llvm.riscv.sf.vc.v.i.se.nxv4f16.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl)
1744   ret <4 x half> %0
1747 declare <4 x half> @llvm.riscv.sf.vc.v.i.se.nxv4f16.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1749 define <8 x half> @test_sf_vc_fv_i_se_e16m2(iXLen %vl) {
1750 ; CHECK-LABEL: test_sf_vc_fv_i_se_e16m2:
1751 ; CHECK:       # %bb.0: # %entry
1752 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
1753 ; CHECK-NEXT:    sf.vc.v.i 3, 8, v8, 4
1754 ; CHECK-NEXT:    ret
1755 entry:
1756   %0 = tail call <8 x half> @llvm.riscv.sf.vc.v.i.se.nxv8f16.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl)
1757   ret <8 x half> %0
1760 declare <8 x half> @llvm.riscv.sf.vc.v.i.se.nxv8f16.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1762 define <16 x half> @test_sf_vc_fv_i_se_e16m4(iXLen %vl) {
1763 ; CHECK-LABEL: test_sf_vc_fv_i_se_e16m4:
1764 ; CHECK:       # %bb.0: # %entry
1765 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
1766 ; CHECK-NEXT:    sf.vc.v.i 3, 8, v8, 4
1767 ; CHECK-NEXT:    ret
1768 entry:
1769   %0 = tail call <16 x half> @llvm.riscv.sf.vc.v.i.se.nxv16f16.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl)
1770   ret <16 x half> %0
1773 declare <16 x half> @llvm.riscv.sf.vc.v.i.se.nxv16f16.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1775 define <32 x half> @test_sf_vc_fv_i_se_e16m8(iXLen %vl) {
1776 ; CHECK-LABEL: test_sf_vc_fv_i_se_e16m8:
1777 ; CHECK:       # %bb.0: # %entry
1778 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
1779 ; CHECK-NEXT:    sf.vc.v.i 3, 8, v8, 4
1780 ; CHECK-NEXT:    ret
1781 entry:
1782   %0 = tail call <32 x half> @llvm.riscv.sf.vc.v.i.se.nxv32f16.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl)
1783   ret <32 x half> %0
1786 declare <32 x half> @llvm.riscv.sf.vc.v.i.se.nxv32f16.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1788 define <1 x float> @test_sf_vc_fv_i_se_e32mf2(iXLen %vl) {
1789 ; CHECK-LABEL: test_sf_vc_fv_i_se_e32mf2:
1790 ; CHECK:       # %bb.0: # %entry
1791 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1792 ; CHECK-NEXT:    sf.vc.v.i 3, 8, v8, 4
1793 ; CHECK-NEXT:    ret
1794 entry:
1795   %0 = tail call <1 x float> @llvm.riscv.sf.vc.v.i.se.nxv1f32.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl)
1796   ret <1 x float> %0
1799 declare <1 x float> @llvm.riscv.sf.vc.v.i.se.nxv1f32.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1801 define <2 x float> @test_sf_vc_fv_i_se_e32m1(iXLen %vl) {
1802 ; CHECK-LABEL: test_sf_vc_fv_i_se_e32m1:
1803 ; CHECK:       # %bb.0: # %entry
1804 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1805 ; CHECK-NEXT:    sf.vc.v.i 3, 8, v8, 4
1806 ; CHECK-NEXT:    ret
1807 entry:
1808   %0 = tail call <2 x float> @llvm.riscv.sf.vc.v.i.se.nxv2f32.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl)
1809   ret <2 x float> %0
1812 declare <2 x float> @llvm.riscv.sf.vc.v.i.se.nxv2f32.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1814 define <4 x float> @test_sf_vc_fv_i_se_e32m2(iXLen %vl) {
1815 ; CHECK-LABEL: test_sf_vc_fv_i_se_e32m2:
1816 ; CHECK:       # %bb.0: # %entry
1817 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1818 ; CHECK-NEXT:    sf.vc.v.i 3, 8, v8, 4
1819 ; CHECK-NEXT:    ret
1820 entry:
1821   %0 = tail call <4 x float> @llvm.riscv.sf.vc.v.i.se.nxv4f32.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl)
1822   ret <4 x float> %0
1825 declare <4 x float> @llvm.riscv.sf.vc.v.i.se.nxv4f32.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1827 define <8 x float> @test_sf_vc_fv_i_se_e32m4(iXLen %vl) {
1828 ; CHECK-LABEL: test_sf_vc_fv_i_se_e32m4:
1829 ; CHECK:       # %bb.0: # %entry
1830 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1831 ; CHECK-NEXT:    sf.vc.v.i 3, 8, v8, 4
1832 ; CHECK-NEXT:    ret
1833 entry:
1834   %0 = tail call <8 x float> @llvm.riscv.sf.vc.v.i.se.nxv8f32.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl)
1835   ret <8 x float> %0
1838 declare <8 x float> @llvm.riscv.sf.vc.v.i.se.nxv8f32.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)
1840 define <16 x float> @test_sf_vc_fv_i_se_e32m8(iXLen %vl) {
1841 ; CHECK-LABEL: test_sf_vc_fv_i_se_e32m8:
1842 ; CHECK:       # %bb.0: # %entry
1843 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1844 ; CHECK-NEXT:    sf.vc.v.i 3, 8, v8, 4
1845 ; CHECK-NEXT:    ret
1846 entry:
1847   %0 = tail call <16 x float> @llvm.riscv.sf.vc.v.i.se.nxv16f32.iXLen.iXLen(iXLen 3, iXLen 8, iXLen 4, iXLen %vl)
1848   ret <16 x float> %0
1851 declare <16 x float> @llvm.riscv.sf.vc.v.i.se.nxv16f32.iXLen.iXLen(iXLen, iXLen, iXLen, iXLen)