Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vsoxseg-rv32.ll
blob90ded94e9d8cd1de6911a69964344c2e5ca23a98
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+zve64d,+f,+d,+zfh,+zvfh \
3 ; RUN:     -verify-machineinstrs < %s | FileCheck %s
5 declare void @llvm.riscv.vsoxseg2.nxv16i16.nxv16i16(<vscale x 16 x i16>,<vscale x 16 x i16>, ptr, <vscale x 16 x i16>, i32)
6 declare void @llvm.riscv.vsoxseg2.mask.nxv16i16.nxv16i16(<vscale x 16 x i16>,<vscale x 16 x i16>, ptr, <vscale x 16 x i16>, <vscale x 16 x i1>, i32)
8 define void @test_vsoxseg2_nxv16i16_nxv16i16(<vscale x 16 x i16> %val, ptr %base, <vscale x 16 x i16> %index, i32 %vl) {
9 ; CHECK-LABEL: test_vsoxseg2_nxv16i16_nxv16i16:
10 ; CHECK:       # %bb.0: # %entry
11 ; CHECK-NEXT:    vmv4r.v v16, v12
12 ; CHECK-NEXT:    vmv4r.v v12, v8
13 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
14 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v16
15 ; CHECK-NEXT:    ret
16 entry:
17   tail call void @llvm.riscv.vsoxseg2.nxv16i16.nxv16i16(<vscale x 16 x i16> %val,<vscale x 16 x i16> %val, ptr %base, <vscale x 16 x i16> %index, i32 %vl)
18   ret void
21 define void @test_vsoxseg2_mask_nxv16i16_nxv16i16(<vscale x 16 x i16> %val, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i32 %vl) {
22 ; CHECK-LABEL: test_vsoxseg2_mask_nxv16i16_nxv16i16:
23 ; CHECK:       # %bb.0: # %entry
24 ; CHECK-NEXT:    vmv4r.v v16, v12
25 ; CHECK-NEXT:    vmv4r.v v12, v8
26 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
27 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v16, v0.t
28 ; CHECK-NEXT:    ret
29 entry:
30   tail call void @llvm.riscv.vsoxseg2.mask.nxv16i16.nxv16i16(<vscale x 16 x i16> %val,<vscale x 16 x i16> %val, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i32 %vl)
31   ret void
34 declare void @llvm.riscv.vsoxseg2.nxv16i16.nxv16i8(<vscale x 16 x i16>,<vscale x 16 x i16>, ptr, <vscale x 16 x i8>, i32)
35 declare void @llvm.riscv.vsoxseg2.mask.nxv16i16.nxv16i8(<vscale x 16 x i16>,<vscale x 16 x i16>, ptr, <vscale x 16 x i8>, <vscale x 16 x i1>, i32)
37 define void @test_vsoxseg2_nxv16i16_nxv16i8(<vscale x 16 x i16> %val, ptr %base, <vscale x 16 x i8> %index, i32 %vl) {
38 ; CHECK-LABEL: test_vsoxseg2_nxv16i16_nxv16i8:
39 ; CHECK:       # %bb.0: # %entry
40 ; CHECK-NEXT:    vmv2r.v v16, v12
41 ; CHECK-NEXT:    vmv4r.v v12, v8
42 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
43 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v16
44 ; CHECK-NEXT:    ret
45 entry:
46   tail call void @llvm.riscv.vsoxseg2.nxv16i16.nxv16i8(<vscale x 16 x i16> %val,<vscale x 16 x i16> %val, ptr %base, <vscale x 16 x i8> %index, i32 %vl)
47   ret void
50 define void @test_vsoxseg2_mask_nxv16i16_nxv16i8(<vscale x 16 x i16> %val, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i32 %vl) {
51 ; CHECK-LABEL: test_vsoxseg2_mask_nxv16i16_nxv16i8:
52 ; CHECK:       # %bb.0: # %entry
53 ; CHECK-NEXT:    vmv2r.v v16, v12
54 ; CHECK-NEXT:    vmv4r.v v12, v8
55 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
56 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v16, v0.t
57 ; CHECK-NEXT:    ret
58 entry:
59   tail call void @llvm.riscv.vsoxseg2.mask.nxv16i16.nxv16i8(<vscale x 16 x i16> %val,<vscale x 16 x i16> %val, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i32 %vl)
60   ret void
63 declare void @llvm.riscv.vsoxseg2.nxv16i16.nxv16i32(<vscale x 16 x i16>,<vscale x 16 x i16>, ptr, <vscale x 16 x i32>, i32)
64 declare void @llvm.riscv.vsoxseg2.mask.nxv16i16.nxv16i32(<vscale x 16 x i16>,<vscale x 16 x i16>, ptr, <vscale x 16 x i32>, <vscale x 16 x i1>, i32)
66 define void @test_vsoxseg2_nxv16i16_nxv16i32(<vscale x 16 x i16> %val, ptr %base, <vscale x 16 x i32> %index, i32 %vl) {
67 ; CHECK-LABEL: test_vsoxseg2_nxv16i16_nxv16i32:
68 ; CHECK:       # %bb.0: # %entry
69 ; CHECK-NEXT:    vmv4r.v v12, v8
70 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
71 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v16
72 ; CHECK-NEXT:    ret
73 entry:
74   tail call void @llvm.riscv.vsoxseg2.nxv16i16.nxv16i32(<vscale x 16 x i16> %val,<vscale x 16 x i16> %val, ptr %base, <vscale x 16 x i32> %index, i32 %vl)
75   ret void
78 define void @test_vsoxseg2_mask_nxv16i16_nxv16i32(<vscale x 16 x i16> %val, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i32 %vl) {
79 ; CHECK-LABEL: test_vsoxseg2_mask_nxv16i16_nxv16i32:
80 ; CHECK:       # %bb.0: # %entry
81 ; CHECK-NEXT:    vmv4r.v v12, v8
82 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
83 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v16, v0.t
84 ; CHECK-NEXT:    ret
85 entry:
86   tail call void @llvm.riscv.vsoxseg2.mask.nxv16i16.nxv16i32(<vscale x 16 x i16> %val,<vscale x 16 x i16> %val, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i32 %vl)
87   ret void
90 declare void @llvm.riscv.vsoxseg2.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, i32)
91 declare void @llvm.riscv.vsoxseg2.mask.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
93 define void @test_vsoxseg2_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
94 ; CHECK-LABEL: test_vsoxseg2_nxv1i8_nxv1i8:
95 ; CHECK:       # %bb.0: # %entry
96 ; CHECK-NEXT:    vmv1r.v v10, v9
97 ; CHECK-NEXT:    vmv1r.v v9, v8
98 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
99 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
100 ; CHECK-NEXT:    ret
101 entry:
102   tail call void @llvm.riscv.vsoxseg2.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
103   ret void
106 define void @test_vsoxseg2_mask_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
107 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1i8_nxv1i8:
108 ; CHECK:       # %bb.0: # %entry
109 ; CHECK-NEXT:    vmv1r.v v10, v9
110 ; CHECK-NEXT:    vmv1r.v v9, v8
111 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
112 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
113 ; CHECK-NEXT:    ret
114 entry:
115   tail call void @llvm.riscv.vsoxseg2.mask.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
116   ret void
119 declare void @llvm.riscv.vsoxseg2.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, i32)
120 declare void @llvm.riscv.vsoxseg2.mask.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
122 define void @test_vsoxseg2_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
123 ; CHECK-LABEL: test_vsoxseg2_nxv1i8_nxv1i32:
124 ; CHECK:       # %bb.0: # %entry
125 ; CHECK-NEXT:    vmv1r.v v10, v9
126 ; CHECK-NEXT:    vmv1r.v v9, v8
127 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
128 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
129 ; CHECK-NEXT:    ret
130 entry:
131   tail call void @llvm.riscv.vsoxseg2.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
132   ret void
135 define void @test_vsoxseg2_mask_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
136 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1i8_nxv1i32:
137 ; CHECK:       # %bb.0: # %entry
138 ; CHECK-NEXT:    vmv1r.v v10, v9
139 ; CHECK-NEXT:    vmv1r.v v9, v8
140 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
141 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
142 ; CHECK-NEXT:    ret
143 entry:
144   tail call void @llvm.riscv.vsoxseg2.mask.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
145   ret void
148 declare void @llvm.riscv.vsoxseg2.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, i32)
149 declare void @llvm.riscv.vsoxseg2.mask.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
151 define void @test_vsoxseg2_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
152 ; CHECK-LABEL: test_vsoxseg2_nxv1i8_nxv1i16:
153 ; CHECK:       # %bb.0: # %entry
154 ; CHECK-NEXT:    vmv1r.v v10, v9
155 ; CHECK-NEXT:    vmv1r.v v9, v8
156 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
157 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
158 ; CHECK-NEXT:    ret
159 entry:
160   tail call void @llvm.riscv.vsoxseg2.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
161   ret void
164 define void @test_vsoxseg2_mask_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
165 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1i8_nxv1i16:
166 ; CHECK:       # %bb.0: # %entry
167 ; CHECK-NEXT:    vmv1r.v v10, v9
168 ; CHECK-NEXT:    vmv1r.v v9, v8
169 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
170 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
171 ; CHECK-NEXT:    ret
172 entry:
173   tail call void @llvm.riscv.vsoxseg2.mask.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
174   ret void
177 declare void @llvm.riscv.vsoxseg3.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, i32)
178 declare void @llvm.riscv.vsoxseg3.mask.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
180 define void @test_vsoxseg3_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
181 ; CHECK-LABEL: test_vsoxseg3_nxv1i8_nxv1i8:
182 ; CHECK:       # %bb.0: # %entry
183 ; CHECK-NEXT:    vmv1r.v v10, v8
184 ; CHECK-NEXT:    vmv1r.v v11, v8
185 ; CHECK-NEXT:    vmv1r.v v12, v8
186 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
187 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
188 ; CHECK-NEXT:    ret
189 entry:
190   tail call void @llvm.riscv.vsoxseg3.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
191   ret void
194 define void @test_vsoxseg3_mask_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
195 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1i8_nxv1i8:
196 ; CHECK:       # %bb.0: # %entry
197 ; CHECK-NEXT:    vmv1r.v v10, v8
198 ; CHECK-NEXT:    vmv1r.v v11, v8
199 ; CHECK-NEXT:    vmv1r.v v12, v8
200 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
201 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
202 ; CHECK-NEXT:    ret
203 entry:
204   tail call void @llvm.riscv.vsoxseg3.mask.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
205   ret void
208 declare void @llvm.riscv.vsoxseg3.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, i32)
209 declare void @llvm.riscv.vsoxseg3.mask.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
211 define void @test_vsoxseg3_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
212 ; CHECK-LABEL: test_vsoxseg3_nxv1i8_nxv1i32:
213 ; CHECK:       # %bb.0: # %entry
214 ; CHECK-NEXT:    vmv1r.v v10, v8
215 ; CHECK-NEXT:    vmv1r.v v11, v8
216 ; CHECK-NEXT:    vmv1r.v v12, v8
217 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
218 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9
219 ; CHECK-NEXT:    ret
220 entry:
221   tail call void @llvm.riscv.vsoxseg3.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
222   ret void
225 define void @test_vsoxseg3_mask_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
226 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1i8_nxv1i32:
227 ; CHECK:       # %bb.0: # %entry
228 ; CHECK-NEXT:    vmv1r.v v10, v8
229 ; CHECK-NEXT:    vmv1r.v v11, v8
230 ; CHECK-NEXT:    vmv1r.v v12, v8
231 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
232 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9, v0.t
233 ; CHECK-NEXT:    ret
234 entry:
235   tail call void @llvm.riscv.vsoxseg3.mask.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
236   ret void
239 declare void @llvm.riscv.vsoxseg3.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, i32)
240 declare void @llvm.riscv.vsoxseg3.mask.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
242 define void @test_vsoxseg3_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
243 ; CHECK-LABEL: test_vsoxseg3_nxv1i8_nxv1i16:
244 ; CHECK:       # %bb.0: # %entry
245 ; CHECK-NEXT:    vmv1r.v v10, v8
246 ; CHECK-NEXT:    vmv1r.v v11, v8
247 ; CHECK-NEXT:    vmv1r.v v12, v8
248 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
249 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
250 ; CHECK-NEXT:    ret
251 entry:
252   tail call void @llvm.riscv.vsoxseg3.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
253   ret void
256 define void @test_vsoxseg3_mask_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
257 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1i8_nxv1i16:
258 ; CHECK:       # %bb.0: # %entry
259 ; CHECK-NEXT:    vmv1r.v v10, v8
260 ; CHECK-NEXT:    vmv1r.v v11, v8
261 ; CHECK-NEXT:    vmv1r.v v12, v8
262 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
263 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
264 ; CHECK-NEXT:    ret
265 entry:
266   tail call void @llvm.riscv.vsoxseg3.mask.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
267   ret void
270 declare void @llvm.riscv.vsoxseg4.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, i32)
271 declare void @llvm.riscv.vsoxseg4.mask.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
273 define void @test_vsoxseg4_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
274 ; CHECK-LABEL: test_vsoxseg4_nxv1i8_nxv1i8:
275 ; CHECK:       # %bb.0: # %entry
276 ; CHECK-NEXT:    vmv1r.v v10, v8
277 ; CHECK-NEXT:    vmv1r.v v11, v8
278 ; CHECK-NEXT:    vmv1r.v v12, v8
279 ; CHECK-NEXT:    vmv1r.v v13, v8
280 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
281 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
282 ; CHECK-NEXT:    ret
283 entry:
284   tail call void @llvm.riscv.vsoxseg4.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
285   ret void
288 define void @test_vsoxseg4_mask_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
289 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1i8_nxv1i8:
290 ; CHECK:       # %bb.0: # %entry
291 ; CHECK-NEXT:    vmv1r.v v10, v8
292 ; CHECK-NEXT:    vmv1r.v v11, v8
293 ; CHECK-NEXT:    vmv1r.v v12, v8
294 ; CHECK-NEXT:    vmv1r.v v13, v8
295 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
296 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
297 ; CHECK-NEXT:    ret
298 entry:
299   tail call void @llvm.riscv.vsoxseg4.mask.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
300   ret void
303 declare void @llvm.riscv.vsoxseg4.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, i32)
304 declare void @llvm.riscv.vsoxseg4.mask.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
306 define void @test_vsoxseg4_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
307 ; CHECK-LABEL: test_vsoxseg4_nxv1i8_nxv1i32:
308 ; CHECK:       # %bb.0: # %entry
309 ; CHECK-NEXT:    vmv1r.v v10, v8
310 ; CHECK-NEXT:    vmv1r.v v11, v8
311 ; CHECK-NEXT:    vmv1r.v v12, v8
312 ; CHECK-NEXT:    vmv1r.v v13, v8
313 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
314 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9
315 ; CHECK-NEXT:    ret
316 entry:
317   tail call void @llvm.riscv.vsoxseg4.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
318   ret void
321 define void @test_vsoxseg4_mask_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
322 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1i8_nxv1i32:
323 ; CHECK:       # %bb.0: # %entry
324 ; CHECK-NEXT:    vmv1r.v v10, v8
325 ; CHECK-NEXT:    vmv1r.v v11, v8
326 ; CHECK-NEXT:    vmv1r.v v12, v8
327 ; CHECK-NEXT:    vmv1r.v v13, v8
328 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
329 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9, v0.t
330 ; CHECK-NEXT:    ret
331 entry:
332   tail call void @llvm.riscv.vsoxseg4.mask.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
333   ret void
336 declare void @llvm.riscv.vsoxseg4.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, i32)
337 declare void @llvm.riscv.vsoxseg4.mask.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
339 define void @test_vsoxseg4_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
340 ; CHECK-LABEL: test_vsoxseg4_nxv1i8_nxv1i16:
341 ; CHECK:       # %bb.0: # %entry
342 ; CHECK-NEXT:    vmv1r.v v10, v8
343 ; CHECK-NEXT:    vmv1r.v v11, v8
344 ; CHECK-NEXT:    vmv1r.v v12, v8
345 ; CHECK-NEXT:    vmv1r.v v13, v8
346 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
347 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
348 ; CHECK-NEXT:    ret
349 entry:
350   tail call void @llvm.riscv.vsoxseg4.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
351   ret void
354 define void @test_vsoxseg4_mask_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
355 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1i8_nxv1i16:
356 ; CHECK:       # %bb.0: # %entry
357 ; CHECK-NEXT:    vmv1r.v v10, v8
358 ; CHECK-NEXT:    vmv1r.v v11, v8
359 ; CHECK-NEXT:    vmv1r.v v12, v8
360 ; CHECK-NEXT:    vmv1r.v v13, v8
361 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
362 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
363 ; CHECK-NEXT:    ret
364 entry:
365   tail call void @llvm.riscv.vsoxseg4.mask.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
366   ret void
369 declare void @llvm.riscv.vsoxseg5.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, i32)
370 declare void @llvm.riscv.vsoxseg5.mask.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
372 define void @test_vsoxseg5_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
373 ; CHECK-LABEL: test_vsoxseg5_nxv1i8_nxv1i8:
374 ; CHECK:       # %bb.0: # %entry
375 ; CHECK-NEXT:    vmv1r.v v10, v8
376 ; CHECK-NEXT:    vmv1r.v v11, v8
377 ; CHECK-NEXT:    vmv1r.v v12, v8
378 ; CHECK-NEXT:    vmv1r.v v13, v8
379 ; CHECK-NEXT:    vmv1r.v v14, v8
380 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
381 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
382 ; CHECK-NEXT:    ret
383 entry:
384   tail call void @llvm.riscv.vsoxseg5.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
385   ret void
388 define void @test_vsoxseg5_mask_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
389 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1i8_nxv1i8:
390 ; CHECK:       # %bb.0: # %entry
391 ; CHECK-NEXT:    vmv1r.v v10, v8
392 ; CHECK-NEXT:    vmv1r.v v11, v8
393 ; CHECK-NEXT:    vmv1r.v v12, v8
394 ; CHECK-NEXT:    vmv1r.v v13, v8
395 ; CHECK-NEXT:    vmv1r.v v14, v8
396 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
397 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
398 ; CHECK-NEXT:    ret
399 entry:
400   tail call void @llvm.riscv.vsoxseg5.mask.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
401   ret void
404 declare void @llvm.riscv.vsoxseg5.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, i32)
405 declare void @llvm.riscv.vsoxseg5.mask.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
407 define void @test_vsoxseg5_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
408 ; CHECK-LABEL: test_vsoxseg5_nxv1i8_nxv1i32:
409 ; CHECK:       # %bb.0: # %entry
410 ; CHECK-NEXT:    vmv1r.v v10, v8
411 ; CHECK-NEXT:    vmv1r.v v11, v8
412 ; CHECK-NEXT:    vmv1r.v v12, v8
413 ; CHECK-NEXT:    vmv1r.v v13, v8
414 ; CHECK-NEXT:    vmv1r.v v14, v8
415 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
416 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9
417 ; CHECK-NEXT:    ret
418 entry:
419   tail call void @llvm.riscv.vsoxseg5.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
420   ret void
423 define void @test_vsoxseg5_mask_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
424 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1i8_nxv1i32:
425 ; CHECK:       # %bb.0: # %entry
426 ; CHECK-NEXT:    vmv1r.v v10, v8
427 ; CHECK-NEXT:    vmv1r.v v11, v8
428 ; CHECK-NEXT:    vmv1r.v v12, v8
429 ; CHECK-NEXT:    vmv1r.v v13, v8
430 ; CHECK-NEXT:    vmv1r.v v14, v8
431 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
432 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9, v0.t
433 ; CHECK-NEXT:    ret
434 entry:
435   tail call void @llvm.riscv.vsoxseg5.mask.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
436   ret void
439 declare void @llvm.riscv.vsoxseg5.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, i32)
440 declare void @llvm.riscv.vsoxseg5.mask.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
442 define void @test_vsoxseg5_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
443 ; CHECK-LABEL: test_vsoxseg5_nxv1i8_nxv1i16:
444 ; CHECK:       # %bb.0: # %entry
445 ; CHECK-NEXT:    vmv1r.v v10, v8
446 ; CHECK-NEXT:    vmv1r.v v11, v8
447 ; CHECK-NEXT:    vmv1r.v v12, v8
448 ; CHECK-NEXT:    vmv1r.v v13, v8
449 ; CHECK-NEXT:    vmv1r.v v14, v8
450 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
451 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
452 ; CHECK-NEXT:    ret
453 entry:
454   tail call void @llvm.riscv.vsoxseg5.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
455   ret void
458 define void @test_vsoxseg5_mask_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
459 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1i8_nxv1i16:
460 ; CHECK:       # %bb.0: # %entry
461 ; CHECK-NEXT:    vmv1r.v v10, v8
462 ; CHECK-NEXT:    vmv1r.v v11, v8
463 ; CHECK-NEXT:    vmv1r.v v12, v8
464 ; CHECK-NEXT:    vmv1r.v v13, v8
465 ; CHECK-NEXT:    vmv1r.v v14, v8
466 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
467 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
468 ; CHECK-NEXT:    ret
469 entry:
470   tail call void @llvm.riscv.vsoxseg5.mask.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
471   ret void
474 declare void @llvm.riscv.vsoxseg6.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, i32)
475 declare void @llvm.riscv.vsoxseg6.mask.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
477 define void @test_vsoxseg6_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
478 ; CHECK-LABEL: test_vsoxseg6_nxv1i8_nxv1i8:
479 ; CHECK:       # %bb.0: # %entry
480 ; CHECK-NEXT:    vmv1r.v v10, v8
481 ; CHECK-NEXT:    vmv1r.v v11, v8
482 ; CHECK-NEXT:    vmv1r.v v12, v8
483 ; CHECK-NEXT:    vmv1r.v v13, v8
484 ; CHECK-NEXT:    vmv1r.v v14, v8
485 ; CHECK-NEXT:    vmv1r.v v15, v8
486 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
487 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
488 ; CHECK-NEXT:    ret
489 entry:
490   tail call void @llvm.riscv.vsoxseg6.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
491   ret void
494 define void @test_vsoxseg6_mask_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
495 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1i8_nxv1i8:
496 ; CHECK:       # %bb.0: # %entry
497 ; CHECK-NEXT:    vmv1r.v v10, v8
498 ; CHECK-NEXT:    vmv1r.v v11, v8
499 ; CHECK-NEXT:    vmv1r.v v12, v8
500 ; CHECK-NEXT:    vmv1r.v v13, v8
501 ; CHECK-NEXT:    vmv1r.v v14, v8
502 ; CHECK-NEXT:    vmv1r.v v15, v8
503 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
504 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
505 ; CHECK-NEXT:    ret
506 entry:
507   tail call void @llvm.riscv.vsoxseg6.mask.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
508   ret void
511 declare void @llvm.riscv.vsoxseg6.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, i32)
512 declare void @llvm.riscv.vsoxseg6.mask.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
514 define void @test_vsoxseg6_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
515 ; CHECK-LABEL: test_vsoxseg6_nxv1i8_nxv1i32:
516 ; CHECK:       # %bb.0: # %entry
517 ; CHECK-NEXT:    vmv1r.v v10, v8
518 ; CHECK-NEXT:    vmv1r.v v11, v8
519 ; CHECK-NEXT:    vmv1r.v v12, v8
520 ; CHECK-NEXT:    vmv1r.v v13, v8
521 ; CHECK-NEXT:    vmv1r.v v14, v8
522 ; CHECK-NEXT:    vmv1r.v v15, v8
523 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
524 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9
525 ; CHECK-NEXT:    ret
526 entry:
527   tail call void @llvm.riscv.vsoxseg6.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
528   ret void
531 define void @test_vsoxseg6_mask_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
532 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1i8_nxv1i32:
533 ; CHECK:       # %bb.0: # %entry
534 ; CHECK-NEXT:    vmv1r.v v10, v8
535 ; CHECK-NEXT:    vmv1r.v v11, v8
536 ; CHECK-NEXT:    vmv1r.v v12, v8
537 ; CHECK-NEXT:    vmv1r.v v13, v8
538 ; CHECK-NEXT:    vmv1r.v v14, v8
539 ; CHECK-NEXT:    vmv1r.v v15, v8
540 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
541 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9, v0.t
542 ; CHECK-NEXT:    ret
543 entry:
544   tail call void @llvm.riscv.vsoxseg6.mask.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
545   ret void
548 declare void @llvm.riscv.vsoxseg6.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, i32)
549 declare void @llvm.riscv.vsoxseg6.mask.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
551 define void @test_vsoxseg6_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
552 ; CHECK-LABEL: test_vsoxseg6_nxv1i8_nxv1i16:
553 ; CHECK:       # %bb.0: # %entry
554 ; CHECK-NEXT:    vmv1r.v v10, v8
555 ; CHECK-NEXT:    vmv1r.v v11, v8
556 ; CHECK-NEXT:    vmv1r.v v12, v8
557 ; CHECK-NEXT:    vmv1r.v v13, v8
558 ; CHECK-NEXT:    vmv1r.v v14, v8
559 ; CHECK-NEXT:    vmv1r.v v15, v8
560 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
561 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
562 ; CHECK-NEXT:    ret
563 entry:
564   tail call void @llvm.riscv.vsoxseg6.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
565   ret void
568 define void @test_vsoxseg6_mask_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
569 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1i8_nxv1i16:
570 ; CHECK:       # %bb.0: # %entry
571 ; CHECK-NEXT:    vmv1r.v v10, v8
572 ; CHECK-NEXT:    vmv1r.v v11, v8
573 ; CHECK-NEXT:    vmv1r.v v12, v8
574 ; CHECK-NEXT:    vmv1r.v v13, v8
575 ; CHECK-NEXT:    vmv1r.v v14, v8
576 ; CHECK-NEXT:    vmv1r.v v15, v8
577 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
578 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
579 ; CHECK-NEXT:    ret
580 entry:
581   tail call void @llvm.riscv.vsoxseg6.mask.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
582   ret void
585 declare void @llvm.riscv.vsoxseg7.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, i32)
586 declare void @llvm.riscv.vsoxseg7.mask.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
588 define void @test_vsoxseg7_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
589 ; CHECK-LABEL: test_vsoxseg7_nxv1i8_nxv1i8:
590 ; CHECK:       # %bb.0: # %entry
591 ; CHECK-NEXT:    vmv1r.v v10, v8
592 ; CHECK-NEXT:    vmv1r.v v11, v8
593 ; CHECK-NEXT:    vmv1r.v v12, v8
594 ; CHECK-NEXT:    vmv1r.v v13, v8
595 ; CHECK-NEXT:    vmv1r.v v14, v8
596 ; CHECK-NEXT:    vmv1r.v v15, v8
597 ; CHECK-NEXT:    vmv1r.v v16, v8
598 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
599 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
600 ; CHECK-NEXT:    ret
601 entry:
602   tail call void @llvm.riscv.vsoxseg7.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
603   ret void
606 define void @test_vsoxseg7_mask_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
607 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1i8_nxv1i8:
608 ; CHECK:       # %bb.0: # %entry
609 ; CHECK-NEXT:    vmv1r.v v10, v8
610 ; CHECK-NEXT:    vmv1r.v v11, v8
611 ; CHECK-NEXT:    vmv1r.v v12, v8
612 ; CHECK-NEXT:    vmv1r.v v13, v8
613 ; CHECK-NEXT:    vmv1r.v v14, v8
614 ; CHECK-NEXT:    vmv1r.v v15, v8
615 ; CHECK-NEXT:    vmv1r.v v16, v8
616 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
617 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
618 ; CHECK-NEXT:    ret
619 entry:
620   tail call void @llvm.riscv.vsoxseg7.mask.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
621   ret void
624 declare void @llvm.riscv.vsoxseg7.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, i32)
625 declare void @llvm.riscv.vsoxseg7.mask.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
627 define void @test_vsoxseg7_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
628 ; CHECK-LABEL: test_vsoxseg7_nxv1i8_nxv1i32:
629 ; CHECK:       # %bb.0: # %entry
630 ; CHECK-NEXT:    vmv1r.v v10, v8
631 ; CHECK-NEXT:    vmv1r.v v11, v8
632 ; CHECK-NEXT:    vmv1r.v v12, v8
633 ; CHECK-NEXT:    vmv1r.v v13, v8
634 ; CHECK-NEXT:    vmv1r.v v14, v8
635 ; CHECK-NEXT:    vmv1r.v v15, v8
636 ; CHECK-NEXT:    vmv1r.v v16, v8
637 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
638 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9
639 ; CHECK-NEXT:    ret
640 entry:
641   tail call void @llvm.riscv.vsoxseg7.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
642   ret void
645 define void @test_vsoxseg7_mask_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
646 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1i8_nxv1i32:
647 ; CHECK:       # %bb.0: # %entry
648 ; CHECK-NEXT:    vmv1r.v v10, v8
649 ; CHECK-NEXT:    vmv1r.v v11, v8
650 ; CHECK-NEXT:    vmv1r.v v12, v8
651 ; CHECK-NEXT:    vmv1r.v v13, v8
652 ; CHECK-NEXT:    vmv1r.v v14, v8
653 ; CHECK-NEXT:    vmv1r.v v15, v8
654 ; CHECK-NEXT:    vmv1r.v v16, v8
655 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
656 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9, v0.t
657 ; CHECK-NEXT:    ret
658 entry:
659   tail call void @llvm.riscv.vsoxseg7.mask.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
660   ret void
663 declare void @llvm.riscv.vsoxseg7.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, i32)
664 declare void @llvm.riscv.vsoxseg7.mask.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
666 define void @test_vsoxseg7_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
667 ; CHECK-LABEL: test_vsoxseg7_nxv1i8_nxv1i16:
668 ; CHECK:       # %bb.0: # %entry
669 ; CHECK-NEXT:    vmv1r.v v10, v8
670 ; CHECK-NEXT:    vmv1r.v v11, v8
671 ; CHECK-NEXT:    vmv1r.v v12, v8
672 ; CHECK-NEXT:    vmv1r.v v13, v8
673 ; CHECK-NEXT:    vmv1r.v v14, v8
674 ; CHECK-NEXT:    vmv1r.v v15, v8
675 ; CHECK-NEXT:    vmv1r.v v16, v8
676 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
677 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
678 ; CHECK-NEXT:    ret
679 entry:
680   tail call void @llvm.riscv.vsoxseg7.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
681   ret void
684 define void @test_vsoxseg7_mask_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
685 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1i8_nxv1i16:
686 ; CHECK:       # %bb.0: # %entry
687 ; CHECK-NEXT:    vmv1r.v v10, v8
688 ; CHECK-NEXT:    vmv1r.v v11, v8
689 ; CHECK-NEXT:    vmv1r.v v12, v8
690 ; CHECK-NEXT:    vmv1r.v v13, v8
691 ; CHECK-NEXT:    vmv1r.v v14, v8
692 ; CHECK-NEXT:    vmv1r.v v15, v8
693 ; CHECK-NEXT:    vmv1r.v v16, v8
694 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
695 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
696 ; CHECK-NEXT:    ret
697 entry:
698   tail call void @llvm.riscv.vsoxseg7.mask.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
699   ret void
702 declare void @llvm.riscv.vsoxseg8.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, i32)
703 declare void @llvm.riscv.vsoxseg8.mask.nxv1i8.nxv1i8(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
705 define void @test_vsoxseg8_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
706 ; CHECK-LABEL: test_vsoxseg8_nxv1i8_nxv1i8:
707 ; CHECK:       # %bb.0: # %entry
708 ; CHECK-NEXT:    vmv1r.v v10, v8
709 ; CHECK-NEXT:    vmv1r.v v11, v8
710 ; CHECK-NEXT:    vmv1r.v v12, v8
711 ; CHECK-NEXT:    vmv1r.v v13, v8
712 ; CHECK-NEXT:    vmv1r.v v14, v8
713 ; CHECK-NEXT:    vmv1r.v v15, v8
714 ; CHECK-NEXT:    vmv1r.v v16, v8
715 ; CHECK-NEXT:    vmv1r.v v17, v8
716 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
717 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
718 ; CHECK-NEXT:    ret
719 entry:
720   tail call void @llvm.riscv.vsoxseg8.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
721   ret void
724 define void @test_vsoxseg8_mask_nxv1i8_nxv1i8(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
725 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1i8_nxv1i8:
726 ; CHECK:       # %bb.0: # %entry
727 ; CHECK-NEXT:    vmv1r.v v10, v8
728 ; CHECK-NEXT:    vmv1r.v v11, v8
729 ; CHECK-NEXT:    vmv1r.v v12, v8
730 ; CHECK-NEXT:    vmv1r.v v13, v8
731 ; CHECK-NEXT:    vmv1r.v v14, v8
732 ; CHECK-NEXT:    vmv1r.v v15, v8
733 ; CHECK-NEXT:    vmv1r.v v16, v8
734 ; CHECK-NEXT:    vmv1r.v v17, v8
735 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
736 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
737 ; CHECK-NEXT:    ret
738 entry:
739   tail call void @llvm.riscv.vsoxseg8.mask.nxv1i8.nxv1i8(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
740   ret void
743 declare void @llvm.riscv.vsoxseg8.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, i32)
744 declare void @llvm.riscv.vsoxseg8.mask.nxv1i8.nxv1i32(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
746 define void @test_vsoxseg8_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
747 ; CHECK-LABEL: test_vsoxseg8_nxv1i8_nxv1i32:
748 ; CHECK:       # %bb.0: # %entry
749 ; CHECK-NEXT:    vmv1r.v v10, v8
750 ; CHECK-NEXT:    vmv1r.v v11, v8
751 ; CHECK-NEXT:    vmv1r.v v12, v8
752 ; CHECK-NEXT:    vmv1r.v v13, v8
753 ; CHECK-NEXT:    vmv1r.v v14, v8
754 ; CHECK-NEXT:    vmv1r.v v15, v8
755 ; CHECK-NEXT:    vmv1r.v v16, v8
756 ; CHECK-NEXT:    vmv1r.v v17, v8
757 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
758 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9
759 ; CHECK-NEXT:    ret
760 entry:
761   tail call void @llvm.riscv.vsoxseg8.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
762   ret void
765 define void @test_vsoxseg8_mask_nxv1i8_nxv1i32(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
766 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1i8_nxv1i32:
767 ; CHECK:       # %bb.0: # %entry
768 ; CHECK-NEXT:    vmv1r.v v10, v8
769 ; CHECK-NEXT:    vmv1r.v v11, v8
770 ; CHECK-NEXT:    vmv1r.v v12, v8
771 ; CHECK-NEXT:    vmv1r.v v13, v8
772 ; CHECK-NEXT:    vmv1r.v v14, v8
773 ; CHECK-NEXT:    vmv1r.v v15, v8
774 ; CHECK-NEXT:    vmv1r.v v16, v8
775 ; CHECK-NEXT:    vmv1r.v v17, v8
776 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
777 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9, v0.t
778 ; CHECK-NEXT:    ret
779 entry:
780   tail call void @llvm.riscv.vsoxseg8.mask.nxv1i8.nxv1i32(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
781   ret void
784 declare void @llvm.riscv.vsoxseg8.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, i32)
785 declare void @llvm.riscv.vsoxseg8.mask.nxv1i8.nxv1i16(<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>,<vscale x 1 x i8>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
787 define void @test_vsoxseg8_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
788 ; CHECK-LABEL: test_vsoxseg8_nxv1i8_nxv1i16:
789 ; CHECK:       # %bb.0: # %entry
790 ; CHECK-NEXT:    vmv1r.v v10, v8
791 ; CHECK-NEXT:    vmv1r.v v11, v8
792 ; CHECK-NEXT:    vmv1r.v v12, v8
793 ; CHECK-NEXT:    vmv1r.v v13, v8
794 ; CHECK-NEXT:    vmv1r.v v14, v8
795 ; CHECK-NEXT:    vmv1r.v v15, v8
796 ; CHECK-NEXT:    vmv1r.v v16, v8
797 ; CHECK-NEXT:    vmv1r.v v17, v8
798 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
799 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
800 ; CHECK-NEXT:    ret
801 entry:
802   tail call void @llvm.riscv.vsoxseg8.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
803   ret void
806 define void @test_vsoxseg8_mask_nxv1i8_nxv1i16(<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
807 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1i8_nxv1i16:
808 ; CHECK:       # %bb.0: # %entry
809 ; CHECK-NEXT:    vmv1r.v v10, v8
810 ; CHECK-NEXT:    vmv1r.v v11, v8
811 ; CHECK-NEXT:    vmv1r.v v12, v8
812 ; CHECK-NEXT:    vmv1r.v v13, v8
813 ; CHECK-NEXT:    vmv1r.v v14, v8
814 ; CHECK-NEXT:    vmv1r.v v15, v8
815 ; CHECK-NEXT:    vmv1r.v v16, v8
816 ; CHECK-NEXT:    vmv1r.v v17, v8
817 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
818 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
819 ; CHECK-NEXT:    ret
820 entry:
821   tail call void @llvm.riscv.vsoxseg8.mask.nxv1i8.nxv1i16(<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val,<vscale x 1 x i8> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
822   ret void
825 declare void @llvm.riscv.vsoxseg2.nxv16i8.nxv16i16(<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i16>, i32)
826 declare void @llvm.riscv.vsoxseg2.mask.nxv16i8.nxv16i16(<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i16>, <vscale x 16 x i1>, i32)
828 define void @test_vsoxseg2_nxv16i8_nxv16i16(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i16> %index, i32 %vl) {
829 ; CHECK-LABEL: test_vsoxseg2_nxv16i8_nxv16i16:
830 ; CHECK:       # %bb.0: # %entry
831 ; CHECK-NEXT:    vmv2r.v v10, v8
832 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
833 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v12
834 ; CHECK-NEXT:    ret
835 entry:
836   tail call void @llvm.riscv.vsoxseg2.nxv16i8.nxv16i16(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i16> %index, i32 %vl)
837   ret void
840 define void @test_vsoxseg2_mask_nxv16i8_nxv16i16(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i32 %vl) {
841 ; CHECK-LABEL: test_vsoxseg2_mask_nxv16i8_nxv16i16:
842 ; CHECK:       # %bb.0: # %entry
843 ; CHECK-NEXT:    vmv2r.v v10, v8
844 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
845 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v12, v0.t
846 ; CHECK-NEXT:    ret
847 entry:
848   tail call void @llvm.riscv.vsoxseg2.mask.nxv16i8.nxv16i16(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i32 %vl)
849   ret void
852 declare void @llvm.riscv.vsoxseg2.nxv16i8.nxv16i8(<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i8>, i32)
853 declare void @llvm.riscv.vsoxseg2.mask.nxv16i8.nxv16i8(<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i8>, <vscale x 16 x i1>, i32)
855 define void @test_vsoxseg2_nxv16i8_nxv16i8(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i8> %index, i32 %vl) {
856 ; CHECK-LABEL: test_vsoxseg2_nxv16i8_nxv16i8:
857 ; CHECK:       # %bb.0: # %entry
858 ; CHECK-NEXT:    vmv2r.v v12, v10
859 ; CHECK-NEXT:    vmv2r.v v10, v8
860 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
861 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v12
862 ; CHECK-NEXT:    ret
863 entry:
864   tail call void @llvm.riscv.vsoxseg2.nxv16i8.nxv16i8(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i8> %index, i32 %vl)
865   ret void
868 define void @test_vsoxseg2_mask_nxv16i8_nxv16i8(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i32 %vl) {
869 ; CHECK-LABEL: test_vsoxseg2_mask_nxv16i8_nxv16i8:
870 ; CHECK:       # %bb.0: # %entry
871 ; CHECK-NEXT:    vmv2r.v v12, v10
872 ; CHECK-NEXT:    vmv2r.v v10, v8
873 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
874 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v12, v0.t
875 ; CHECK-NEXT:    ret
876 entry:
877   tail call void @llvm.riscv.vsoxseg2.mask.nxv16i8.nxv16i8(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i32 %vl)
878   ret void
881 declare void @llvm.riscv.vsoxseg2.nxv16i8.nxv16i32(<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i32>, i32)
882 declare void @llvm.riscv.vsoxseg2.mask.nxv16i8.nxv16i32(<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i32>, <vscale x 16 x i1>, i32)
884 define void @test_vsoxseg2_nxv16i8_nxv16i32(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i32> %index, i32 %vl) {
885 ; CHECK-LABEL: test_vsoxseg2_nxv16i8_nxv16i32:
886 ; CHECK:       # %bb.0: # %entry
887 ; CHECK-NEXT:    vmv2r.v v10, v8
888 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
889 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v16
890 ; CHECK-NEXT:    ret
891 entry:
892   tail call void @llvm.riscv.vsoxseg2.nxv16i8.nxv16i32(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i32> %index, i32 %vl)
893   ret void
896 define void @test_vsoxseg2_mask_nxv16i8_nxv16i32(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i32 %vl) {
897 ; CHECK-LABEL: test_vsoxseg2_mask_nxv16i8_nxv16i32:
898 ; CHECK:       # %bb.0: # %entry
899 ; CHECK-NEXT:    vmv2r.v v10, v8
900 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
901 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v16, v0.t
902 ; CHECK-NEXT:    ret
903 entry:
904   tail call void @llvm.riscv.vsoxseg2.mask.nxv16i8.nxv16i32(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i32 %vl)
905   ret void
908 declare void @llvm.riscv.vsoxseg3.nxv16i8.nxv16i16(<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i16>, i32)
909 declare void @llvm.riscv.vsoxseg3.mask.nxv16i8.nxv16i16(<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i16>, <vscale x 16 x i1>, i32)
911 define void @test_vsoxseg3_nxv16i8_nxv16i16(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i16> %index, i32 %vl) {
912 ; CHECK-LABEL: test_vsoxseg3_nxv16i8_nxv16i16:
913 ; CHECK:       # %bb.0: # %entry
914 ; CHECK-NEXT:    vmv2r.v v10, v8
915 ; CHECK-NEXT:    vmv4r.v v16, v12
916 ; CHECK-NEXT:    vmv2r.v v12, v8
917 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
918 ; CHECK-NEXT:    vsoxseg3ei16.v v8, (a0), v16
919 ; CHECK-NEXT:    ret
920 entry:
921   tail call void @llvm.riscv.vsoxseg3.nxv16i8.nxv16i16(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i16> %index, i32 %vl)
922   ret void
925 define void @test_vsoxseg3_mask_nxv16i8_nxv16i16(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i32 %vl) {
926 ; CHECK-LABEL: test_vsoxseg3_mask_nxv16i8_nxv16i16:
927 ; CHECK:       # %bb.0: # %entry
928 ; CHECK-NEXT:    vmv2r.v v10, v8
929 ; CHECK-NEXT:    vmv4r.v v16, v12
930 ; CHECK-NEXT:    vmv2r.v v12, v8
931 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
932 ; CHECK-NEXT:    vsoxseg3ei16.v v8, (a0), v16, v0.t
933 ; CHECK-NEXT:    ret
934 entry:
935   tail call void @llvm.riscv.vsoxseg3.mask.nxv16i8.nxv16i16(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i32 %vl)
936   ret void
939 declare void @llvm.riscv.vsoxseg3.nxv16i8.nxv16i8(<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i8>, i32)
940 declare void @llvm.riscv.vsoxseg3.mask.nxv16i8.nxv16i8(<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i8>, <vscale x 16 x i1>, i32)
942 define void @test_vsoxseg3_nxv16i8_nxv16i8(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i8> %index, i32 %vl) {
943 ; CHECK-LABEL: test_vsoxseg3_nxv16i8_nxv16i8:
944 ; CHECK:       # %bb.0: # %entry
945 ; CHECK-NEXT:    vmv2r.v v12, v8
946 ; CHECK-NEXT:    vmv2r.v v14, v8
947 ; CHECK-NEXT:    vmv2r.v v16, v8
948 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
949 ; CHECK-NEXT:    vsoxseg3ei8.v v12, (a0), v10
950 ; CHECK-NEXT:    ret
951 entry:
952   tail call void @llvm.riscv.vsoxseg3.nxv16i8.nxv16i8(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i8> %index, i32 %vl)
953   ret void
956 define void @test_vsoxseg3_mask_nxv16i8_nxv16i8(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i32 %vl) {
957 ; CHECK-LABEL: test_vsoxseg3_mask_nxv16i8_nxv16i8:
958 ; CHECK:       # %bb.0: # %entry
959 ; CHECK-NEXT:    vmv2r.v v12, v8
960 ; CHECK-NEXT:    vmv2r.v v14, v8
961 ; CHECK-NEXT:    vmv2r.v v16, v8
962 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
963 ; CHECK-NEXT:    vsoxseg3ei8.v v12, (a0), v10, v0.t
964 ; CHECK-NEXT:    ret
965 entry:
966   tail call void @llvm.riscv.vsoxseg3.mask.nxv16i8.nxv16i8(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i32 %vl)
967   ret void
970 declare void @llvm.riscv.vsoxseg3.nxv16i8.nxv16i32(<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i32>, i32)
971 declare void @llvm.riscv.vsoxseg3.mask.nxv16i8.nxv16i32(<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i32>, <vscale x 16 x i1>, i32)
973 define void @test_vsoxseg3_nxv16i8_nxv16i32(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i32> %index, i32 %vl) {
974 ; CHECK-LABEL: test_vsoxseg3_nxv16i8_nxv16i32:
975 ; CHECK:       # %bb.0: # %entry
976 ; CHECK-NEXT:    vmv2r.v v10, v8
977 ; CHECK-NEXT:    vmv2r.v v12, v8
978 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
979 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v16
980 ; CHECK-NEXT:    ret
981 entry:
982   tail call void @llvm.riscv.vsoxseg3.nxv16i8.nxv16i32(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i32> %index, i32 %vl)
983   ret void
986 define void @test_vsoxseg3_mask_nxv16i8_nxv16i32(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i32 %vl) {
987 ; CHECK-LABEL: test_vsoxseg3_mask_nxv16i8_nxv16i32:
988 ; CHECK:       # %bb.0: # %entry
989 ; CHECK-NEXT:    vmv2r.v v10, v8
990 ; CHECK-NEXT:    vmv2r.v v12, v8
991 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
992 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v16, v0.t
993 ; CHECK-NEXT:    ret
994 entry:
995   tail call void @llvm.riscv.vsoxseg3.mask.nxv16i8.nxv16i32(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i32 %vl)
996   ret void
999 declare void @llvm.riscv.vsoxseg4.nxv16i8.nxv16i16(<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i16>, i32)
1000 declare void @llvm.riscv.vsoxseg4.mask.nxv16i8.nxv16i16(<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i16>, <vscale x 16 x i1>, i32)
1002 define void @test_vsoxseg4_nxv16i8_nxv16i16(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i16> %index, i32 %vl) {
1003 ; CHECK-LABEL: test_vsoxseg4_nxv16i8_nxv16i16:
1004 ; CHECK:       # %bb.0: # %entry
1005 ; CHECK-NEXT:    vmv2r.v v16, v8
1006 ; CHECK-NEXT:    vmv2r.v v18, v8
1007 ; CHECK-NEXT:    vmv2r.v v20, v8
1008 ; CHECK-NEXT:    vmv2r.v v22, v8
1009 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1010 ; CHECK-NEXT:    vsoxseg4ei16.v v16, (a0), v12
1011 ; CHECK-NEXT:    ret
1012 entry:
1013   tail call void @llvm.riscv.vsoxseg4.nxv16i8.nxv16i16(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i16> %index, i32 %vl)
1014   ret void
1017 define void @test_vsoxseg4_mask_nxv16i8_nxv16i16(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i32 %vl) {
1018 ; CHECK-LABEL: test_vsoxseg4_mask_nxv16i8_nxv16i16:
1019 ; CHECK:       # %bb.0: # %entry
1020 ; CHECK-NEXT:    vmv2r.v v16, v8
1021 ; CHECK-NEXT:    vmv2r.v v18, v8
1022 ; CHECK-NEXT:    vmv2r.v v20, v8
1023 ; CHECK-NEXT:    vmv2r.v v22, v8
1024 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1025 ; CHECK-NEXT:    vsoxseg4ei16.v v16, (a0), v12, v0.t
1026 ; CHECK-NEXT:    ret
1027 entry:
1028   tail call void @llvm.riscv.vsoxseg4.mask.nxv16i8.nxv16i16(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i32 %vl)
1029   ret void
1032 declare void @llvm.riscv.vsoxseg4.nxv16i8.nxv16i8(<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i8>, i32)
1033 declare void @llvm.riscv.vsoxseg4.mask.nxv16i8.nxv16i8(<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i8>, <vscale x 16 x i1>, i32)
1035 define void @test_vsoxseg4_nxv16i8_nxv16i8(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i8> %index, i32 %vl) {
1036 ; CHECK-LABEL: test_vsoxseg4_nxv16i8_nxv16i8:
1037 ; CHECK:       # %bb.0: # %entry
1038 ; CHECK-NEXT:    vmv2r.v v12, v8
1039 ; CHECK-NEXT:    vmv2r.v v14, v8
1040 ; CHECK-NEXT:    vmv2r.v v16, v8
1041 ; CHECK-NEXT:    vmv2r.v v18, v8
1042 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1043 ; CHECK-NEXT:    vsoxseg4ei8.v v12, (a0), v10
1044 ; CHECK-NEXT:    ret
1045 entry:
1046   tail call void @llvm.riscv.vsoxseg4.nxv16i8.nxv16i8(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i8> %index, i32 %vl)
1047   ret void
1050 define void @test_vsoxseg4_mask_nxv16i8_nxv16i8(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i32 %vl) {
1051 ; CHECK-LABEL: test_vsoxseg4_mask_nxv16i8_nxv16i8:
1052 ; CHECK:       # %bb.0: # %entry
1053 ; CHECK-NEXT:    vmv2r.v v12, v8
1054 ; CHECK-NEXT:    vmv2r.v v14, v8
1055 ; CHECK-NEXT:    vmv2r.v v16, v8
1056 ; CHECK-NEXT:    vmv2r.v v18, v8
1057 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1058 ; CHECK-NEXT:    vsoxseg4ei8.v v12, (a0), v10, v0.t
1059 ; CHECK-NEXT:    ret
1060 entry:
1061   tail call void @llvm.riscv.vsoxseg4.mask.nxv16i8.nxv16i8(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i32 %vl)
1062   ret void
1065 declare void @llvm.riscv.vsoxseg4.nxv16i8.nxv16i32(<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i32>, i32)
1066 declare void @llvm.riscv.vsoxseg4.mask.nxv16i8.nxv16i32(<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>,<vscale x 16 x i8>, ptr, <vscale x 16 x i32>, <vscale x 16 x i1>, i32)
1068 define void @test_vsoxseg4_nxv16i8_nxv16i32(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i32> %index, i32 %vl) {
1069 ; CHECK-LABEL: test_vsoxseg4_nxv16i8_nxv16i32:
1070 ; CHECK:       # %bb.0: # %entry
1071 ; CHECK-NEXT:    vmv2r.v v10, v8
1072 ; CHECK-NEXT:    vmv2r.v v12, v8
1073 ; CHECK-NEXT:    vmv2r.v v14, v8
1074 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1075 ; CHECK-NEXT:    vsoxseg4ei32.v v8, (a0), v16
1076 ; CHECK-NEXT:    ret
1077 entry:
1078   tail call void @llvm.riscv.vsoxseg4.nxv16i8.nxv16i32(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i32> %index, i32 %vl)
1079   ret void
1082 define void @test_vsoxseg4_mask_nxv16i8_nxv16i32(<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i32 %vl) {
1083 ; CHECK-LABEL: test_vsoxseg4_mask_nxv16i8_nxv16i32:
1084 ; CHECK:       # %bb.0: # %entry
1085 ; CHECK-NEXT:    vmv2r.v v10, v8
1086 ; CHECK-NEXT:    vmv2r.v v12, v8
1087 ; CHECK-NEXT:    vmv2r.v v14, v8
1088 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
1089 ; CHECK-NEXT:    vsoxseg4ei32.v v8, (a0), v16, v0.t
1090 ; CHECK-NEXT:    ret
1091 entry:
1092   tail call void @llvm.riscv.vsoxseg4.mask.nxv16i8.nxv16i32(<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val,<vscale x 16 x i8> %val, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i32 %vl)
1093   ret void
1096 declare void @llvm.riscv.vsoxseg2.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, i32)
1097 declare void @llvm.riscv.vsoxseg2.mask.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
1099 define void @test_vsoxseg2_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
1100 ; CHECK-LABEL: test_vsoxseg2_nxv2i32_nxv2i32:
1101 ; CHECK:       # %bb.0: # %entry
1102 ; CHECK-NEXT:    vmv1r.v v10, v9
1103 ; CHECK-NEXT:    vmv1r.v v9, v8
1104 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1105 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
1106 ; CHECK-NEXT:    ret
1107 entry:
1108   tail call void @llvm.riscv.vsoxseg2.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
1109   ret void
1112 define void @test_vsoxseg2_mask_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1113 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2i32_nxv2i32:
1114 ; CHECK:       # %bb.0: # %entry
1115 ; CHECK-NEXT:    vmv1r.v v10, v9
1116 ; CHECK-NEXT:    vmv1r.v v9, v8
1117 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1118 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
1119 ; CHECK-NEXT:    ret
1120 entry:
1121   tail call void @llvm.riscv.vsoxseg2.mask.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
1122   ret void
1125 declare void @llvm.riscv.vsoxseg2.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, i32)
1126 declare void @llvm.riscv.vsoxseg2.mask.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
1128 define void @test_vsoxseg2_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
1129 ; CHECK-LABEL: test_vsoxseg2_nxv2i32_nxv2i8:
1130 ; CHECK:       # %bb.0: # %entry
1131 ; CHECK-NEXT:    vmv1r.v v10, v9
1132 ; CHECK-NEXT:    vmv1r.v v9, v8
1133 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1134 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
1135 ; CHECK-NEXT:    ret
1136 entry:
1137   tail call void @llvm.riscv.vsoxseg2.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
1138   ret void
1141 define void @test_vsoxseg2_mask_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1142 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2i32_nxv2i8:
1143 ; CHECK:       # %bb.0: # %entry
1144 ; CHECK-NEXT:    vmv1r.v v10, v9
1145 ; CHECK-NEXT:    vmv1r.v v9, v8
1146 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1147 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
1148 ; CHECK-NEXT:    ret
1149 entry:
1150   tail call void @llvm.riscv.vsoxseg2.mask.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
1151   ret void
1154 declare void @llvm.riscv.vsoxseg2.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, i32)
1155 declare void @llvm.riscv.vsoxseg2.mask.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
1157 define void @test_vsoxseg2_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
1158 ; CHECK-LABEL: test_vsoxseg2_nxv2i32_nxv2i16:
1159 ; CHECK:       # %bb.0: # %entry
1160 ; CHECK-NEXT:    vmv1r.v v10, v9
1161 ; CHECK-NEXT:    vmv1r.v v9, v8
1162 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1163 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
1164 ; CHECK-NEXT:    ret
1165 entry:
1166   tail call void @llvm.riscv.vsoxseg2.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
1167   ret void
1170 define void @test_vsoxseg2_mask_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1171 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2i32_nxv2i16:
1172 ; CHECK:       # %bb.0: # %entry
1173 ; CHECK-NEXT:    vmv1r.v v10, v9
1174 ; CHECK-NEXT:    vmv1r.v v9, v8
1175 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1176 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
1177 ; CHECK-NEXT:    ret
1178 entry:
1179   tail call void @llvm.riscv.vsoxseg2.mask.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
1180   ret void
1183 declare void @llvm.riscv.vsoxseg3.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, i32)
1184 declare void @llvm.riscv.vsoxseg3.mask.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
1186 define void @test_vsoxseg3_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
1187 ; CHECK-LABEL: test_vsoxseg3_nxv2i32_nxv2i32:
1188 ; CHECK:       # %bb.0: # %entry
1189 ; CHECK-NEXT:    vmv1r.v v10, v8
1190 ; CHECK-NEXT:    vmv1r.v v11, v8
1191 ; CHECK-NEXT:    vmv1r.v v12, v8
1192 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1193 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9
1194 ; CHECK-NEXT:    ret
1195 entry:
1196   tail call void @llvm.riscv.vsoxseg3.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
1197   ret void
1200 define void @test_vsoxseg3_mask_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1201 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2i32_nxv2i32:
1202 ; CHECK:       # %bb.0: # %entry
1203 ; CHECK-NEXT:    vmv1r.v v10, v8
1204 ; CHECK-NEXT:    vmv1r.v v11, v8
1205 ; CHECK-NEXT:    vmv1r.v v12, v8
1206 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1207 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9, v0.t
1208 ; CHECK-NEXT:    ret
1209 entry:
1210   tail call void @llvm.riscv.vsoxseg3.mask.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
1211   ret void
1214 declare void @llvm.riscv.vsoxseg3.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, i32)
1215 declare void @llvm.riscv.vsoxseg3.mask.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
1217 define void @test_vsoxseg3_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
1218 ; CHECK-LABEL: test_vsoxseg3_nxv2i32_nxv2i8:
1219 ; CHECK:       # %bb.0: # %entry
1220 ; CHECK-NEXT:    vmv1r.v v10, v8
1221 ; CHECK-NEXT:    vmv1r.v v11, v8
1222 ; CHECK-NEXT:    vmv1r.v v12, v8
1223 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1224 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
1225 ; CHECK-NEXT:    ret
1226 entry:
1227   tail call void @llvm.riscv.vsoxseg3.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
1228   ret void
1231 define void @test_vsoxseg3_mask_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1232 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2i32_nxv2i8:
1233 ; CHECK:       # %bb.0: # %entry
1234 ; CHECK-NEXT:    vmv1r.v v10, v8
1235 ; CHECK-NEXT:    vmv1r.v v11, v8
1236 ; CHECK-NEXT:    vmv1r.v v12, v8
1237 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1238 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
1239 ; CHECK-NEXT:    ret
1240 entry:
1241   tail call void @llvm.riscv.vsoxseg3.mask.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
1242   ret void
1245 declare void @llvm.riscv.vsoxseg3.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, i32)
1246 declare void @llvm.riscv.vsoxseg3.mask.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
1248 define void @test_vsoxseg3_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
1249 ; CHECK-LABEL: test_vsoxseg3_nxv2i32_nxv2i16:
1250 ; CHECK:       # %bb.0: # %entry
1251 ; CHECK-NEXT:    vmv1r.v v10, v8
1252 ; CHECK-NEXT:    vmv1r.v v11, v8
1253 ; CHECK-NEXT:    vmv1r.v v12, v8
1254 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1255 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
1256 ; CHECK-NEXT:    ret
1257 entry:
1258   tail call void @llvm.riscv.vsoxseg3.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
1259   ret void
1262 define void @test_vsoxseg3_mask_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1263 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2i32_nxv2i16:
1264 ; CHECK:       # %bb.0: # %entry
1265 ; CHECK-NEXT:    vmv1r.v v10, v8
1266 ; CHECK-NEXT:    vmv1r.v v11, v8
1267 ; CHECK-NEXT:    vmv1r.v v12, v8
1268 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1269 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
1270 ; CHECK-NEXT:    ret
1271 entry:
1272   tail call void @llvm.riscv.vsoxseg3.mask.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
1273   ret void
1276 declare void @llvm.riscv.vsoxseg4.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, i32)
1277 declare void @llvm.riscv.vsoxseg4.mask.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
1279 define void @test_vsoxseg4_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
1280 ; CHECK-LABEL: test_vsoxseg4_nxv2i32_nxv2i32:
1281 ; CHECK:       # %bb.0: # %entry
1282 ; CHECK-NEXT:    vmv1r.v v10, v8
1283 ; CHECK-NEXT:    vmv1r.v v11, v8
1284 ; CHECK-NEXT:    vmv1r.v v12, v8
1285 ; CHECK-NEXT:    vmv1r.v v13, v8
1286 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1287 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9
1288 ; CHECK-NEXT:    ret
1289 entry:
1290   tail call void @llvm.riscv.vsoxseg4.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
1291   ret void
1294 define void @test_vsoxseg4_mask_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1295 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2i32_nxv2i32:
1296 ; CHECK:       # %bb.0: # %entry
1297 ; CHECK-NEXT:    vmv1r.v v10, v8
1298 ; CHECK-NEXT:    vmv1r.v v11, v8
1299 ; CHECK-NEXT:    vmv1r.v v12, v8
1300 ; CHECK-NEXT:    vmv1r.v v13, v8
1301 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1302 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9, v0.t
1303 ; CHECK-NEXT:    ret
1304 entry:
1305   tail call void @llvm.riscv.vsoxseg4.mask.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
1306   ret void
1309 declare void @llvm.riscv.vsoxseg4.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, i32)
1310 declare void @llvm.riscv.vsoxseg4.mask.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
1312 define void @test_vsoxseg4_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
1313 ; CHECK-LABEL: test_vsoxseg4_nxv2i32_nxv2i8:
1314 ; CHECK:       # %bb.0: # %entry
1315 ; CHECK-NEXT:    vmv1r.v v10, v8
1316 ; CHECK-NEXT:    vmv1r.v v11, v8
1317 ; CHECK-NEXT:    vmv1r.v v12, v8
1318 ; CHECK-NEXT:    vmv1r.v v13, v8
1319 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1320 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
1321 ; CHECK-NEXT:    ret
1322 entry:
1323   tail call void @llvm.riscv.vsoxseg4.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
1324   ret void
1327 define void @test_vsoxseg4_mask_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1328 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2i32_nxv2i8:
1329 ; CHECK:       # %bb.0: # %entry
1330 ; CHECK-NEXT:    vmv1r.v v10, v8
1331 ; CHECK-NEXT:    vmv1r.v v11, v8
1332 ; CHECK-NEXT:    vmv1r.v v12, v8
1333 ; CHECK-NEXT:    vmv1r.v v13, v8
1334 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1335 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
1336 ; CHECK-NEXT:    ret
1337 entry:
1338   tail call void @llvm.riscv.vsoxseg4.mask.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
1339   ret void
1342 declare void @llvm.riscv.vsoxseg4.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, i32)
1343 declare void @llvm.riscv.vsoxseg4.mask.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
1345 define void @test_vsoxseg4_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
1346 ; CHECK-LABEL: test_vsoxseg4_nxv2i32_nxv2i16:
1347 ; CHECK:       # %bb.0: # %entry
1348 ; CHECK-NEXT:    vmv1r.v v10, v8
1349 ; CHECK-NEXT:    vmv1r.v v11, v8
1350 ; CHECK-NEXT:    vmv1r.v v12, v8
1351 ; CHECK-NEXT:    vmv1r.v v13, v8
1352 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1353 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
1354 ; CHECK-NEXT:    ret
1355 entry:
1356   tail call void @llvm.riscv.vsoxseg4.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
1357   ret void
1360 define void @test_vsoxseg4_mask_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1361 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2i32_nxv2i16:
1362 ; CHECK:       # %bb.0: # %entry
1363 ; CHECK-NEXT:    vmv1r.v v10, v8
1364 ; CHECK-NEXT:    vmv1r.v v11, v8
1365 ; CHECK-NEXT:    vmv1r.v v12, v8
1366 ; CHECK-NEXT:    vmv1r.v v13, v8
1367 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1368 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
1369 ; CHECK-NEXT:    ret
1370 entry:
1371   tail call void @llvm.riscv.vsoxseg4.mask.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
1372   ret void
1375 declare void @llvm.riscv.vsoxseg5.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, i32)
1376 declare void @llvm.riscv.vsoxseg5.mask.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
1378 define void @test_vsoxseg5_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
1379 ; CHECK-LABEL: test_vsoxseg5_nxv2i32_nxv2i32:
1380 ; CHECK:       # %bb.0: # %entry
1381 ; CHECK-NEXT:    vmv1r.v v10, v8
1382 ; CHECK-NEXT:    vmv1r.v v11, v8
1383 ; CHECK-NEXT:    vmv1r.v v12, v8
1384 ; CHECK-NEXT:    vmv1r.v v13, v8
1385 ; CHECK-NEXT:    vmv1r.v v14, v8
1386 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1387 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9
1388 ; CHECK-NEXT:    ret
1389 entry:
1390   tail call void @llvm.riscv.vsoxseg5.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
1391   ret void
1394 define void @test_vsoxseg5_mask_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1395 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2i32_nxv2i32:
1396 ; CHECK:       # %bb.0: # %entry
1397 ; CHECK-NEXT:    vmv1r.v v10, v8
1398 ; CHECK-NEXT:    vmv1r.v v11, v8
1399 ; CHECK-NEXT:    vmv1r.v v12, v8
1400 ; CHECK-NEXT:    vmv1r.v v13, v8
1401 ; CHECK-NEXT:    vmv1r.v v14, v8
1402 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1403 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9, v0.t
1404 ; CHECK-NEXT:    ret
1405 entry:
1406   tail call void @llvm.riscv.vsoxseg5.mask.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
1407   ret void
1410 declare void @llvm.riscv.vsoxseg5.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, i32)
1411 declare void @llvm.riscv.vsoxseg5.mask.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
1413 define void @test_vsoxseg5_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
1414 ; CHECK-LABEL: test_vsoxseg5_nxv2i32_nxv2i8:
1415 ; CHECK:       # %bb.0: # %entry
1416 ; CHECK-NEXT:    vmv1r.v v10, v8
1417 ; CHECK-NEXT:    vmv1r.v v11, v8
1418 ; CHECK-NEXT:    vmv1r.v v12, v8
1419 ; CHECK-NEXT:    vmv1r.v v13, v8
1420 ; CHECK-NEXT:    vmv1r.v v14, v8
1421 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1422 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
1423 ; CHECK-NEXT:    ret
1424 entry:
1425   tail call void @llvm.riscv.vsoxseg5.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
1426   ret void
1429 define void @test_vsoxseg5_mask_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1430 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2i32_nxv2i8:
1431 ; CHECK:       # %bb.0: # %entry
1432 ; CHECK-NEXT:    vmv1r.v v10, v8
1433 ; CHECK-NEXT:    vmv1r.v v11, v8
1434 ; CHECK-NEXT:    vmv1r.v v12, v8
1435 ; CHECK-NEXT:    vmv1r.v v13, v8
1436 ; CHECK-NEXT:    vmv1r.v v14, v8
1437 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1438 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
1439 ; CHECK-NEXT:    ret
1440 entry:
1441   tail call void @llvm.riscv.vsoxseg5.mask.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
1442   ret void
1445 declare void @llvm.riscv.vsoxseg5.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, i32)
1446 declare void @llvm.riscv.vsoxseg5.mask.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
1448 define void @test_vsoxseg5_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
1449 ; CHECK-LABEL: test_vsoxseg5_nxv2i32_nxv2i16:
1450 ; CHECK:       # %bb.0: # %entry
1451 ; CHECK-NEXT:    vmv1r.v v10, v8
1452 ; CHECK-NEXT:    vmv1r.v v11, v8
1453 ; CHECK-NEXT:    vmv1r.v v12, v8
1454 ; CHECK-NEXT:    vmv1r.v v13, v8
1455 ; CHECK-NEXT:    vmv1r.v v14, v8
1456 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1457 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
1458 ; CHECK-NEXT:    ret
1459 entry:
1460   tail call void @llvm.riscv.vsoxseg5.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
1461   ret void
1464 define void @test_vsoxseg5_mask_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1465 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2i32_nxv2i16:
1466 ; CHECK:       # %bb.0: # %entry
1467 ; CHECK-NEXT:    vmv1r.v v10, v8
1468 ; CHECK-NEXT:    vmv1r.v v11, v8
1469 ; CHECK-NEXT:    vmv1r.v v12, v8
1470 ; CHECK-NEXT:    vmv1r.v v13, v8
1471 ; CHECK-NEXT:    vmv1r.v v14, v8
1472 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1473 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
1474 ; CHECK-NEXT:    ret
1475 entry:
1476   tail call void @llvm.riscv.vsoxseg5.mask.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
1477   ret void
1480 declare void @llvm.riscv.vsoxseg6.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, i32)
1481 declare void @llvm.riscv.vsoxseg6.mask.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
1483 define void @test_vsoxseg6_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
1484 ; CHECK-LABEL: test_vsoxseg6_nxv2i32_nxv2i32:
1485 ; CHECK:       # %bb.0: # %entry
1486 ; CHECK-NEXT:    vmv1r.v v10, v8
1487 ; CHECK-NEXT:    vmv1r.v v11, v8
1488 ; CHECK-NEXT:    vmv1r.v v12, v8
1489 ; CHECK-NEXT:    vmv1r.v v13, v8
1490 ; CHECK-NEXT:    vmv1r.v v14, v8
1491 ; CHECK-NEXT:    vmv1r.v v15, v8
1492 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1493 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9
1494 ; CHECK-NEXT:    ret
1495 entry:
1496   tail call void @llvm.riscv.vsoxseg6.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
1497   ret void
1500 define void @test_vsoxseg6_mask_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1501 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2i32_nxv2i32:
1502 ; CHECK:       # %bb.0: # %entry
1503 ; CHECK-NEXT:    vmv1r.v v10, v8
1504 ; CHECK-NEXT:    vmv1r.v v11, v8
1505 ; CHECK-NEXT:    vmv1r.v v12, v8
1506 ; CHECK-NEXT:    vmv1r.v v13, v8
1507 ; CHECK-NEXT:    vmv1r.v v14, v8
1508 ; CHECK-NEXT:    vmv1r.v v15, v8
1509 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1510 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9, v0.t
1511 ; CHECK-NEXT:    ret
1512 entry:
1513   tail call void @llvm.riscv.vsoxseg6.mask.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
1514   ret void
1517 declare void @llvm.riscv.vsoxseg6.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, i32)
1518 declare void @llvm.riscv.vsoxseg6.mask.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
1520 define void @test_vsoxseg6_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
1521 ; CHECK-LABEL: test_vsoxseg6_nxv2i32_nxv2i8:
1522 ; CHECK:       # %bb.0: # %entry
1523 ; CHECK-NEXT:    vmv1r.v v10, v8
1524 ; CHECK-NEXT:    vmv1r.v v11, v8
1525 ; CHECK-NEXT:    vmv1r.v v12, v8
1526 ; CHECK-NEXT:    vmv1r.v v13, v8
1527 ; CHECK-NEXT:    vmv1r.v v14, v8
1528 ; CHECK-NEXT:    vmv1r.v v15, v8
1529 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1530 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
1531 ; CHECK-NEXT:    ret
1532 entry:
1533   tail call void @llvm.riscv.vsoxseg6.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
1534   ret void
1537 define void @test_vsoxseg6_mask_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1538 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2i32_nxv2i8:
1539 ; CHECK:       # %bb.0: # %entry
1540 ; CHECK-NEXT:    vmv1r.v v10, v8
1541 ; CHECK-NEXT:    vmv1r.v v11, v8
1542 ; CHECK-NEXT:    vmv1r.v v12, v8
1543 ; CHECK-NEXT:    vmv1r.v v13, v8
1544 ; CHECK-NEXT:    vmv1r.v v14, v8
1545 ; CHECK-NEXT:    vmv1r.v v15, v8
1546 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1547 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
1548 ; CHECK-NEXT:    ret
1549 entry:
1550   tail call void @llvm.riscv.vsoxseg6.mask.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
1551   ret void
1554 declare void @llvm.riscv.vsoxseg6.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, i32)
1555 declare void @llvm.riscv.vsoxseg6.mask.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
1557 define void @test_vsoxseg6_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
1558 ; CHECK-LABEL: test_vsoxseg6_nxv2i32_nxv2i16:
1559 ; CHECK:       # %bb.0: # %entry
1560 ; CHECK-NEXT:    vmv1r.v v10, v8
1561 ; CHECK-NEXT:    vmv1r.v v11, v8
1562 ; CHECK-NEXT:    vmv1r.v v12, v8
1563 ; CHECK-NEXT:    vmv1r.v v13, v8
1564 ; CHECK-NEXT:    vmv1r.v v14, v8
1565 ; CHECK-NEXT:    vmv1r.v v15, v8
1566 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1567 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
1568 ; CHECK-NEXT:    ret
1569 entry:
1570   tail call void @llvm.riscv.vsoxseg6.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
1571   ret void
1574 define void @test_vsoxseg6_mask_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1575 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2i32_nxv2i16:
1576 ; CHECK:       # %bb.0: # %entry
1577 ; CHECK-NEXT:    vmv1r.v v10, v8
1578 ; CHECK-NEXT:    vmv1r.v v11, v8
1579 ; CHECK-NEXT:    vmv1r.v v12, v8
1580 ; CHECK-NEXT:    vmv1r.v v13, v8
1581 ; CHECK-NEXT:    vmv1r.v v14, v8
1582 ; CHECK-NEXT:    vmv1r.v v15, v8
1583 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1584 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
1585 ; CHECK-NEXT:    ret
1586 entry:
1587   tail call void @llvm.riscv.vsoxseg6.mask.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
1588   ret void
1591 declare void @llvm.riscv.vsoxseg7.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, i32)
1592 declare void @llvm.riscv.vsoxseg7.mask.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
1594 define void @test_vsoxseg7_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
1595 ; CHECK-LABEL: test_vsoxseg7_nxv2i32_nxv2i32:
1596 ; CHECK:       # %bb.0: # %entry
1597 ; CHECK-NEXT:    vmv1r.v v10, v8
1598 ; CHECK-NEXT:    vmv1r.v v11, v8
1599 ; CHECK-NEXT:    vmv1r.v v12, v8
1600 ; CHECK-NEXT:    vmv1r.v v13, v8
1601 ; CHECK-NEXT:    vmv1r.v v14, v8
1602 ; CHECK-NEXT:    vmv1r.v v15, v8
1603 ; CHECK-NEXT:    vmv1r.v v16, v8
1604 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1605 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9
1606 ; CHECK-NEXT:    ret
1607 entry:
1608   tail call void @llvm.riscv.vsoxseg7.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
1609   ret void
1612 define void @test_vsoxseg7_mask_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1613 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2i32_nxv2i32:
1614 ; CHECK:       # %bb.0: # %entry
1615 ; CHECK-NEXT:    vmv1r.v v10, v8
1616 ; CHECK-NEXT:    vmv1r.v v11, v8
1617 ; CHECK-NEXT:    vmv1r.v v12, v8
1618 ; CHECK-NEXT:    vmv1r.v v13, v8
1619 ; CHECK-NEXT:    vmv1r.v v14, v8
1620 ; CHECK-NEXT:    vmv1r.v v15, v8
1621 ; CHECK-NEXT:    vmv1r.v v16, v8
1622 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1623 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9, v0.t
1624 ; CHECK-NEXT:    ret
1625 entry:
1626   tail call void @llvm.riscv.vsoxseg7.mask.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
1627   ret void
1630 declare void @llvm.riscv.vsoxseg7.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, i32)
1631 declare void @llvm.riscv.vsoxseg7.mask.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
1633 define void @test_vsoxseg7_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
1634 ; CHECK-LABEL: test_vsoxseg7_nxv2i32_nxv2i8:
1635 ; CHECK:       # %bb.0: # %entry
1636 ; CHECK-NEXT:    vmv1r.v v10, v8
1637 ; CHECK-NEXT:    vmv1r.v v11, v8
1638 ; CHECK-NEXT:    vmv1r.v v12, v8
1639 ; CHECK-NEXT:    vmv1r.v v13, v8
1640 ; CHECK-NEXT:    vmv1r.v v14, v8
1641 ; CHECK-NEXT:    vmv1r.v v15, v8
1642 ; CHECK-NEXT:    vmv1r.v v16, v8
1643 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1644 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
1645 ; CHECK-NEXT:    ret
1646 entry:
1647   tail call void @llvm.riscv.vsoxseg7.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
1648   ret void
1651 define void @test_vsoxseg7_mask_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1652 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2i32_nxv2i8:
1653 ; CHECK:       # %bb.0: # %entry
1654 ; CHECK-NEXT:    vmv1r.v v10, v8
1655 ; CHECK-NEXT:    vmv1r.v v11, v8
1656 ; CHECK-NEXT:    vmv1r.v v12, v8
1657 ; CHECK-NEXT:    vmv1r.v v13, v8
1658 ; CHECK-NEXT:    vmv1r.v v14, v8
1659 ; CHECK-NEXT:    vmv1r.v v15, v8
1660 ; CHECK-NEXT:    vmv1r.v v16, v8
1661 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1662 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
1663 ; CHECK-NEXT:    ret
1664 entry:
1665   tail call void @llvm.riscv.vsoxseg7.mask.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
1666   ret void
1669 declare void @llvm.riscv.vsoxseg7.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, i32)
1670 declare void @llvm.riscv.vsoxseg7.mask.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
1672 define void @test_vsoxseg7_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
1673 ; CHECK-LABEL: test_vsoxseg7_nxv2i32_nxv2i16:
1674 ; CHECK:       # %bb.0: # %entry
1675 ; CHECK-NEXT:    vmv1r.v v10, v8
1676 ; CHECK-NEXT:    vmv1r.v v11, v8
1677 ; CHECK-NEXT:    vmv1r.v v12, v8
1678 ; CHECK-NEXT:    vmv1r.v v13, v8
1679 ; CHECK-NEXT:    vmv1r.v v14, v8
1680 ; CHECK-NEXT:    vmv1r.v v15, v8
1681 ; CHECK-NEXT:    vmv1r.v v16, v8
1682 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1683 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
1684 ; CHECK-NEXT:    ret
1685 entry:
1686   tail call void @llvm.riscv.vsoxseg7.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
1687   ret void
1690 define void @test_vsoxseg7_mask_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1691 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2i32_nxv2i16:
1692 ; CHECK:       # %bb.0: # %entry
1693 ; CHECK-NEXT:    vmv1r.v v10, v8
1694 ; CHECK-NEXT:    vmv1r.v v11, v8
1695 ; CHECK-NEXT:    vmv1r.v v12, v8
1696 ; CHECK-NEXT:    vmv1r.v v13, v8
1697 ; CHECK-NEXT:    vmv1r.v v14, v8
1698 ; CHECK-NEXT:    vmv1r.v v15, v8
1699 ; CHECK-NEXT:    vmv1r.v v16, v8
1700 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1701 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
1702 ; CHECK-NEXT:    ret
1703 entry:
1704   tail call void @llvm.riscv.vsoxseg7.mask.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
1705   ret void
1708 declare void @llvm.riscv.vsoxseg8.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, i32)
1709 declare void @llvm.riscv.vsoxseg8.mask.nxv2i32.nxv2i32(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
1711 define void @test_vsoxseg8_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
1712 ; CHECK-LABEL: test_vsoxseg8_nxv2i32_nxv2i32:
1713 ; CHECK:       # %bb.0: # %entry
1714 ; CHECK-NEXT:    vmv1r.v v10, v8
1715 ; CHECK-NEXT:    vmv1r.v v11, v8
1716 ; CHECK-NEXT:    vmv1r.v v12, v8
1717 ; CHECK-NEXT:    vmv1r.v v13, v8
1718 ; CHECK-NEXT:    vmv1r.v v14, v8
1719 ; CHECK-NEXT:    vmv1r.v v15, v8
1720 ; CHECK-NEXT:    vmv1r.v v16, v8
1721 ; CHECK-NEXT:    vmv1r.v v17, v8
1722 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1723 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9
1724 ; CHECK-NEXT:    ret
1725 entry:
1726   tail call void @llvm.riscv.vsoxseg8.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
1727   ret void
1730 define void @test_vsoxseg8_mask_nxv2i32_nxv2i32(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1731 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2i32_nxv2i32:
1732 ; CHECK:       # %bb.0: # %entry
1733 ; CHECK-NEXT:    vmv1r.v v10, v8
1734 ; CHECK-NEXT:    vmv1r.v v11, v8
1735 ; CHECK-NEXT:    vmv1r.v v12, v8
1736 ; CHECK-NEXT:    vmv1r.v v13, v8
1737 ; CHECK-NEXT:    vmv1r.v v14, v8
1738 ; CHECK-NEXT:    vmv1r.v v15, v8
1739 ; CHECK-NEXT:    vmv1r.v v16, v8
1740 ; CHECK-NEXT:    vmv1r.v v17, v8
1741 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1742 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9, v0.t
1743 ; CHECK-NEXT:    ret
1744 entry:
1745   tail call void @llvm.riscv.vsoxseg8.mask.nxv2i32.nxv2i32(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
1746   ret void
1749 declare void @llvm.riscv.vsoxseg8.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, i32)
1750 declare void @llvm.riscv.vsoxseg8.mask.nxv2i32.nxv2i8(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
1752 define void @test_vsoxseg8_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
1753 ; CHECK-LABEL: test_vsoxseg8_nxv2i32_nxv2i8:
1754 ; CHECK:       # %bb.0: # %entry
1755 ; CHECK-NEXT:    vmv1r.v v10, v8
1756 ; CHECK-NEXT:    vmv1r.v v11, v8
1757 ; CHECK-NEXT:    vmv1r.v v12, v8
1758 ; CHECK-NEXT:    vmv1r.v v13, v8
1759 ; CHECK-NEXT:    vmv1r.v v14, v8
1760 ; CHECK-NEXT:    vmv1r.v v15, v8
1761 ; CHECK-NEXT:    vmv1r.v v16, v8
1762 ; CHECK-NEXT:    vmv1r.v v17, v8
1763 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1764 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
1765 ; CHECK-NEXT:    ret
1766 entry:
1767   tail call void @llvm.riscv.vsoxseg8.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
1768   ret void
1771 define void @test_vsoxseg8_mask_nxv2i32_nxv2i8(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1772 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2i32_nxv2i8:
1773 ; CHECK:       # %bb.0: # %entry
1774 ; CHECK-NEXT:    vmv1r.v v10, v8
1775 ; CHECK-NEXT:    vmv1r.v v11, v8
1776 ; CHECK-NEXT:    vmv1r.v v12, v8
1777 ; CHECK-NEXT:    vmv1r.v v13, v8
1778 ; CHECK-NEXT:    vmv1r.v v14, v8
1779 ; CHECK-NEXT:    vmv1r.v v15, v8
1780 ; CHECK-NEXT:    vmv1r.v v16, v8
1781 ; CHECK-NEXT:    vmv1r.v v17, v8
1782 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1783 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
1784 ; CHECK-NEXT:    ret
1785 entry:
1786   tail call void @llvm.riscv.vsoxseg8.mask.nxv2i32.nxv2i8(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
1787   ret void
1790 declare void @llvm.riscv.vsoxseg8.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, i32)
1791 declare void @llvm.riscv.vsoxseg8.mask.nxv2i32.nxv2i16(<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>,<vscale x 2 x i32>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
1793 define void @test_vsoxseg8_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
1794 ; CHECK-LABEL: test_vsoxseg8_nxv2i32_nxv2i16:
1795 ; CHECK:       # %bb.0: # %entry
1796 ; CHECK-NEXT:    vmv1r.v v10, v8
1797 ; CHECK-NEXT:    vmv1r.v v11, v8
1798 ; CHECK-NEXT:    vmv1r.v v12, v8
1799 ; CHECK-NEXT:    vmv1r.v v13, v8
1800 ; CHECK-NEXT:    vmv1r.v v14, v8
1801 ; CHECK-NEXT:    vmv1r.v v15, v8
1802 ; CHECK-NEXT:    vmv1r.v v16, v8
1803 ; CHECK-NEXT:    vmv1r.v v17, v8
1804 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1805 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
1806 ; CHECK-NEXT:    ret
1807 entry:
1808   tail call void @llvm.riscv.vsoxseg8.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
1809   ret void
1812 define void @test_vsoxseg8_mask_nxv2i32_nxv2i16(<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
1813 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2i32_nxv2i16:
1814 ; CHECK:       # %bb.0: # %entry
1815 ; CHECK-NEXT:    vmv1r.v v10, v8
1816 ; CHECK-NEXT:    vmv1r.v v11, v8
1817 ; CHECK-NEXT:    vmv1r.v v12, v8
1818 ; CHECK-NEXT:    vmv1r.v v13, v8
1819 ; CHECK-NEXT:    vmv1r.v v14, v8
1820 ; CHECK-NEXT:    vmv1r.v v15, v8
1821 ; CHECK-NEXT:    vmv1r.v v16, v8
1822 ; CHECK-NEXT:    vmv1r.v v17, v8
1823 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1824 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
1825 ; CHECK-NEXT:    ret
1826 entry:
1827   tail call void @llvm.riscv.vsoxseg8.mask.nxv2i32.nxv2i16(<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val,<vscale x 2 x i32> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
1828   ret void
1831 declare void @llvm.riscv.vsoxseg2.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, i32)
1832 declare void @llvm.riscv.vsoxseg2.mask.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
1834 define void @test_vsoxseg2_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
1835 ; CHECK-LABEL: test_vsoxseg2_nxv4i16_nxv4i16:
1836 ; CHECK:       # %bb.0: # %entry
1837 ; CHECK-NEXT:    vmv1r.v v10, v9
1838 ; CHECK-NEXT:    vmv1r.v v9, v8
1839 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1840 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
1841 ; CHECK-NEXT:    ret
1842 entry:
1843   tail call void @llvm.riscv.vsoxseg2.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
1844   ret void
1847 define void @test_vsoxseg2_mask_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
1848 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4i16_nxv4i16:
1849 ; CHECK:       # %bb.0: # %entry
1850 ; CHECK-NEXT:    vmv1r.v v10, v9
1851 ; CHECK-NEXT:    vmv1r.v v9, v8
1852 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1853 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
1854 ; CHECK-NEXT:    ret
1855 entry:
1856   tail call void @llvm.riscv.vsoxseg2.mask.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
1857   ret void
1860 declare void @llvm.riscv.vsoxseg2.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, i32)
1861 declare void @llvm.riscv.vsoxseg2.mask.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
1863 define void @test_vsoxseg2_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
1864 ; CHECK-LABEL: test_vsoxseg2_nxv4i16_nxv4i8:
1865 ; CHECK:       # %bb.0: # %entry
1866 ; CHECK-NEXT:    vmv1r.v v10, v9
1867 ; CHECK-NEXT:    vmv1r.v v9, v8
1868 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1869 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
1870 ; CHECK-NEXT:    ret
1871 entry:
1872   tail call void @llvm.riscv.vsoxseg2.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
1873   ret void
1876 define void @test_vsoxseg2_mask_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
1877 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4i16_nxv4i8:
1878 ; CHECK:       # %bb.0: # %entry
1879 ; CHECK-NEXT:    vmv1r.v v10, v9
1880 ; CHECK-NEXT:    vmv1r.v v9, v8
1881 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1882 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
1883 ; CHECK-NEXT:    ret
1884 entry:
1885   tail call void @llvm.riscv.vsoxseg2.mask.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
1886   ret void
1889 declare void @llvm.riscv.vsoxseg2.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, i32)
1890 declare void @llvm.riscv.vsoxseg2.mask.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
1892 define void @test_vsoxseg2_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
1893 ; CHECK-LABEL: test_vsoxseg2_nxv4i16_nxv4i32:
1894 ; CHECK:       # %bb.0: # %entry
1895 ; CHECK-NEXT:    vmv1r.v v9, v8
1896 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1897 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
1898 ; CHECK-NEXT:    ret
1899 entry:
1900   tail call void @llvm.riscv.vsoxseg2.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
1901   ret void
1904 define void @test_vsoxseg2_mask_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
1905 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4i16_nxv4i32:
1906 ; CHECK:       # %bb.0: # %entry
1907 ; CHECK-NEXT:    vmv1r.v v9, v8
1908 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1909 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
1910 ; CHECK-NEXT:    ret
1911 entry:
1912   tail call void @llvm.riscv.vsoxseg2.mask.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
1913   ret void
1916 declare void @llvm.riscv.vsoxseg3.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, i32)
1917 declare void @llvm.riscv.vsoxseg3.mask.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
1919 define void @test_vsoxseg3_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
1920 ; CHECK-LABEL: test_vsoxseg3_nxv4i16_nxv4i16:
1921 ; CHECK:       # %bb.0: # %entry
1922 ; CHECK-NEXT:    vmv1r.v v10, v8
1923 ; CHECK-NEXT:    vmv1r.v v11, v8
1924 ; CHECK-NEXT:    vmv1r.v v12, v8
1925 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1926 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
1927 ; CHECK-NEXT:    ret
1928 entry:
1929   tail call void @llvm.riscv.vsoxseg3.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
1930   ret void
1933 define void @test_vsoxseg3_mask_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
1934 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4i16_nxv4i16:
1935 ; CHECK:       # %bb.0: # %entry
1936 ; CHECK-NEXT:    vmv1r.v v10, v8
1937 ; CHECK-NEXT:    vmv1r.v v11, v8
1938 ; CHECK-NEXT:    vmv1r.v v12, v8
1939 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1940 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
1941 ; CHECK-NEXT:    ret
1942 entry:
1943   tail call void @llvm.riscv.vsoxseg3.mask.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
1944   ret void
1947 declare void @llvm.riscv.vsoxseg3.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, i32)
1948 declare void @llvm.riscv.vsoxseg3.mask.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
1950 define void @test_vsoxseg3_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
1951 ; CHECK-LABEL: test_vsoxseg3_nxv4i16_nxv4i8:
1952 ; CHECK:       # %bb.0: # %entry
1953 ; CHECK-NEXT:    vmv1r.v v10, v8
1954 ; CHECK-NEXT:    vmv1r.v v11, v8
1955 ; CHECK-NEXT:    vmv1r.v v12, v8
1956 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1957 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
1958 ; CHECK-NEXT:    ret
1959 entry:
1960   tail call void @llvm.riscv.vsoxseg3.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
1961   ret void
1964 define void @test_vsoxseg3_mask_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
1965 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4i16_nxv4i8:
1966 ; CHECK:       # %bb.0: # %entry
1967 ; CHECK-NEXT:    vmv1r.v v10, v8
1968 ; CHECK-NEXT:    vmv1r.v v11, v8
1969 ; CHECK-NEXT:    vmv1r.v v12, v8
1970 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1971 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
1972 ; CHECK-NEXT:    ret
1973 entry:
1974   tail call void @llvm.riscv.vsoxseg3.mask.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
1975   ret void
1978 declare void @llvm.riscv.vsoxseg3.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, i32)
1979 declare void @llvm.riscv.vsoxseg3.mask.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
1981 define void @test_vsoxseg3_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
1982 ; CHECK-LABEL: test_vsoxseg3_nxv4i16_nxv4i32:
1983 ; CHECK:       # %bb.0: # %entry
1984 ; CHECK-NEXT:    vmv1r.v v9, v8
1985 ; CHECK-NEXT:    vmv2r.v v12, v10
1986 ; CHECK-NEXT:    vmv1r.v v10, v8
1987 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
1988 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v12
1989 ; CHECK-NEXT:    ret
1990 entry:
1991   tail call void @llvm.riscv.vsoxseg3.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
1992   ret void
1995 define void @test_vsoxseg3_mask_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
1996 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4i16_nxv4i32:
1997 ; CHECK:       # %bb.0: # %entry
1998 ; CHECK-NEXT:    vmv1r.v v9, v8
1999 ; CHECK-NEXT:    vmv2r.v v12, v10
2000 ; CHECK-NEXT:    vmv1r.v v10, v8
2001 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2002 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v12, v0.t
2003 ; CHECK-NEXT:    ret
2004 entry:
2005   tail call void @llvm.riscv.vsoxseg3.mask.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
2006   ret void
2009 declare void @llvm.riscv.vsoxseg4.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, i32)
2010 declare void @llvm.riscv.vsoxseg4.mask.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
2012 define void @test_vsoxseg4_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
2013 ; CHECK-LABEL: test_vsoxseg4_nxv4i16_nxv4i16:
2014 ; CHECK:       # %bb.0: # %entry
2015 ; CHECK-NEXT:    vmv1r.v v10, v8
2016 ; CHECK-NEXT:    vmv1r.v v11, v8
2017 ; CHECK-NEXT:    vmv1r.v v12, v8
2018 ; CHECK-NEXT:    vmv1r.v v13, v8
2019 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2020 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
2021 ; CHECK-NEXT:    ret
2022 entry:
2023   tail call void @llvm.riscv.vsoxseg4.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
2024   ret void
2027 define void @test_vsoxseg4_mask_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2028 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4i16_nxv4i16:
2029 ; CHECK:       # %bb.0: # %entry
2030 ; CHECK-NEXT:    vmv1r.v v10, v8
2031 ; CHECK-NEXT:    vmv1r.v v11, v8
2032 ; CHECK-NEXT:    vmv1r.v v12, v8
2033 ; CHECK-NEXT:    vmv1r.v v13, v8
2034 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2035 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
2036 ; CHECK-NEXT:    ret
2037 entry:
2038   tail call void @llvm.riscv.vsoxseg4.mask.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
2039   ret void
2042 declare void @llvm.riscv.vsoxseg4.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, i32)
2043 declare void @llvm.riscv.vsoxseg4.mask.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
2045 define void @test_vsoxseg4_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
2046 ; CHECK-LABEL: test_vsoxseg4_nxv4i16_nxv4i8:
2047 ; CHECK:       # %bb.0: # %entry
2048 ; CHECK-NEXT:    vmv1r.v v10, v8
2049 ; CHECK-NEXT:    vmv1r.v v11, v8
2050 ; CHECK-NEXT:    vmv1r.v v12, v8
2051 ; CHECK-NEXT:    vmv1r.v v13, v8
2052 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2053 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
2054 ; CHECK-NEXT:    ret
2055 entry:
2056   tail call void @llvm.riscv.vsoxseg4.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
2057   ret void
2060 define void @test_vsoxseg4_mask_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2061 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4i16_nxv4i8:
2062 ; CHECK:       # %bb.0: # %entry
2063 ; CHECK-NEXT:    vmv1r.v v10, v8
2064 ; CHECK-NEXT:    vmv1r.v v11, v8
2065 ; CHECK-NEXT:    vmv1r.v v12, v8
2066 ; CHECK-NEXT:    vmv1r.v v13, v8
2067 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2068 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
2069 ; CHECK-NEXT:    ret
2070 entry:
2071   tail call void @llvm.riscv.vsoxseg4.mask.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
2072   ret void
2075 declare void @llvm.riscv.vsoxseg4.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, i32)
2076 declare void @llvm.riscv.vsoxseg4.mask.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
2078 define void @test_vsoxseg4_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
2079 ; CHECK-LABEL: test_vsoxseg4_nxv4i16_nxv4i32:
2080 ; CHECK:       # %bb.0: # %entry
2081 ; CHECK-NEXT:    vmv1r.v v12, v8
2082 ; CHECK-NEXT:    vmv1r.v v13, v8
2083 ; CHECK-NEXT:    vmv1r.v v14, v8
2084 ; CHECK-NEXT:    vmv1r.v v15, v8
2085 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2086 ; CHECK-NEXT:    vsoxseg4ei32.v v12, (a0), v10
2087 ; CHECK-NEXT:    ret
2088 entry:
2089   tail call void @llvm.riscv.vsoxseg4.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
2090   ret void
2093 define void @test_vsoxseg4_mask_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2094 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4i16_nxv4i32:
2095 ; CHECK:       # %bb.0: # %entry
2096 ; CHECK-NEXT:    vmv1r.v v12, v8
2097 ; CHECK-NEXT:    vmv1r.v v13, v8
2098 ; CHECK-NEXT:    vmv1r.v v14, v8
2099 ; CHECK-NEXT:    vmv1r.v v15, v8
2100 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2101 ; CHECK-NEXT:    vsoxseg4ei32.v v12, (a0), v10, v0.t
2102 ; CHECK-NEXT:    ret
2103 entry:
2104   tail call void @llvm.riscv.vsoxseg4.mask.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
2105   ret void
2108 declare void @llvm.riscv.vsoxseg5.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, i32)
2109 declare void @llvm.riscv.vsoxseg5.mask.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
2111 define void @test_vsoxseg5_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
2112 ; CHECK-LABEL: test_vsoxseg5_nxv4i16_nxv4i16:
2113 ; CHECK:       # %bb.0: # %entry
2114 ; CHECK-NEXT:    vmv1r.v v10, v8
2115 ; CHECK-NEXT:    vmv1r.v v11, v8
2116 ; CHECK-NEXT:    vmv1r.v v12, v8
2117 ; CHECK-NEXT:    vmv1r.v v13, v8
2118 ; CHECK-NEXT:    vmv1r.v v14, v8
2119 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2120 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
2121 ; CHECK-NEXT:    ret
2122 entry:
2123   tail call void @llvm.riscv.vsoxseg5.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
2124   ret void
2127 define void @test_vsoxseg5_mask_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2128 ; CHECK-LABEL: test_vsoxseg5_mask_nxv4i16_nxv4i16:
2129 ; CHECK:       # %bb.0: # %entry
2130 ; CHECK-NEXT:    vmv1r.v v10, v8
2131 ; CHECK-NEXT:    vmv1r.v v11, v8
2132 ; CHECK-NEXT:    vmv1r.v v12, v8
2133 ; CHECK-NEXT:    vmv1r.v v13, v8
2134 ; CHECK-NEXT:    vmv1r.v v14, v8
2135 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2136 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
2137 ; CHECK-NEXT:    ret
2138 entry:
2139   tail call void @llvm.riscv.vsoxseg5.mask.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
2140   ret void
2143 declare void @llvm.riscv.vsoxseg5.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, i32)
2144 declare void @llvm.riscv.vsoxseg5.mask.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
2146 define void @test_vsoxseg5_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
2147 ; CHECK-LABEL: test_vsoxseg5_nxv4i16_nxv4i8:
2148 ; CHECK:       # %bb.0: # %entry
2149 ; CHECK-NEXT:    vmv1r.v v10, v8
2150 ; CHECK-NEXT:    vmv1r.v v11, v8
2151 ; CHECK-NEXT:    vmv1r.v v12, v8
2152 ; CHECK-NEXT:    vmv1r.v v13, v8
2153 ; CHECK-NEXT:    vmv1r.v v14, v8
2154 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2155 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
2156 ; CHECK-NEXT:    ret
2157 entry:
2158   tail call void @llvm.riscv.vsoxseg5.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
2159   ret void
2162 define void @test_vsoxseg5_mask_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2163 ; CHECK-LABEL: test_vsoxseg5_mask_nxv4i16_nxv4i8:
2164 ; CHECK:       # %bb.0: # %entry
2165 ; CHECK-NEXT:    vmv1r.v v10, v8
2166 ; CHECK-NEXT:    vmv1r.v v11, v8
2167 ; CHECK-NEXT:    vmv1r.v v12, v8
2168 ; CHECK-NEXT:    vmv1r.v v13, v8
2169 ; CHECK-NEXT:    vmv1r.v v14, v8
2170 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2171 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
2172 ; CHECK-NEXT:    ret
2173 entry:
2174   tail call void @llvm.riscv.vsoxseg5.mask.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
2175   ret void
2178 declare void @llvm.riscv.vsoxseg5.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, i32)
2179 declare void @llvm.riscv.vsoxseg5.mask.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
2181 define void @test_vsoxseg5_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
2182 ; CHECK-LABEL: test_vsoxseg5_nxv4i16_nxv4i32:
2183 ; CHECK:       # %bb.0: # %entry
2184 ; CHECK-NEXT:    vmv1r.v v12, v8
2185 ; CHECK-NEXT:    vmv1r.v v13, v8
2186 ; CHECK-NEXT:    vmv1r.v v14, v8
2187 ; CHECK-NEXT:    vmv1r.v v15, v8
2188 ; CHECK-NEXT:    vmv1r.v v16, v8
2189 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2190 ; CHECK-NEXT:    vsoxseg5ei32.v v12, (a0), v10
2191 ; CHECK-NEXT:    ret
2192 entry:
2193   tail call void @llvm.riscv.vsoxseg5.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
2194   ret void
2197 define void @test_vsoxseg5_mask_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2198 ; CHECK-LABEL: test_vsoxseg5_mask_nxv4i16_nxv4i32:
2199 ; CHECK:       # %bb.0: # %entry
2200 ; CHECK-NEXT:    vmv1r.v v12, v8
2201 ; CHECK-NEXT:    vmv1r.v v13, v8
2202 ; CHECK-NEXT:    vmv1r.v v14, v8
2203 ; CHECK-NEXT:    vmv1r.v v15, v8
2204 ; CHECK-NEXT:    vmv1r.v v16, v8
2205 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2206 ; CHECK-NEXT:    vsoxseg5ei32.v v12, (a0), v10, v0.t
2207 ; CHECK-NEXT:    ret
2208 entry:
2209   tail call void @llvm.riscv.vsoxseg5.mask.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
2210   ret void
2213 declare void @llvm.riscv.vsoxseg6.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, i32)
2214 declare void @llvm.riscv.vsoxseg6.mask.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
2216 define void @test_vsoxseg6_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
2217 ; CHECK-LABEL: test_vsoxseg6_nxv4i16_nxv4i16:
2218 ; CHECK:       # %bb.0: # %entry
2219 ; CHECK-NEXT:    vmv1r.v v10, v8
2220 ; CHECK-NEXT:    vmv1r.v v11, v8
2221 ; CHECK-NEXT:    vmv1r.v v12, v8
2222 ; CHECK-NEXT:    vmv1r.v v13, v8
2223 ; CHECK-NEXT:    vmv1r.v v14, v8
2224 ; CHECK-NEXT:    vmv1r.v v15, v8
2225 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2226 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
2227 ; CHECK-NEXT:    ret
2228 entry:
2229   tail call void @llvm.riscv.vsoxseg6.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
2230   ret void
2233 define void @test_vsoxseg6_mask_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2234 ; CHECK-LABEL: test_vsoxseg6_mask_nxv4i16_nxv4i16:
2235 ; CHECK:       # %bb.0: # %entry
2236 ; CHECK-NEXT:    vmv1r.v v10, v8
2237 ; CHECK-NEXT:    vmv1r.v v11, v8
2238 ; CHECK-NEXT:    vmv1r.v v12, v8
2239 ; CHECK-NEXT:    vmv1r.v v13, v8
2240 ; CHECK-NEXT:    vmv1r.v v14, v8
2241 ; CHECK-NEXT:    vmv1r.v v15, v8
2242 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2243 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
2244 ; CHECK-NEXT:    ret
2245 entry:
2246   tail call void @llvm.riscv.vsoxseg6.mask.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
2247   ret void
2250 declare void @llvm.riscv.vsoxseg6.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, i32)
2251 declare void @llvm.riscv.vsoxseg6.mask.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
2253 define void @test_vsoxseg6_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
2254 ; CHECK-LABEL: test_vsoxseg6_nxv4i16_nxv4i8:
2255 ; CHECK:       # %bb.0: # %entry
2256 ; CHECK-NEXT:    vmv1r.v v10, v8
2257 ; CHECK-NEXT:    vmv1r.v v11, v8
2258 ; CHECK-NEXT:    vmv1r.v v12, v8
2259 ; CHECK-NEXT:    vmv1r.v v13, v8
2260 ; CHECK-NEXT:    vmv1r.v v14, v8
2261 ; CHECK-NEXT:    vmv1r.v v15, v8
2262 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2263 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
2264 ; CHECK-NEXT:    ret
2265 entry:
2266   tail call void @llvm.riscv.vsoxseg6.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
2267   ret void
2270 define void @test_vsoxseg6_mask_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2271 ; CHECK-LABEL: test_vsoxseg6_mask_nxv4i16_nxv4i8:
2272 ; CHECK:       # %bb.0: # %entry
2273 ; CHECK-NEXT:    vmv1r.v v10, v8
2274 ; CHECK-NEXT:    vmv1r.v v11, v8
2275 ; CHECK-NEXT:    vmv1r.v v12, v8
2276 ; CHECK-NEXT:    vmv1r.v v13, v8
2277 ; CHECK-NEXT:    vmv1r.v v14, v8
2278 ; CHECK-NEXT:    vmv1r.v v15, v8
2279 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2280 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
2281 ; CHECK-NEXT:    ret
2282 entry:
2283   tail call void @llvm.riscv.vsoxseg6.mask.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
2284   ret void
2287 declare void @llvm.riscv.vsoxseg6.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, i32)
2288 declare void @llvm.riscv.vsoxseg6.mask.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
2290 define void @test_vsoxseg6_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
2291 ; CHECK-LABEL: test_vsoxseg6_nxv4i16_nxv4i32:
2292 ; CHECK:       # %bb.0: # %entry
2293 ; CHECK-NEXT:    vmv1r.v v12, v8
2294 ; CHECK-NEXT:    vmv1r.v v13, v8
2295 ; CHECK-NEXT:    vmv1r.v v14, v8
2296 ; CHECK-NEXT:    vmv1r.v v15, v8
2297 ; CHECK-NEXT:    vmv1r.v v16, v8
2298 ; CHECK-NEXT:    vmv1r.v v17, v8
2299 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2300 ; CHECK-NEXT:    vsoxseg6ei32.v v12, (a0), v10
2301 ; CHECK-NEXT:    ret
2302 entry:
2303   tail call void @llvm.riscv.vsoxseg6.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
2304   ret void
2307 define void @test_vsoxseg6_mask_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2308 ; CHECK-LABEL: test_vsoxseg6_mask_nxv4i16_nxv4i32:
2309 ; CHECK:       # %bb.0: # %entry
2310 ; CHECK-NEXT:    vmv1r.v v12, v8
2311 ; CHECK-NEXT:    vmv1r.v v13, v8
2312 ; CHECK-NEXT:    vmv1r.v v14, v8
2313 ; CHECK-NEXT:    vmv1r.v v15, v8
2314 ; CHECK-NEXT:    vmv1r.v v16, v8
2315 ; CHECK-NEXT:    vmv1r.v v17, v8
2316 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2317 ; CHECK-NEXT:    vsoxseg6ei32.v v12, (a0), v10, v0.t
2318 ; CHECK-NEXT:    ret
2319 entry:
2320   tail call void @llvm.riscv.vsoxseg6.mask.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
2321   ret void
2324 declare void @llvm.riscv.vsoxseg7.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, i32)
2325 declare void @llvm.riscv.vsoxseg7.mask.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
2327 define void @test_vsoxseg7_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
2328 ; CHECK-LABEL: test_vsoxseg7_nxv4i16_nxv4i16:
2329 ; CHECK:       # %bb.0: # %entry
2330 ; CHECK-NEXT:    vmv1r.v v10, v8
2331 ; CHECK-NEXT:    vmv1r.v v11, v8
2332 ; CHECK-NEXT:    vmv1r.v v12, v8
2333 ; CHECK-NEXT:    vmv1r.v v13, v8
2334 ; CHECK-NEXT:    vmv1r.v v14, v8
2335 ; CHECK-NEXT:    vmv1r.v v15, v8
2336 ; CHECK-NEXT:    vmv1r.v v16, v8
2337 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2338 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
2339 ; CHECK-NEXT:    ret
2340 entry:
2341   tail call void @llvm.riscv.vsoxseg7.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
2342   ret void
2345 define void @test_vsoxseg7_mask_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2346 ; CHECK-LABEL: test_vsoxseg7_mask_nxv4i16_nxv4i16:
2347 ; CHECK:       # %bb.0: # %entry
2348 ; CHECK-NEXT:    vmv1r.v v10, v8
2349 ; CHECK-NEXT:    vmv1r.v v11, v8
2350 ; CHECK-NEXT:    vmv1r.v v12, v8
2351 ; CHECK-NEXT:    vmv1r.v v13, v8
2352 ; CHECK-NEXT:    vmv1r.v v14, v8
2353 ; CHECK-NEXT:    vmv1r.v v15, v8
2354 ; CHECK-NEXT:    vmv1r.v v16, v8
2355 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2356 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
2357 ; CHECK-NEXT:    ret
2358 entry:
2359   tail call void @llvm.riscv.vsoxseg7.mask.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
2360   ret void
2363 declare void @llvm.riscv.vsoxseg7.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, i32)
2364 declare void @llvm.riscv.vsoxseg7.mask.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
2366 define void @test_vsoxseg7_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
2367 ; CHECK-LABEL: test_vsoxseg7_nxv4i16_nxv4i8:
2368 ; CHECK:       # %bb.0: # %entry
2369 ; CHECK-NEXT:    vmv1r.v v10, v8
2370 ; CHECK-NEXT:    vmv1r.v v11, v8
2371 ; CHECK-NEXT:    vmv1r.v v12, v8
2372 ; CHECK-NEXT:    vmv1r.v v13, v8
2373 ; CHECK-NEXT:    vmv1r.v v14, v8
2374 ; CHECK-NEXT:    vmv1r.v v15, v8
2375 ; CHECK-NEXT:    vmv1r.v v16, v8
2376 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2377 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
2378 ; CHECK-NEXT:    ret
2379 entry:
2380   tail call void @llvm.riscv.vsoxseg7.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
2381   ret void
2384 define void @test_vsoxseg7_mask_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2385 ; CHECK-LABEL: test_vsoxseg7_mask_nxv4i16_nxv4i8:
2386 ; CHECK:       # %bb.0: # %entry
2387 ; CHECK-NEXT:    vmv1r.v v10, v8
2388 ; CHECK-NEXT:    vmv1r.v v11, v8
2389 ; CHECK-NEXT:    vmv1r.v v12, v8
2390 ; CHECK-NEXT:    vmv1r.v v13, v8
2391 ; CHECK-NEXT:    vmv1r.v v14, v8
2392 ; CHECK-NEXT:    vmv1r.v v15, v8
2393 ; CHECK-NEXT:    vmv1r.v v16, v8
2394 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2395 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
2396 ; CHECK-NEXT:    ret
2397 entry:
2398   tail call void @llvm.riscv.vsoxseg7.mask.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
2399   ret void
2402 declare void @llvm.riscv.vsoxseg7.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, i32)
2403 declare void @llvm.riscv.vsoxseg7.mask.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
2405 define void @test_vsoxseg7_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
2406 ; CHECK-LABEL: test_vsoxseg7_nxv4i16_nxv4i32:
2407 ; CHECK:       # %bb.0: # %entry
2408 ; CHECK-NEXT:    vmv1r.v v12, v8
2409 ; CHECK-NEXT:    vmv1r.v v13, v8
2410 ; CHECK-NEXT:    vmv1r.v v14, v8
2411 ; CHECK-NEXT:    vmv1r.v v15, v8
2412 ; CHECK-NEXT:    vmv1r.v v16, v8
2413 ; CHECK-NEXT:    vmv1r.v v17, v8
2414 ; CHECK-NEXT:    vmv1r.v v18, v8
2415 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2416 ; CHECK-NEXT:    vsoxseg7ei32.v v12, (a0), v10
2417 ; CHECK-NEXT:    ret
2418 entry:
2419   tail call void @llvm.riscv.vsoxseg7.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
2420   ret void
2423 define void @test_vsoxseg7_mask_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2424 ; CHECK-LABEL: test_vsoxseg7_mask_nxv4i16_nxv4i32:
2425 ; CHECK:       # %bb.0: # %entry
2426 ; CHECK-NEXT:    vmv1r.v v12, v8
2427 ; CHECK-NEXT:    vmv1r.v v13, v8
2428 ; CHECK-NEXT:    vmv1r.v v14, v8
2429 ; CHECK-NEXT:    vmv1r.v v15, v8
2430 ; CHECK-NEXT:    vmv1r.v v16, v8
2431 ; CHECK-NEXT:    vmv1r.v v17, v8
2432 ; CHECK-NEXT:    vmv1r.v v18, v8
2433 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2434 ; CHECK-NEXT:    vsoxseg7ei32.v v12, (a0), v10, v0.t
2435 ; CHECK-NEXT:    ret
2436 entry:
2437   tail call void @llvm.riscv.vsoxseg7.mask.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
2438   ret void
2441 declare void @llvm.riscv.vsoxseg8.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, i32)
2442 declare void @llvm.riscv.vsoxseg8.mask.nxv4i16.nxv4i16(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
2444 define void @test_vsoxseg8_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
2445 ; CHECK-LABEL: test_vsoxseg8_nxv4i16_nxv4i16:
2446 ; CHECK:       # %bb.0: # %entry
2447 ; CHECK-NEXT:    vmv1r.v v10, v8
2448 ; CHECK-NEXT:    vmv1r.v v11, v8
2449 ; CHECK-NEXT:    vmv1r.v v12, v8
2450 ; CHECK-NEXT:    vmv1r.v v13, v8
2451 ; CHECK-NEXT:    vmv1r.v v14, v8
2452 ; CHECK-NEXT:    vmv1r.v v15, v8
2453 ; CHECK-NEXT:    vmv1r.v v16, v8
2454 ; CHECK-NEXT:    vmv1r.v v17, v8
2455 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2456 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
2457 ; CHECK-NEXT:    ret
2458 entry:
2459   tail call void @llvm.riscv.vsoxseg8.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
2460   ret void
2463 define void @test_vsoxseg8_mask_nxv4i16_nxv4i16(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2464 ; CHECK-LABEL: test_vsoxseg8_mask_nxv4i16_nxv4i16:
2465 ; CHECK:       # %bb.0: # %entry
2466 ; CHECK-NEXT:    vmv1r.v v10, v8
2467 ; CHECK-NEXT:    vmv1r.v v11, v8
2468 ; CHECK-NEXT:    vmv1r.v v12, v8
2469 ; CHECK-NEXT:    vmv1r.v v13, v8
2470 ; CHECK-NEXT:    vmv1r.v v14, v8
2471 ; CHECK-NEXT:    vmv1r.v v15, v8
2472 ; CHECK-NEXT:    vmv1r.v v16, v8
2473 ; CHECK-NEXT:    vmv1r.v v17, v8
2474 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2475 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
2476 ; CHECK-NEXT:    ret
2477 entry:
2478   tail call void @llvm.riscv.vsoxseg8.mask.nxv4i16.nxv4i16(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
2479   ret void
2482 declare void @llvm.riscv.vsoxseg8.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, i32)
2483 declare void @llvm.riscv.vsoxseg8.mask.nxv4i16.nxv4i8(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
2485 define void @test_vsoxseg8_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
2486 ; CHECK-LABEL: test_vsoxseg8_nxv4i16_nxv4i8:
2487 ; CHECK:       # %bb.0: # %entry
2488 ; CHECK-NEXT:    vmv1r.v v10, v8
2489 ; CHECK-NEXT:    vmv1r.v v11, v8
2490 ; CHECK-NEXT:    vmv1r.v v12, v8
2491 ; CHECK-NEXT:    vmv1r.v v13, v8
2492 ; CHECK-NEXT:    vmv1r.v v14, v8
2493 ; CHECK-NEXT:    vmv1r.v v15, v8
2494 ; CHECK-NEXT:    vmv1r.v v16, v8
2495 ; CHECK-NEXT:    vmv1r.v v17, v8
2496 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2497 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
2498 ; CHECK-NEXT:    ret
2499 entry:
2500   tail call void @llvm.riscv.vsoxseg8.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
2501   ret void
2504 define void @test_vsoxseg8_mask_nxv4i16_nxv4i8(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2505 ; CHECK-LABEL: test_vsoxseg8_mask_nxv4i16_nxv4i8:
2506 ; CHECK:       # %bb.0: # %entry
2507 ; CHECK-NEXT:    vmv1r.v v10, v8
2508 ; CHECK-NEXT:    vmv1r.v v11, v8
2509 ; CHECK-NEXT:    vmv1r.v v12, v8
2510 ; CHECK-NEXT:    vmv1r.v v13, v8
2511 ; CHECK-NEXT:    vmv1r.v v14, v8
2512 ; CHECK-NEXT:    vmv1r.v v15, v8
2513 ; CHECK-NEXT:    vmv1r.v v16, v8
2514 ; CHECK-NEXT:    vmv1r.v v17, v8
2515 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2516 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
2517 ; CHECK-NEXT:    ret
2518 entry:
2519   tail call void @llvm.riscv.vsoxseg8.mask.nxv4i16.nxv4i8(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
2520   ret void
2523 declare void @llvm.riscv.vsoxseg8.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, i32)
2524 declare void @llvm.riscv.vsoxseg8.mask.nxv4i16.nxv4i32(<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>,<vscale x 4 x i16>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
2526 define void @test_vsoxseg8_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
2527 ; CHECK-LABEL: test_vsoxseg8_nxv4i16_nxv4i32:
2528 ; CHECK:       # %bb.0: # %entry
2529 ; CHECK-NEXT:    vmv1r.v v12, v8
2530 ; CHECK-NEXT:    vmv1r.v v13, v8
2531 ; CHECK-NEXT:    vmv1r.v v14, v8
2532 ; CHECK-NEXT:    vmv1r.v v15, v8
2533 ; CHECK-NEXT:    vmv1r.v v16, v8
2534 ; CHECK-NEXT:    vmv1r.v v17, v8
2535 ; CHECK-NEXT:    vmv1r.v v18, v8
2536 ; CHECK-NEXT:    vmv1r.v v19, v8
2537 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2538 ; CHECK-NEXT:    vsoxseg8ei32.v v12, (a0), v10
2539 ; CHECK-NEXT:    ret
2540 entry:
2541   tail call void @llvm.riscv.vsoxseg8.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
2542   ret void
2545 define void @test_vsoxseg8_mask_nxv4i16_nxv4i32(<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
2546 ; CHECK-LABEL: test_vsoxseg8_mask_nxv4i16_nxv4i32:
2547 ; CHECK:       # %bb.0: # %entry
2548 ; CHECK-NEXT:    vmv1r.v v12, v8
2549 ; CHECK-NEXT:    vmv1r.v v13, v8
2550 ; CHECK-NEXT:    vmv1r.v v14, v8
2551 ; CHECK-NEXT:    vmv1r.v v15, v8
2552 ; CHECK-NEXT:    vmv1r.v v16, v8
2553 ; CHECK-NEXT:    vmv1r.v v17, v8
2554 ; CHECK-NEXT:    vmv1r.v v18, v8
2555 ; CHECK-NEXT:    vmv1r.v v19, v8
2556 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
2557 ; CHECK-NEXT:    vsoxseg8ei32.v v12, (a0), v10, v0.t
2558 ; CHECK-NEXT:    ret
2559 entry:
2560   tail call void @llvm.riscv.vsoxseg8.mask.nxv4i16.nxv4i32(<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val,<vscale x 4 x i16> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
2561   ret void
2564 declare void @llvm.riscv.vsoxseg2.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, i32)
2565 declare void @llvm.riscv.vsoxseg2.mask.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
2567 define void @test_vsoxseg2_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
2568 ; CHECK-LABEL: test_vsoxseg2_nxv1i32_nxv1i8:
2569 ; CHECK:       # %bb.0: # %entry
2570 ; CHECK-NEXT:    vmv1r.v v10, v9
2571 ; CHECK-NEXT:    vmv1r.v v9, v8
2572 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2573 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
2574 ; CHECK-NEXT:    ret
2575 entry:
2576   tail call void @llvm.riscv.vsoxseg2.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
2577   ret void
2580 define void @test_vsoxseg2_mask_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
2581 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1i32_nxv1i8:
2582 ; CHECK:       # %bb.0: # %entry
2583 ; CHECK-NEXT:    vmv1r.v v10, v9
2584 ; CHECK-NEXT:    vmv1r.v v9, v8
2585 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2586 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
2587 ; CHECK-NEXT:    ret
2588 entry:
2589   tail call void @llvm.riscv.vsoxseg2.mask.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
2590   ret void
2593 declare void @llvm.riscv.vsoxseg2.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, i32)
2594 declare void @llvm.riscv.vsoxseg2.mask.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
2596 define void @test_vsoxseg2_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
2597 ; CHECK-LABEL: test_vsoxseg2_nxv1i32_nxv1i32:
2598 ; CHECK:       # %bb.0: # %entry
2599 ; CHECK-NEXT:    vmv1r.v v10, v9
2600 ; CHECK-NEXT:    vmv1r.v v9, v8
2601 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2602 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
2603 ; CHECK-NEXT:    ret
2604 entry:
2605   tail call void @llvm.riscv.vsoxseg2.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
2606   ret void
2609 define void @test_vsoxseg2_mask_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
2610 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1i32_nxv1i32:
2611 ; CHECK:       # %bb.0: # %entry
2612 ; CHECK-NEXT:    vmv1r.v v10, v9
2613 ; CHECK-NEXT:    vmv1r.v v9, v8
2614 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2615 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
2616 ; CHECK-NEXT:    ret
2617 entry:
2618   tail call void @llvm.riscv.vsoxseg2.mask.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
2619   ret void
2622 declare void @llvm.riscv.vsoxseg2.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, i32)
2623 declare void @llvm.riscv.vsoxseg2.mask.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
2625 define void @test_vsoxseg2_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
2626 ; CHECK-LABEL: test_vsoxseg2_nxv1i32_nxv1i16:
2627 ; CHECK:       # %bb.0: # %entry
2628 ; CHECK-NEXT:    vmv1r.v v10, v9
2629 ; CHECK-NEXT:    vmv1r.v v9, v8
2630 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2631 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
2632 ; CHECK-NEXT:    ret
2633 entry:
2634   tail call void @llvm.riscv.vsoxseg2.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
2635   ret void
2638 define void @test_vsoxseg2_mask_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
2639 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1i32_nxv1i16:
2640 ; CHECK:       # %bb.0: # %entry
2641 ; CHECK-NEXT:    vmv1r.v v10, v9
2642 ; CHECK-NEXT:    vmv1r.v v9, v8
2643 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2644 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
2645 ; CHECK-NEXT:    ret
2646 entry:
2647   tail call void @llvm.riscv.vsoxseg2.mask.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
2648   ret void
2651 declare void @llvm.riscv.vsoxseg3.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, i32)
2652 declare void @llvm.riscv.vsoxseg3.mask.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
2654 define void @test_vsoxseg3_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
2655 ; CHECK-LABEL: test_vsoxseg3_nxv1i32_nxv1i8:
2656 ; CHECK:       # %bb.0: # %entry
2657 ; CHECK-NEXT:    vmv1r.v v10, v8
2658 ; CHECK-NEXT:    vmv1r.v v11, v8
2659 ; CHECK-NEXT:    vmv1r.v v12, v8
2660 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2661 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
2662 ; CHECK-NEXT:    ret
2663 entry:
2664   tail call void @llvm.riscv.vsoxseg3.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
2665   ret void
2668 define void @test_vsoxseg3_mask_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
2669 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1i32_nxv1i8:
2670 ; CHECK:       # %bb.0: # %entry
2671 ; CHECK-NEXT:    vmv1r.v v10, v8
2672 ; CHECK-NEXT:    vmv1r.v v11, v8
2673 ; CHECK-NEXT:    vmv1r.v v12, v8
2674 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2675 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
2676 ; CHECK-NEXT:    ret
2677 entry:
2678   tail call void @llvm.riscv.vsoxseg3.mask.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
2679   ret void
2682 declare void @llvm.riscv.vsoxseg3.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, i32)
2683 declare void @llvm.riscv.vsoxseg3.mask.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
2685 define void @test_vsoxseg3_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
2686 ; CHECK-LABEL: test_vsoxseg3_nxv1i32_nxv1i32:
2687 ; CHECK:       # %bb.0: # %entry
2688 ; CHECK-NEXT:    vmv1r.v v10, v8
2689 ; CHECK-NEXT:    vmv1r.v v11, v8
2690 ; CHECK-NEXT:    vmv1r.v v12, v8
2691 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2692 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9
2693 ; CHECK-NEXT:    ret
2694 entry:
2695   tail call void @llvm.riscv.vsoxseg3.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
2696   ret void
2699 define void @test_vsoxseg3_mask_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
2700 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1i32_nxv1i32:
2701 ; CHECK:       # %bb.0: # %entry
2702 ; CHECK-NEXT:    vmv1r.v v10, v8
2703 ; CHECK-NEXT:    vmv1r.v v11, v8
2704 ; CHECK-NEXT:    vmv1r.v v12, v8
2705 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2706 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9, v0.t
2707 ; CHECK-NEXT:    ret
2708 entry:
2709   tail call void @llvm.riscv.vsoxseg3.mask.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
2710   ret void
2713 declare void @llvm.riscv.vsoxseg3.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, i32)
2714 declare void @llvm.riscv.vsoxseg3.mask.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
2716 define void @test_vsoxseg3_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
2717 ; CHECK-LABEL: test_vsoxseg3_nxv1i32_nxv1i16:
2718 ; CHECK:       # %bb.0: # %entry
2719 ; CHECK-NEXT:    vmv1r.v v10, v8
2720 ; CHECK-NEXT:    vmv1r.v v11, v8
2721 ; CHECK-NEXT:    vmv1r.v v12, v8
2722 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2723 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
2724 ; CHECK-NEXT:    ret
2725 entry:
2726   tail call void @llvm.riscv.vsoxseg3.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
2727   ret void
2730 define void @test_vsoxseg3_mask_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
2731 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1i32_nxv1i16:
2732 ; CHECK:       # %bb.0: # %entry
2733 ; CHECK-NEXT:    vmv1r.v v10, v8
2734 ; CHECK-NEXT:    vmv1r.v v11, v8
2735 ; CHECK-NEXT:    vmv1r.v v12, v8
2736 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2737 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
2738 ; CHECK-NEXT:    ret
2739 entry:
2740   tail call void @llvm.riscv.vsoxseg3.mask.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
2741   ret void
2744 declare void @llvm.riscv.vsoxseg4.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, i32)
2745 declare void @llvm.riscv.vsoxseg4.mask.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
2747 define void @test_vsoxseg4_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
2748 ; CHECK-LABEL: test_vsoxseg4_nxv1i32_nxv1i8:
2749 ; CHECK:       # %bb.0: # %entry
2750 ; CHECK-NEXT:    vmv1r.v v10, v8
2751 ; CHECK-NEXT:    vmv1r.v v11, v8
2752 ; CHECK-NEXT:    vmv1r.v v12, v8
2753 ; CHECK-NEXT:    vmv1r.v v13, v8
2754 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2755 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
2756 ; CHECK-NEXT:    ret
2757 entry:
2758   tail call void @llvm.riscv.vsoxseg4.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
2759   ret void
2762 define void @test_vsoxseg4_mask_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
2763 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1i32_nxv1i8:
2764 ; CHECK:       # %bb.0: # %entry
2765 ; CHECK-NEXT:    vmv1r.v v10, v8
2766 ; CHECK-NEXT:    vmv1r.v v11, v8
2767 ; CHECK-NEXT:    vmv1r.v v12, v8
2768 ; CHECK-NEXT:    vmv1r.v v13, v8
2769 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2770 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
2771 ; CHECK-NEXT:    ret
2772 entry:
2773   tail call void @llvm.riscv.vsoxseg4.mask.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
2774   ret void
2777 declare void @llvm.riscv.vsoxseg4.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, i32)
2778 declare void @llvm.riscv.vsoxseg4.mask.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
2780 define void @test_vsoxseg4_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
2781 ; CHECK-LABEL: test_vsoxseg4_nxv1i32_nxv1i32:
2782 ; CHECK:       # %bb.0: # %entry
2783 ; CHECK-NEXT:    vmv1r.v v10, v8
2784 ; CHECK-NEXT:    vmv1r.v v11, v8
2785 ; CHECK-NEXT:    vmv1r.v v12, v8
2786 ; CHECK-NEXT:    vmv1r.v v13, v8
2787 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2788 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9
2789 ; CHECK-NEXT:    ret
2790 entry:
2791   tail call void @llvm.riscv.vsoxseg4.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
2792   ret void
2795 define void @test_vsoxseg4_mask_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
2796 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1i32_nxv1i32:
2797 ; CHECK:       # %bb.0: # %entry
2798 ; CHECK-NEXT:    vmv1r.v v10, v8
2799 ; CHECK-NEXT:    vmv1r.v v11, v8
2800 ; CHECK-NEXT:    vmv1r.v v12, v8
2801 ; CHECK-NEXT:    vmv1r.v v13, v8
2802 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2803 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9, v0.t
2804 ; CHECK-NEXT:    ret
2805 entry:
2806   tail call void @llvm.riscv.vsoxseg4.mask.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
2807   ret void
2810 declare void @llvm.riscv.vsoxseg4.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, i32)
2811 declare void @llvm.riscv.vsoxseg4.mask.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
2813 define void @test_vsoxseg4_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
2814 ; CHECK-LABEL: test_vsoxseg4_nxv1i32_nxv1i16:
2815 ; CHECK:       # %bb.0: # %entry
2816 ; CHECK-NEXT:    vmv1r.v v10, v8
2817 ; CHECK-NEXT:    vmv1r.v v11, v8
2818 ; CHECK-NEXT:    vmv1r.v v12, v8
2819 ; CHECK-NEXT:    vmv1r.v v13, v8
2820 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2821 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
2822 ; CHECK-NEXT:    ret
2823 entry:
2824   tail call void @llvm.riscv.vsoxseg4.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
2825   ret void
2828 define void @test_vsoxseg4_mask_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
2829 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1i32_nxv1i16:
2830 ; CHECK:       # %bb.0: # %entry
2831 ; CHECK-NEXT:    vmv1r.v v10, v8
2832 ; CHECK-NEXT:    vmv1r.v v11, v8
2833 ; CHECK-NEXT:    vmv1r.v v12, v8
2834 ; CHECK-NEXT:    vmv1r.v v13, v8
2835 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2836 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
2837 ; CHECK-NEXT:    ret
2838 entry:
2839   tail call void @llvm.riscv.vsoxseg4.mask.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
2840   ret void
2843 declare void @llvm.riscv.vsoxseg5.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, i32)
2844 declare void @llvm.riscv.vsoxseg5.mask.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
2846 define void @test_vsoxseg5_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
2847 ; CHECK-LABEL: test_vsoxseg5_nxv1i32_nxv1i8:
2848 ; CHECK:       # %bb.0: # %entry
2849 ; CHECK-NEXT:    vmv1r.v v10, v8
2850 ; CHECK-NEXT:    vmv1r.v v11, v8
2851 ; CHECK-NEXT:    vmv1r.v v12, v8
2852 ; CHECK-NEXT:    vmv1r.v v13, v8
2853 ; CHECK-NEXT:    vmv1r.v v14, v8
2854 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2855 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
2856 ; CHECK-NEXT:    ret
2857 entry:
2858   tail call void @llvm.riscv.vsoxseg5.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
2859   ret void
2862 define void @test_vsoxseg5_mask_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
2863 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1i32_nxv1i8:
2864 ; CHECK:       # %bb.0: # %entry
2865 ; CHECK-NEXT:    vmv1r.v v10, v8
2866 ; CHECK-NEXT:    vmv1r.v v11, v8
2867 ; CHECK-NEXT:    vmv1r.v v12, v8
2868 ; CHECK-NEXT:    vmv1r.v v13, v8
2869 ; CHECK-NEXT:    vmv1r.v v14, v8
2870 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2871 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
2872 ; CHECK-NEXT:    ret
2873 entry:
2874   tail call void @llvm.riscv.vsoxseg5.mask.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
2875   ret void
2878 declare void @llvm.riscv.vsoxseg5.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, i32)
2879 declare void @llvm.riscv.vsoxseg5.mask.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
2881 define void @test_vsoxseg5_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
2882 ; CHECK-LABEL: test_vsoxseg5_nxv1i32_nxv1i32:
2883 ; CHECK:       # %bb.0: # %entry
2884 ; CHECK-NEXT:    vmv1r.v v10, v8
2885 ; CHECK-NEXT:    vmv1r.v v11, v8
2886 ; CHECK-NEXT:    vmv1r.v v12, v8
2887 ; CHECK-NEXT:    vmv1r.v v13, v8
2888 ; CHECK-NEXT:    vmv1r.v v14, v8
2889 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2890 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9
2891 ; CHECK-NEXT:    ret
2892 entry:
2893   tail call void @llvm.riscv.vsoxseg5.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
2894   ret void
2897 define void @test_vsoxseg5_mask_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
2898 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1i32_nxv1i32:
2899 ; CHECK:       # %bb.0: # %entry
2900 ; CHECK-NEXT:    vmv1r.v v10, v8
2901 ; CHECK-NEXT:    vmv1r.v v11, v8
2902 ; CHECK-NEXT:    vmv1r.v v12, v8
2903 ; CHECK-NEXT:    vmv1r.v v13, v8
2904 ; CHECK-NEXT:    vmv1r.v v14, v8
2905 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2906 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9, v0.t
2907 ; CHECK-NEXT:    ret
2908 entry:
2909   tail call void @llvm.riscv.vsoxseg5.mask.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
2910   ret void
2913 declare void @llvm.riscv.vsoxseg5.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, i32)
2914 declare void @llvm.riscv.vsoxseg5.mask.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
2916 define void @test_vsoxseg5_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
2917 ; CHECK-LABEL: test_vsoxseg5_nxv1i32_nxv1i16:
2918 ; CHECK:       # %bb.0: # %entry
2919 ; CHECK-NEXT:    vmv1r.v v10, v8
2920 ; CHECK-NEXT:    vmv1r.v v11, v8
2921 ; CHECK-NEXT:    vmv1r.v v12, v8
2922 ; CHECK-NEXT:    vmv1r.v v13, v8
2923 ; CHECK-NEXT:    vmv1r.v v14, v8
2924 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2925 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
2926 ; CHECK-NEXT:    ret
2927 entry:
2928   tail call void @llvm.riscv.vsoxseg5.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
2929   ret void
2932 define void @test_vsoxseg5_mask_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
2933 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1i32_nxv1i16:
2934 ; CHECK:       # %bb.0: # %entry
2935 ; CHECK-NEXT:    vmv1r.v v10, v8
2936 ; CHECK-NEXT:    vmv1r.v v11, v8
2937 ; CHECK-NEXT:    vmv1r.v v12, v8
2938 ; CHECK-NEXT:    vmv1r.v v13, v8
2939 ; CHECK-NEXT:    vmv1r.v v14, v8
2940 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2941 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
2942 ; CHECK-NEXT:    ret
2943 entry:
2944   tail call void @llvm.riscv.vsoxseg5.mask.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
2945   ret void
2948 declare void @llvm.riscv.vsoxseg6.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, i32)
2949 declare void @llvm.riscv.vsoxseg6.mask.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
2951 define void @test_vsoxseg6_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
2952 ; CHECK-LABEL: test_vsoxseg6_nxv1i32_nxv1i8:
2953 ; CHECK:       # %bb.0: # %entry
2954 ; CHECK-NEXT:    vmv1r.v v10, v8
2955 ; CHECK-NEXT:    vmv1r.v v11, v8
2956 ; CHECK-NEXT:    vmv1r.v v12, v8
2957 ; CHECK-NEXT:    vmv1r.v v13, v8
2958 ; CHECK-NEXT:    vmv1r.v v14, v8
2959 ; CHECK-NEXT:    vmv1r.v v15, v8
2960 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2961 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
2962 ; CHECK-NEXT:    ret
2963 entry:
2964   tail call void @llvm.riscv.vsoxseg6.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
2965   ret void
2968 define void @test_vsoxseg6_mask_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
2969 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1i32_nxv1i8:
2970 ; CHECK:       # %bb.0: # %entry
2971 ; CHECK-NEXT:    vmv1r.v v10, v8
2972 ; CHECK-NEXT:    vmv1r.v v11, v8
2973 ; CHECK-NEXT:    vmv1r.v v12, v8
2974 ; CHECK-NEXT:    vmv1r.v v13, v8
2975 ; CHECK-NEXT:    vmv1r.v v14, v8
2976 ; CHECK-NEXT:    vmv1r.v v15, v8
2977 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2978 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
2979 ; CHECK-NEXT:    ret
2980 entry:
2981   tail call void @llvm.riscv.vsoxseg6.mask.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
2982   ret void
2985 declare void @llvm.riscv.vsoxseg6.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, i32)
2986 declare void @llvm.riscv.vsoxseg6.mask.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
2988 define void @test_vsoxseg6_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
2989 ; CHECK-LABEL: test_vsoxseg6_nxv1i32_nxv1i32:
2990 ; CHECK:       # %bb.0: # %entry
2991 ; CHECK-NEXT:    vmv1r.v v10, v8
2992 ; CHECK-NEXT:    vmv1r.v v11, v8
2993 ; CHECK-NEXT:    vmv1r.v v12, v8
2994 ; CHECK-NEXT:    vmv1r.v v13, v8
2995 ; CHECK-NEXT:    vmv1r.v v14, v8
2996 ; CHECK-NEXT:    vmv1r.v v15, v8
2997 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
2998 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9
2999 ; CHECK-NEXT:    ret
3000 entry:
3001   tail call void @llvm.riscv.vsoxseg6.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
3002   ret void
3005 define void @test_vsoxseg6_mask_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
3006 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1i32_nxv1i32:
3007 ; CHECK:       # %bb.0: # %entry
3008 ; CHECK-NEXT:    vmv1r.v v10, v8
3009 ; CHECK-NEXT:    vmv1r.v v11, v8
3010 ; CHECK-NEXT:    vmv1r.v v12, v8
3011 ; CHECK-NEXT:    vmv1r.v v13, v8
3012 ; CHECK-NEXT:    vmv1r.v v14, v8
3013 ; CHECK-NEXT:    vmv1r.v v15, v8
3014 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3015 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9, v0.t
3016 ; CHECK-NEXT:    ret
3017 entry:
3018   tail call void @llvm.riscv.vsoxseg6.mask.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
3019   ret void
3022 declare void @llvm.riscv.vsoxseg6.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, i32)
3023 declare void @llvm.riscv.vsoxseg6.mask.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
3025 define void @test_vsoxseg6_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
3026 ; CHECK-LABEL: test_vsoxseg6_nxv1i32_nxv1i16:
3027 ; CHECK:       # %bb.0: # %entry
3028 ; CHECK-NEXT:    vmv1r.v v10, v8
3029 ; CHECK-NEXT:    vmv1r.v v11, v8
3030 ; CHECK-NEXT:    vmv1r.v v12, v8
3031 ; CHECK-NEXT:    vmv1r.v v13, v8
3032 ; CHECK-NEXT:    vmv1r.v v14, v8
3033 ; CHECK-NEXT:    vmv1r.v v15, v8
3034 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3035 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
3036 ; CHECK-NEXT:    ret
3037 entry:
3038   tail call void @llvm.riscv.vsoxseg6.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
3039   ret void
3042 define void @test_vsoxseg6_mask_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
3043 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1i32_nxv1i16:
3044 ; CHECK:       # %bb.0: # %entry
3045 ; CHECK-NEXT:    vmv1r.v v10, v8
3046 ; CHECK-NEXT:    vmv1r.v v11, v8
3047 ; CHECK-NEXT:    vmv1r.v v12, v8
3048 ; CHECK-NEXT:    vmv1r.v v13, v8
3049 ; CHECK-NEXT:    vmv1r.v v14, v8
3050 ; CHECK-NEXT:    vmv1r.v v15, v8
3051 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3052 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
3053 ; CHECK-NEXT:    ret
3054 entry:
3055   tail call void @llvm.riscv.vsoxseg6.mask.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
3056   ret void
3059 declare void @llvm.riscv.vsoxseg7.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, i32)
3060 declare void @llvm.riscv.vsoxseg7.mask.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
3062 define void @test_vsoxseg7_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
3063 ; CHECK-LABEL: test_vsoxseg7_nxv1i32_nxv1i8:
3064 ; CHECK:       # %bb.0: # %entry
3065 ; CHECK-NEXT:    vmv1r.v v10, v8
3066 ; CHECK-NEXT:    vmv1r.v v11, v8
3067 ; CHECK-NEXT:    vmv1r.v v12, v8
3068 ; CHECK-NEXT:    vmv1r.v v13, v8
3069 ; CHECK-NEXT:    vmv1r.v v14, v8
3070 ; CHECK-NEXT:    vmv1r.v v15, v8
3071 ; CHECK-NEXT:    vmv1r.v v16, v8
3072 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3073 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
3074 ; CHECK-NEXT:    ret
3075 entry:
3076   tail call void @llvm.riscv.vsoxseg7.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
3077   ret void
3080 define void @test_vsoxseg7_mask_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
3081 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1i32_nxv1i8:
3082 ; CHECK:       # %bb.0: # %entry
3083 ; CHECK-NEXT:    vmv1r.v v10, v8
3084 ; CHECK-NEXT:    vmv1r.v v11, v8
3085 ; CHECK-NEXT:    vmv1r.v v12, v8
3086 ; CHECK-NEXT:    vmv1r.v v13, v8
3087 ; CHECK-NEXT:    vmv1r.v v14, v8
3088 ; CHECK-NEXT:    vmv1r.v v15, v8
3089 ; CHECK-NEXT:    vmv1r.v v16, v8
3090 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3091 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
3092 ; CHECK-NEXT:    ret
3093 entry:
3094   tail call void @llvm.riscv.vsoxseg7.mask.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
3095   ret void
3098 declare void @llvm.riscv.vsoxseg7.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, i32)
3099 declare void @llvm.riscv.vsoxseg7.mask.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
3101 define void @test_vsoxseg7_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
3102 ; CHECK-LABEL: test_vsoxseg7_nxv1i32_nxv1i32:
3103 ; CHECK:       # %bb.0: # %entry
3104 ; CHECK-NEXT:    vmv1r.v v10, v8
3105 ; CHECK-NEXT:    vmv1r.v v11, v8
3106 ; CHECK-NEXT:    vmv1r.v v12, v8
3107 ; CHECK-NEXT:    vmv1r.v v13, v8
3108 ; CHECK-NEXT:    vmv1r.v v14, v8
3109 ; CHECK-NEXT:    vmv1r.v v15, v8
3110 ; CHECK-NEXT:    vmv1r.v v16, v8
3111 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3112 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9
3113 ; CHECK-NEXT:    ret
3114 entry:
3115   tail call void @llvm.riscv.vsoxseg7.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
3116   ret void
3119 define void @test_vsoxseg7_mask_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
3120 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1i32_nxv1i32:
3121 ; CHECK:       # %bb.0: # %entry
3122 ; CHECK-NEXT:    vmv1r.v v10, v8
3123 ; CHECK-NEXT:    vmv1r.v v11, v8
3124 ; CHECK-NEXT:    vmv1r.v v12, v8
3125 ; CHECK-NEXT:    vmv1r.v v13, v8
3126 ; CHECK-NEXT:    vmv1r.v v14, v8
3127 ; CHECK-NEXT:    vmv1r.v v15, v8
3128 ; CHECK-NEXT:    vmv1r.v v16, v8
3129 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3130 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9, v0.t
3131 ; CHECK-NEXT:    ret
3132 entry:
3133   tail call void @llvm.riscv.vsoxseg7.mask.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
3134   ret void
3137 declare void @llvm.riscv.vsoxseg7.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, i32)
3138 declare void @llvm.riscv.vsoxseg7.mask.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
3140 define void @test_vsoxseg7_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
3141 ; CHECK-LABEL: test_vsoxseg7_nxv1i32_nxv1i16:
3142 ; CHECK:       # %bb.0: # %entry
3143 ; CHECK-NEXT:    vmv1r.v v10, v8
3144 ; CHECK-NEXT:    vmv1r.v v11, v8
3145 ; CHECK-NEXT:    vmv1r.v v12, v8
3146 ; CHECK-NEXT:    vmv1r.v v13, v8
3147 ; CHECK-NEXT:    vmv1r.v v14, v8
3148 ; CHECK-NEXT:    vmv1r.v v15, v8
3149 ; CHECK-NEXT:    vmv1r.v v16, v8
3150 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3151 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
3152 ; CHECK-NEXT:    ret
3153 entry:
3154   tail call void @llvm.riscv.vsoxseg7.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
3155   ret void
3158 define void @test_vsoxseg7_mask_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
3159 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1i32_nxv1i16:
3160 ; CHECK:       # %bb.0: # %entry
3161 ; CHECK-NEXT:    vmv1r.v v10, v8
3162 ; CHECK-NEXT:    vmv1r.v v11, v8
3163 ; CHECK-NEXT:    vmv1r.v v12, v8
3164 ; CHECK-NEXT:    vmv1r.v v13, v8
3165 ; CHECK-NEXT:    vmv1r.v v14, v8
3166 ; CHECK-NEXT:    vmv1r.v v15, v8
3167 ; CHECK-NEXT:    vmv1r.v v16, v8
3168 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3169 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
3170 ; CHECK-NEXT:    ret
3171 entry:
3172   tail call void @llvm.riscv.vsoxseg7.mask.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
3173   ret void
3176 declare void @llvm.riscv.vsoxseg8.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, i32)
3177 declare void @llvm.riscv.vsoxseg8.mask.nxv1i32.nxv1i8(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
3179 define void @test_vsoxseg8_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
3180 ; CHECK-LABEL: test_vsoxseg8_nxv1i32_nxv1i8:
3181 ; CHECK:       # %bb.0: # %entry
3182 ; CHECK-NEXT:    vmv1r.v v10, v8
3183 ; CHECK-NEXT:    vmv1r.v v11, v8
3184 ; CHECK-NEXT:    vmv1r.v v12, v8
3185 ; CHECK-NEXT:    vmv1r.v v13, v8
3186 ; CHECK-NEXT:    vmv1r.v v14, v8
3187 ; CHECK-NEXT:    vmv1r.v v15, v8
3188 ; CHECK-NEXT:    vmv1r.v v16, v8
3189 ; CHECK-NEXT:    vmv1r.v v17, v8
3190 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3191 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
3192 ; CHECK-NEXT:    ret
3193 entry:
3194   tail call void @llvm.riscv.vsoxseg8.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
3195   ret void
3198 define void @test_vsoxseg8_mask_nxv1i32_nxv1i8(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
3199 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1i32_nxv1i8:
3200 ; CHECK:       # %bb.0: # %entry
3201 ; CHECK-NEXT:    vmv1r.v v10, v8
3202 ; CHECK-NEXT:    vmv1r.v v11, v8
3203 ; CHECK-NEXT:    vmv1r.v v12, v8
3204 ; CHECK-NEXT:    vmv1r.v v13, v8
3205 ; CHECK-NEXT:    vmv1r.v v14, v8
3206 ; CHECK-NEXT:    vmv1r.v v15, v8
3207 ; CHECK-NEXT:    vmv1r.v v16, v8
3208 ; CHECK-NEXT:    vmv1r.v v17, v8
3209 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3210 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
3211 ; CHECK-NEXT:    ret
3212 entry:
3213   tail call void @llvm.riscv.vsoxseg8.mask.nxv1i32.nxv1i8(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
3214   ret void
3217 declare void @llvm.riscv.vsoxseg8.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, i32)
3218 declare void @llvm.riscv.vsoxseg8.mask.nxv1i32.nxv1i32(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
3220 define void @test_vsoxseg8_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
3221 ; CHECK-LABEL: test_vsoxseg8_nxv1i32_nxv1i32:
3222 ; CHECK:       # %bb.0: # %entry
3223 ; CHECK-NEXT:    vmv1r.v v10, v8
3224 ; CHECK-NEXT:    vmv1r.v v11, v8
3225 ; CHECK-NEXT:    vmv1r.v v12, v8
3226 ; CHECK-NEXT:    vmv1r.v v13, v8
3227 ; CHECK-NEXT:    vmv1r.v v14, v8
3228 ; CHECK-NEXT:    vmv1r.v v15, v8
3229 ; CHECK-NEXT:    vmv1r.v v16, v8
3230 ; CHECK-NEXT:    vmv1r.v v17, v8
3231 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3232 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9
3233 ; CHECK-NEXT:    ret
3234 entry:
3235   tail call void @llvm.riscv.vsoxseg8.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
3236   ret void
3239 define void @test_vsoxseg8_mask_nxv1i32_nxv1i32(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
3240 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1i32_nxv1i32:
3241 ; CHECK:       # %bb.0: # %entry
3242 ; CHECK-NEXT:    vmv1r.v v10, v8
3243 ; CHECK-NEXT:    vmv1r.v v11, v8
3244 ; CHECK-NEXT:    vmv1r.v v12, v8
3245 ; CHECK-NEXT:    vmv1r.v v13, v8
3246 ; CHECK-NEXT:    vmv1r.v v14, v8
3247 ; CHECK-NEXT:    vmv1r.v v15, v8
3248 ; CHECK-NEXT:    vmv1r.v v16, v8
3249 ; CHECK-NEXT:    vmv1r.v v17, v8
3250 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3251 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9, v0.t
3252 ; CHECK-NEXT:    ret
3253 entry:
3254   tail call void @llvm.riscv.vsoxseg8.mask.nxv1i32.nxv1i32(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
3255   ret void
3258 declare void @llvm.riscv.vsoxseg8.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, i32)
3259 declare void @llvm.riscv.vsoxseg8.mask.nxv1i32.nxv1i16(<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>,<vscale x 1 x i32>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
3261 define void @test_vsoxseg8_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
3262 ; CHECK-LABEL: test_vsoxseg8_nxv1i32_nxv1i16:
3263 ; CHECK:       # %bb.0: # %entry
3264 ; CHECK-NEXT:    vmv1r.v v10, v8
3265 ; CHECK-NEXT:    vmv1r.v v11, v8
3266 ; CHECK-NEXT:    vmv1r.v v12, v8
3267 ; CHECK-NEXT:    vmv1r.v v13, v8
3268 ; CHECK-NEXT:    vmv1r.v v14, v8
3269 ; CHECK-NEXT:    vmv1r.v v15, v8
3270 ; CHECK-NEXT:    vmv1r.v v16, v8
3271 ; CHECK-NEXT:    vmv1r.v v17, v8
3272 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3273 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
3274 ; CHECK-NEXT:    ret
3275 entry:
3276   tail call void @llvm.riscv.vsoxseg8.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
3277   ret void
3280 define void @test_vsoxseg8_mask_nxv1i32_nxv1i16(<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
3281 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1i32_nxv1i16:
3282 ; CHECK:       # %bb.0: # %entry
3283 ; CHECK-NEXT:    vmv1r.v v10, v8
3284 ; CHECK-NEXT:    vmv1r.v v11, v8
3285 ; CHECK-NEXT:    vmv1r.v v12, v8
3286 ; CHECK-NEXT:    vmv1r.v v13, v8
3287 ; CHECK-NEXT:    vmv1r.v v14, v8
3288 ; CHECK-NEXT:    vmv1r.v v15, v8
3289 ; CHECK-NEXT:    vmv1r.v v16, v8
3290 ; CHECK-NEXT:    vmv1r.v v17, v8
3291 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
3292 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
3293 ; CHECK-NEXT:    ret
3294 entry:
3295   tail call void @llvm.riscv.vsoxseg8.mask.nxv1i32.nxv1i16(<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val,<vscale x 1 x i32> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
3296   ret void
3299 declare void @llvm.riscv.vsoxseg2.nxv8i16.nxv8i16(<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i16>, i32)
3300 declare void @llvm.riscv.vsoxseg2.mask.nxv8i16.nxv8i16(<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
3302 define void @test_vsoxseg2_nxv8i16_nxv8i16(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
3303 ; CHECK-LABEL: test_vsoxseg2_nxv8i16_nxv8i16:
3304 ; CHECK:       # %bb.0: # %entry
3305 ; CHECK-NEXT:    vmv2r.v v12, v10
3306 ; CHECK-NEXT:    vmv2r.v v10, v8
3307 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3308 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v12
3309 ; CHECK-NEXT:    ret
3310 entry:
3311   tail call void @llvm.riscv.vsoxseg2.nxv8i16.nxv8i16(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
3312   ret void
3315 define void @test_vsoxseg2_mask_nxv8i16_nxv8i16(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3316 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8i16_nxv8i16:
3317 ; CHECK:       # %bb.0: # %entry
3318 ; CHECK-NEXT:    vmv2r.v v12, v10
3319 ; CHECK-NEXT:    vmv2r.v v10, v8
3320 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3321 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v12, v0.t
3322 ; CHECK-NEXT:    ret
3323 entry:
3324   tail call void @llvm.riscv.vsoxseg2.mask.nxv8i16.nxv8i16(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
3325   ret void
3328 declare void @llvm.riscv.vsoxseg2.nxv8i16.nxv8i8(<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i8>, i32)
3329 declare void @llvm.riscv.vsoxseg2.mask.nxv8i16.nxv8i8(<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
3331 define void @test_vsoxseg2_nxv8i16_nxv8i8(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
3332 ; CHECK-LABEL: test_vsoxseg2_nxv8i16_nxv8i8:
3333 ; CHECK:       # %bb.0: # %entry
3334 ; CHECK-NEXT:    vmv1r.v v12, v10
3335 ; CHECK-NEXT:    vmv2r.v v10, v8
3336 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3337 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v12
3338 ; CHECK-NEXT:    ret
3339 entry:
3340   tail call void @llvm.riscv.vsoxseg2.nxv8i16.nxv8i8(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
3341   ret void
3344 define void @test_vsoxseg2_mask_nxv8i16_nxv8i8(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3345 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8i16_nxv8i8:
3346 ; CHECK:       # %bb.0: # %entry
3347 ; CHECK-NEXT:    vmv1r.v v12, v10
3348 ; CHECK-NEXT:    vmv2r.v v10, v8
3349 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3350 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v12, v0.t
3351 ; CHECK-NEXT:    ret
3352 entry:
3353   tail call void @llvm.riscv.vsoxseg2.mask.nxv8i16.nxv8i8(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
3354   ret void
3357 declare void @llvm.riscv.vsoxseg2.nxv8i16.nxv8i32(<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i32>, i32)
3358 declare void @llvm.riscv.vsoxseg2.mask.nxv8i16.nxv8i32(<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
3360 define void @test_vsoxseg2_nxv8i16_nxv8i32(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
3361 ; CHECK-LABEL: test_vsoxseg2_nxv8i16_nxv8i32:
3362 ; CHECK:       # %bb.0: # %entry
3363 ; CHECK-NEXT:    vmv2r.v v10, v8
3364 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3365 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v12
3366 ; CHECK-NEXT:    ret
3367 entry:
3368   tail call void @llvm.riscv.vsoxseg2.nxv8i16.nxv8i32(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
3369   ret void
3372 define void @test_vsoxseg2_mask_nxv8i16_nxv8i32(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3373 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8i16_nxv8i32:
3374 ; CHECK:       # %bb.0: # %entry
3375 ; CHECK-NEXT:    vmv2r.v v10, v8
3376 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3377 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v12, v0.t
3378 ; CHECK-NEXT:    ret
3379 entry:
3380   tail call void @llvm.riscv.vsoxseg2.mask.nxv8i16.nxv8i32(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
3381   ret void
3384 declare void @llvm.riscv.vsoxseg3.nxv8i16.nxv8i16(<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i16>, i32)
3385 declare void @llvm.riscv.vsoxseg3.mask.nxv8i16.nxv8i16(<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
3387 define void @test_vsoxseg3_nxv8i16_nxv8i16(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
3388 ; CHECK-LABEL: test_vsoxseg3_nxv8i16_nxv8i16:
3389 ; CHECK:       # %bb.0: # %entry
3390 ; CHECK-NEXT:    vmv2r.v v12, v8
3391 ; CHECK-NEXT:    vmv2r.v v14, v8
3392 ; CHECK-NEXT:    vmv2r.v v16, v8
3393 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3394 ; CHECK-NEXT:    vsoxseg3ei16.v v12, (a0), v10
3395 ; CHECK-NEXT:    ret
3396 entry:
3397   tail call void @llvm.riscv.vsoxseg3.nxv8i16.nxv8i16(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
3398   ret void
3401 define void @test_vsoxseg3_mask_nxv8i16_nxv8i16(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3402 ; CHECK-LABEL: test_vsoxseg3_mask_nxv8i16_nxv8i16:
3403 ; CHECK:       # %bb.0: # %entry
3404 ; CHECK-NEXT:    vmv2r.v v12, v8
3405 ; CHECK-NEXT:    vmv2r.v v14, v8
3406 ; CHECK-NEXT:    vmv2r.v v16, v8
3407 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3408 ; CHECK-NEXT:    vsoxseg3ei16.v v12, (a0), v10, v0.t
3409 ; CHECK-NEXT:    ret
3410 entry:
3411   tail call void @llvm.riscv.vsoxseg3.mask.nxv8i16.nxv8i16(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
3412   ret void
3415 declare void @llvm.riscv.vsoxseg3.nxv8i16.nxv8i8(<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i8>, i32)
3416 declare void @llvm.riscv.vsoxseg3.mask.nxv8i16.nxv8i8(<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
3418 define void @test_vsoxseg3_nxv8i16_nxv8i8(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
3419 ; CHECK-LABEL: test_vsoxseg3_nxv8i16_nxv8i8:
3420 ; CHECK:       # %bb.0: # %entry
3421 ; CHECK-NEXT:    vmv2r.v v12, v8
3422 ; CHECK-NEXT:    vmv2r.v v14, v8
3423 ; CHECK-NEXT:    vmv2r.v v16, v8
3424 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3425 ; CHECK-NEXT:    vsoxseg3ei8.v v12, (a0), v10
3426 ; CHECK-NEXT:    ret
3427 entry:
3428   tail call void @llvm.riscv.vsoxseg3.nxv8i16.nxv8i8(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
3429   ret void
3432 define void @test_vsoxseg3_mask_nxv8i16_nxv8i8(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3433 ; CHECK-LABEL: test_vsoxseg3_mask_nxv8i16_nxv8i8:
3434 ; CHECK:       # %bb.0: # %entry
3435 ; CHECK-NEXT:    vmv2r.v v12, v8
3436 ; CHECK-NEXT:    vmv2r.v v14, v8
3437 ; CHECK-NEXT:    vmv2r.v v16, v8
3438 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3439 ; CHECK-NEXT:    vsoxseg3ei8.v v12, (a0), v10, v0.t
3440 ; CHECK-NEXT:    ret
3441 entry:
3442   tail call void @llvm.riscv.vsoxseg3.mask.nxv8i16.nxv8i8(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
3443   ret void
3446 declare void @llvm.riscv.vsoxseg3.nxv8i16.nxv8i32(<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i32>, i32)
3447 declare void @llvm.riscv.vsoxseg3.mask.nxv8i16.nxv8i32(<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
3449 define void @test_vsoxseg3_nxv8i16_nxv8i32(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
3450 ; CHECK-LABEL: test_vsoxseg3_nxv8i16_nxv8i32:
3451 ; CHECK:       # %bb.0: # %entry
3452 ; CHECK-NEXT:    vmv2r.v v10, v8
3453 ; CHECK-NEXT:    vmv4r.v v16, v12
3454 ; CHECK-NEXT:    vmv2r.v v12, v8
3455 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3456 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v16
3457 ; CHECK-NEXT:    ret
3458 entry:
3459   tail call void @llvm.riscv.vsoxseg3.nxv8i16.nxv8i32(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
3460   ret void
3463 define void @test_vsoxseg3_mask_nxv8i16_nxv8i32(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3464 ; CHECK-LABEL: test_vsoxseg3_mask_nxv8i16_nxv8i32:
3465 ; CHECK:       # %bb.0: # %entry
3466 ; CHECK-NEXT:    vmv2r.v v10, v8
3467 ; CHECK-NEXT:    vmv4r.v v16, v12
3468 ; CHECK-NEXT:    vmv2r.v v12, v8
3469 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3470 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v16, v0.t
3471 ; CHECK-NEXT:    ret
3472 entry:
3473   tail call void @llvm.riscv.vsoxseg3.mask.nxv8i16.nxv8i32(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
3474   ret void
3477 declare void @llvm.riscv.vsoxseg4.nxv8i16.nxv8i16(<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i16>, i32)
3478 declare void @llvm.riscv.vsoxseg4.mask.nxv8i16.nxv8i16(<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
3480 define void @test_vsoxseg4_nxv8i16_nxv8i16(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
3481 ; CHECK-LABEL: test_vsoxseg4_nxv8i16_nxv8i16:
3482 ; CHECK:       # %bb.0: # %entry
3483 ; CHECK-NEXT:    vmv2r.v v12, v8
3484 ; CHECK-NEXT:    vmv2r.v v14, v8
3485 ; CHECK-NEXT:    vmv2r.v v16, v8
3486 ; CHECK-NEXT:    vmv2r.v v18, v8
3487 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3488 ; CHECK-NEXT:    vsoxseg4ei16.v v12, (a0), v10
3489 ; CHECK-NEXT:    ret
3490 entry:
3491   tail call void @llvm.riscv.vsoxseg4.nxv8i16.nxv8i16(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
3492   ret void
3495 define void @test_vsoxseg4_mask_nxv8i16_nxv8i16(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3496 ; CHECK-LABEL: test_vsoxseg4_mask_nxv8i16_nxv8i16:
3497 ; CHECK:       # %bb.0: # %entry
3498 ; CHECK-NEXT:    vmv2r.v v12, v8
3499 ; CHECK-NEXT:    vmv2r.v v14, v8
3500 ; CHECK-NEXT:    vmv2r.v v16, v8
3501 ; CHECK-NEXT:    vmv2r.v v18, v8
3502 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3503 ; CHECK-NEXT:    vsoxseg4ei16.v v12, (a0), v10, v0.t
3504 ; CHECK-NEXT:    ret
3505 entry:
3506   tail call void @llvm.riscv.vsoxseg4.mask.nxv8i16.nxv8i16(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
3507   ret void
3510 declare void @llvm.riscv.vsoxseg4.nxv8i16.nxv8i8(<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i8>, i32)
3511 declare void @llvm.riscv.vsoxseg4.mask.nxv8i16.nxv8i8(<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
3513 define void @test_vsoxseg4_nxv8i16_nxv8i8(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
3514 ; CHECK-LABEL: test_vsoxseg4_nxv8i16_nxv8i8:
3515 ; CHECK:       # %bb.0: # %entry
3516 ; CHECK-NEXT:    vmv2r.v v12, v8
3517 ; CHECK-NEXT:    vmv2r.v v14, v8
3518 ; CHECK-NEXT:    vmv2r.v v16, v8
3519 ; CHECK-NEXT:    vmv2r.v v18, v8
3520 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3521 ; CHECK-NEXT:    vsoxseg4ei8.v v12, (a0), v10
3522 ; CHECK-NEXT:    ret
3523 entry:
3524   tail call void @llvm.riscv.vsoxseg4.nxv8i16.nxv8i8(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
3525   ret void
3528 define void @test_vsoxseg4_mask_nxv8i16_nxv8i8(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3529 ; CHECK-LABEL: test_vsoxseg4_mask_nxv8i16_nxv8i8:
3530 ; CHECK:       # %bb.0: # %entry
3531 ; CHECK-NEXT:    vmv2r.v v12, v8
3532 ; CHECK-NEXT:    vmv2r.v v14, v8
3533 ; CHECK-NEXT:    vmv2r.v v16, v8
3534 ; CHECK-NEXT:    vmv2r.v v18, v8
3535 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3536 ; CHECK-NEXT:    vsoxseg4ei8.v v12, (a0), v10, v0.t
3537 ; CHECK-NEXT:    ret
3538 entry:
3539   tail call void @llvm.riscv.vsoxseg4.mask.nxv8i16.nxv8i8(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
3540   ret void
3543 declare void @llvm.riscv.vsoxseg4.nxv8i16.nxv8i32(<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i32>, i32)
3544 declare void @llvm.riscv.vsoxseg4.mask.nxv8i16.nxv8i32(<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>,<vscale x 8 x i16>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
3546 define void @test_vsoxseg4_nxv8i16_nxv8i32(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
3547 ; CHECK-LABEL: test_vsoxseg4_nxv8i16_nxv8i32:
3548 ; CHECK:       # %bb.0: # %entry
3549 ; CHECK-NEXT:    vmv2r.v v16, v8
3550 ; CHECK-NEXT:    vmv2r.v v18, v8
3551 ; CHECK-NEXT:    vmv2r.v v20, v8
3552 ; CHECK-NEXT:    vmv2r.v v22, v8
3553 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3554 ; CHECK-NEXT:    vsoxseg4ei32.v v16, (a0), v12
3555 ; CHECK-NEXT:    ret
3556 entry:
3557   tail call void @llvm.riscv.vsoxseg4.nxv8i16.nxv8i32(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
3558   ret void
3561 define void @test_vsoxseg4_mask_nxv8i16_nxv8i32(<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3562 ; CHECK-LABEL: test_vsoxseg4_mask_nxv8i16_nxv8i32:
3563 ; CHECK:       # %bb.0: # %entry
3564 ; CHECK-NEXT:    vmv2r.v v16, v8
3565 ; CHECK-NEXT:    vmv2r.v v18, v8
3566 ; CHECK-NEXT:    vmv2r.v v20, v8
3567 ; CHECK-NEXT:    vmv2r.v v22, v8
3568 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
3569 ; CHECK-NEXT:    vsoxseg4ei32.v v16, (a0), v12, v0.t
3570 ; CHECK-NEXT:    ret
3571 entry:
3572   tail call void @llvm.riscv.vsoxseg4.mask.nxv8i16.nxv8i32(<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val,<vscale x 8 x i16> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
3573   ret void
3576 declare void @llvm.riscv.vsoxseg2.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, i32)
3577 declare void @llvm.riscv.vsoxseg2.mask.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
3579 define void @test_vsoxseg2_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
3580 ; CHECK-LABEL: test_vsoxseg2_nxv8i8_nxv8i16:
3581 ; CHECK:       # %bb.0: # %entry
3582 ; CHECK-NEXT:    vmv1r.v v9, v8
3583 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3584 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
3585 ; CHECK-NEXT:    ret
3586 entry:
3587   tail call void @llvm.riscv.vsoxseg2.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
3588   ret void
3591 define void @test_vsoxseg2_mask_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3592 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8i8_nxv8i16:
3593 ; CHECK:       # %bb.0: # %entry
3594 ; CHECK-NEXT:    vmv1r.v v9, v8
3595 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3596 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
3597 ; CHECK-NEXT:    ret
3598 entry:
3599   tail call void @llvm.riscv.vsoxseg2.mask.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
3600   ret void
3603 declare void @llvm.riscv.vsoxseg2.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, i32)
3604 declare void @llvm.riscv.vsoxseg2.mask.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
3606 define void @test_vsoxseg2_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
3607 ; CHECK-LABEL: test_vsoxseg2_nxv8i8_nxv8i8:
3608 ; CHECK:       # %bb.0: # %entry
3609 ; CHECK-NEXT:    vmv1r.v v10, v9
3610 ; CHECK-NEXT:    vmv1r.v v9, v8
3611 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3612 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
3613 ; CHECK-NEXT:    ret
3614 entry:
3615   tail call void @llvm.riscv.vsoxseg2.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
3616   ret void
3619 define void @test_vsoxseg2_mask_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3620 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8i8_nxv8i8:
3621 ; CHECK:       # %bb.0: # %entry
3622 ; CHECK-NEXT:    vmv1r.v v10, v9
3623 ; CHECK-NEXT:    vmv1r.v v9, v8
3624 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3625 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
3626 ; CHECK-NEXT:    ret
3627 entry:
3628   tail call void @llvm.riscv.vsoxseg2.mask.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
3629   ret void
3632 declare void @llvm.riscv.vsoxseg2.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, i32)
3633 declare void @llvm.riscv.vsoxseg2.mask.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
3635 define void @test_vsoxseg2_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
3636 ; CHECK-LABEL: test_vsoxseg2_nxv8i8_nxv8i32:
3637 ; CHECK:       # %bb.0: # %entry
3638 ; CHECK-NEXT:    vmv1r.v v9, v8
3639 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3640 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v12
3641 ; CHECK-NEXT:    ret
3642 entry:
3643   tail call void @llvm.riscv.vsoxseg2.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
3644   ret void
3647 define void @test_vsoxseg2_mask_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3648 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8i8_nxv8i32:
3649 ; CHECK:       # %bb.0: # %entry
3650 ; CHECK-NEXT:    vmv1r.v v9, v8
3651 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3652 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v12, v0.t
3653 ; CHECK-NEXT:    ret
3654 entry:
3655   tail call void @llvm.riscv.vsoxseg2.mask.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
3656   ret void
3659 declare void @llvm.riscv.vsoxseg3.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, i32)
3660 declare void @llvm.riscv.vsoxseg3.mask.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
3662 define void @test_vsoxseg3_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
3663 ; CHECK-LABEL: test_vsoxseg3_nxv8i8_nxv8i16:
3664 ; CHECK:       # %bb.0: # %entry
3665 ; CHECK-NEXT:    vmv1r.v v9, v8
3666 ; CHECK-NEXT:    vmv2r.v v12, v10
3667 ; CHECK-NEXT:    vmv1r.v v10, v8
3668 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3669 ; CHECK-NEXT:    vsoxseg3ei16.v v8, (a0), v12
3670 ; CHECK-NEXT:    ret
3671 entry:
3672   tail call void @llvm.riscv.vsoxseg3.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
3673   ret void
3676 define void @test_vsoxseg3_mask_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3677 ; CHECK-LABEL: test_vsoxseg3_mask_nxv8i8_nxv8i16:
3678 ; CHECK:       # %bb.0: # %entry
3679 ; CHECK-NEXT:    vmv1r.v v9, v8
3680 ; CHECK-NEXT:    vmv2r.v v12, v10
3681 ; CHECK-NEXT:    vmv1r.v v10, v8
3682 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3683 ; CHECK-NEXT:    vsoxseg3ei16.v v8, (a0), v12, v0.t
3684 ; CHECK-NEXT:    ret
3685 entry:
3686   tail call void @llvm.riscv.vsoxseg3.mask.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
3687   ret void
3690 declare void @llvm.riscv.vsoxseg3.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, i32)
3691 declare void @llvm.riscv.vsoxseg3.mask.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
3693 define void @test_vsoxseg3_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
3694 ; CHECK-LABEL: test_vsoxseg3_nxv8i8_nxv8i8:
3695 ; CHECK:       # %bb.0: # %entry
3696 ; CHECK-NEXT:    vmv1r.v v10, v8
3697 ; CHECK-NEXT:    vmv1r.v v11, v8
3698 ; CHECK-NEXT:    vmv1r.v v12, v8
3699 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3700 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
3701 ; CHECK-NEXT:    ret
3702 entry:
3703   tail call void @llvm.riscv.vsoxseg3.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
3704   ret void
3707 define void @test_vsoxseg3_mask_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3708 ; CHECK-LABEL: test_vsoxseg3_mask_nxv8i8_nxv8i8:
3709 ; CHECK:       # %bb.0: # %entry
3710 ; CHECK-NEXT:    vmv1r.v v10, v8
3711 ; CHECK-NEXT:    vmv1r.v v11, v8
3712 ; CHECK-NEXT:    vmv1r.v v12, v8
3713 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3714 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
3715 ; CHECK-NEXT:    ret
3716 entry:
3717   tail call void @llvm.riscv.vsoxseg3.mask.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
3718   ret void
3721 declare void @llvm.riscv.vsoxseg3.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, i32)
3722 declare void @llvm.riscv.vsoxseg3.mask.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
3724 define void @test_vsoxseg3_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
3725 ; CHECK-LABEL: test_vsoxseg3_nxv8i8_nxv8i32:
3726 ; CHECK:       # %bb.0: # %entry
3727 ; CHECK-NEXT:    vmv1r.v v9, v8
3728 ; CHECK-NEXT:    vmv1r.v v10, v8
3729 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3730 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v12
3731 ; CHECK-NEXT:    ret
3732 entry:
3733   tail call void @llvm.riscv.vsoxseg3.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
3734   ret void
3737 define void @test_vsoxseg3_mask_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3738 ; CHECK-LABEL: test_vsoxseg3_mask_nxv8i8_nxv8i32:
3739 ; CHECK:       # %bb.0: # %entry
3740 ; CHECK-NEXT:    vmv1r.v v9, v8
3741 ; CHECK-NEXT:    vmv1r.v v10, v8
3742 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3743 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v12, v0.t
3744 ; CHECK-NEXT:    ret
3745 entry:
3746   tail call void @llvm.riscv.vsoxseg3.mask.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
3747   ret void
3750 declare void @llvm.riscv.vsoxseg4.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, i32)
3751 declare void @llvm.riscv.vsoxseg4.mask.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
3753 define void @test_vsoxseg4_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
3754 ; CHECK-LABEL: test_vsoxseg4_nxv8i8_nxv8i16:
3755 ; CHECK:       # %bb.0: # %entry
3756 ; CHECK-NEXT:    vmv1r.v v12, v8
3757 ; CHECK-NEXT:    vmv1r.v v13, v8
3758 ; CHECK-NEXT:    vmv1r.v v14, v8
3759 ; CHECK-NEXT:    vmv1r.v v15, v8
3760 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3761 ; CHECK-NEXT:    vsoxseg4ei16.v v12, (a0), v10
3762 ; CHECK-NEXT:    ret
3763 entry:
3764   tail call void @llvm.riscv.vsoxseg4.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
3765   ret void
3768 define void @test_vsoxseg4_mask_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3769 ; CHECK-LABEL: test_vsoxseg4_mask_nxv8i8_nxv8i16:
3770 ; CHECK:       # %bb.0: # %entry
3771 ; CHECK-NEXT:    vmv1r.v v12, v8
3772 ; CHECK-NEXT:    vmv1r.v v13, v8
3773 ; CHECK-NEXT:    vmv1r.v v14, v8
3774 ; CHECK-NEXT:    vmv1r.v v15, v8
3775 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3776 ; CHECK-NEXT:    vsoxseg4ei16.v v12, (a0), v10, v0.t
3777 ; CHECK-NEXT:    ret
3778 entry:
3779   tail call void @llvm.riscv.vsoxseg4.mask.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
3780   ret void
3783 declare void @llvm.riscv.vsoxseg4.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, i32)
3784 declare void @llvm.riscv.vsoxseg4.mask.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
3786 define void @test_vsoxseg4_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
3787 ; CHECK-LABEL: test_vsoxseg4_nxv8i8_nxv8i8:
3788 ; CHECK:       # %bb.0: # %entry
3789 ; CHECK-NEXT:    vmv1r.v v10, v8
3790 ; CHECK-NEXT:    vmv1r.v v11, v8
3791 ; CHECK-NEXT:    vmv1r.v v12, v8
3792 ; CHECK-NEXT:    vmv1r.v v13, v8
3793 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3794 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
3795 ; CHECK-NEXT:    ret
3796 entry:
3797   tail call void @llvm.riscv.vsoxseg4.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
3798   ret void
3801 define void @test_vsoxseg4_mask_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3802 ; CHECK-LABEL: test_vsoxseg4_mask_nxv8i8_nxv8i8:
3803 ; CHECK:       # %bb.0: # %entry
3804 ; CHECK-NEXT:    vmv1r.v v10, v8
3805 ; CHECK-NEXT:    vmv1r.v v11, v8
3806 ; CHECK-NEXT:    vmv1r.v v12, v8
3807 ; CHECK-NEXT:    vmv1r.v v13, v8
3808 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3809 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
3810 ; CHECK-NEXT:    ret
3811 entry:
3812   tail call void @llvm.riscv.vsoxseg4.mask.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
3813   ret void
3816 declare void @llvm.riscv.vsoxseg4.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, i32)
3817 declare void @llvm.riscv.vsoxseg4.mask.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
3819 define void @test_vsoxseg4_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
3820 ; CHECK-LABEL: test_vsoxseg4_nxv8i8_nxv8i32:
3821 ; CHECK:       # %bb.0: # %entry
3822 ; CHECK-NEXT:    vmv1r.v v9, v8
3823 ; CHECK-NEXT:    vmv1r.v v10, v8
3824 ; CHECK-NEXT:    vmv1r.v v11, v8
3825 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3826 ; CHECK-NEXT:    vsoxseg4ei32.v v8, (a0), v12
3827 ; CHECK-NEXT:    ret
3828 entry:
3829   tail call void @llvm.riscv.vsoxseg4.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
3830   ret void
3833 define void @test_vsoxseg4_mask_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3834 ; CHECK-LABEL: test_vsoxseg4_mask_nxv8i8_nxv8i32:
3835 ; CHECK:       # %bb.0: # %entry
3836 ; CHECK-NEXT:    vmv1r.v v9, v8
3837 ; CHECK-NEXT:    vmv1r.v v10, v8
3838 ; CHECK-NEXT:    vmv1r.v v11, v8
3839 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3840 ; CHECK-NEXT:    vsoxseg4ei32.v v8, (a0), v12, v0.t
3841 ; CHECK-NEXT:    ret
3842 entry:
3843   tail call void @llvm.riscv.vsoxseg4.mask.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
3844   ret void
3847 declare void @llvm.riscv.vsoxseg5.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, i32)
3848 declare void @llvm.riscv.vsoxseg5.mask.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
3850 define void @test_vsoxseg5_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
3851 ; CHECK-LABEL: test_vsoxseg5_nxv8i8_nxv8i16:
3852 ; CHECK:       # %bb.0: # %entry
3853 ; CHECK-NEXT:    vmv1r.v v12, v8
3854 ; CHECK-NEXT:    vmv1r.v v13, v8
3855 ; CHECK-NEXT:    vmv1r.v v14, v8
3856 ; CHECK-NEXT:    vmv1r.v v15, v8
3857 ; CHECK-NEXT:    vmv1r.v v16, v8
3858 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3859 ; CHECK-NEXT:    vsoxseg5ei16.v v12, (a0), v10
3860 ; CHECK-NEXT:    ret
3861 entry:
3862   tail call void @llvm.riscv.vsoxseg5.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
3863   ret void
3866 define void @test_vsoxseg5_mask_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3867 ; CHECK-LABEL: test_vsoxseg5_mask_nxv8i8_nxv8i16:
3868 ; CHECK:       # %bb.0: # %entry
3869 ; CHECK-NEXT:    vmv1r.v v12, v8
3870 ; CHECK-NEXT:    vmv1r.v v13, v8
3871 ; CHECK-NEXT:    vmv1r.v v14, v8
3872 ; CHECK-NEXT:    vmv1r.v v15, v8
3873 ; CHECK-NEXT:    vmv1r.v v16, v8
3874 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3875 ; CHECK-NEXT:    vsoxseg5ei16.v v12, (a0), v10, v0.t
3876 ; CHECK-NEXT:    ret
3877 entry:
3878   tail call void @llvm.riscv.vsoxseg5.mask.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
3879   ret void
3882 declare void @llvm.riscv.vsoxseg5.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, i32)
3883 declare void @llvm.riscv.vsoxseg5.mask.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
3885 define void @test_vsoxseg5_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
3886 ; CHECK-LABEL: test_vsoxseg5_nxv8i8_nxv8i8:
3887 ; CHECK:       # %bb.0: # %entry
3888 ; CHECK-NEXT:    vmv1r.v v10, v8
3889 ; CHECK-NEXT:    vmv1r.v v11, v8
3890 ; CHECK-NEXT:    vmv1r.v v12, v8
3891 ; CHECK-NEXT:    vmv1r.v v13, v8
3892 ; CHECK-NEXT:    vmv1r.v v14, v8
3893 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3894 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
3895 ; CHECK-NEXT:    ret
3896 entry:
3897   tail call void @llvm.riscv.vsoxseg5.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
3898   ret void
3901 define void @test_vsoxseg5_mask_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3902 ; CHECK-LABEL: test_vsoxseg5_mask_nxv8i8_nxv8i8:
3903 ; CHECK:       # %bb.0: # %entry
3904 ; CHECK-NEXT:    vmv1r.v v10, v8
3905 ; CHECK-NEXT:    vmv1r.v v11, v8
3906 ; CHECK-NEXT:    vmv1r.v v12, v8
3907 ; CHECK-NEXT:    vmv1r.v v13, v8
3908 ; CHECK-NEXT:    vmv1r.v v14, v8
3909 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3910 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
3911 ; CHECK-NEXT:    ret
3912 entry:
3913   tail call void @llvm.riscv.vsoxseg5.mask.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
3914   ret void
3917 declare void @llvm.riscv.vsoxseg5.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, i32)
3918 declare void @llvm.riscv.vsoxseg5.mask.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
3920 define void @test_vsoxseg5_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
3921 ; CHECK-LABEL: test_vsoxseg5_nxv8i8_nxv8i32:
3922 ; CHECK:       # %bb.0: # %entry
3923 ; CHECK-NEXT:    vmv1r.v v9, v8
3924 ; CHECK-NEXT:    vmv1r.v v10, v8
3925 ; CHECK-NEXT:    vmv1r.v v11, v8
3926 ; CHECK-NEXT:    vmv4r.v v16, v12
3927 ; CHECK-NEXT:    vmv1r.v v12, v8
3928 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3929 ; CHECK-NEXT:    vsoxseg5ei32.v v8, (a0), v16
3930 ; CHECK-NEXT:    ret
3931 entry:
3932   tail call void @llvm.riscv.vsoxseg5.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
3933   ret void
3936 define void @test_vsoxseg5_mask_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3937 ; CHECK-LABEL: test_vsoxseg5_mask_nxv8i8_nxv8i32:
3938 ; CHECK:       # %bb.0: # %entry
3939 ; CHECK-NEXT:    vmv1r.v v9, v8
3940 ; CHECK-NEXT:    vmv1r.v v10, v8
3941 ; CHECK-NEXT:    vmv1r.v v11, v8
3942 ; CHECK-NEXT:    vmv4r.v v16, v12
3943 ; CHECK-NEXT:    vmv1r.v v12, v8
3944 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3945 ; CHECK-NEXT:    vsoxseg5ei32.v v8, (a0), v16, v0.t
3946 ; CHECK-NEXT:    ret
3947 entry:
3948   tail call void @llvm.riscv.vsoxseg5.mask.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
3949   ret void
3952 declare void @llvm.riscv.vsoxseg6.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, i32)
3953 declare void @llvm.riscv.vsoxseg6.mask.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
3955 define void @test_vsoxseg6_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
3956 ; CHECK-LABEL: test_vsoxseg6_nxv8i8_nxv8i16:
3957 ; CHECK:       # %bb.0: # %entry
3958 ; CHECK-NEXT:    vmv1r.v v12, v8
3959 ; CHECK-NEXT:    vmv1r.v v13, v8
3960 ; CHECK-NEXT:    vmv1r.v v14, v8
3961 ; CHECK-NEXT:    vmv1r.v v15, v8
3962 ; CHECK-NEXT:    vmv1r.v v16, v8
3963 ; CHECK-NEXT:    vmv1r.v v17, v8
3964 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3965 ; CHECK-NEXT:    vsoxseg6ei16.v v12, (a0), v10
3966 ; CHECK-NEXT:    ret
3967 entry:
3968   tail call void @llvm.riscv.vsoxseg6.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
3969   ret void
3972 define void @test_vsoxseg6_mask_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
3973 ; CHECK-LABEL: test_vsoxseg6_mask_nxv8i8_nxv8i16:
3974 ; CHECK:       # %bb.0: # %entry
3975 ; CHECK-NEXT:    vmv1r.v v12, v8
3976 ; CHECK-NEXT:    vmv1r.v v13, v8
3977 ; CHECK-NEXT:    vmv1r.v v14, v8
3978 ; CHECK-NEXT:    vmv1r.v v15, v8
3979 ; CHECK-NEXT:    vmv1r.v v16, v8
3980 ; CHECK-NEXT:    vmv1r.v v17, v8
3981 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
3982 ; CHECK-NEXT:    vsoxseg6ei16.v v12, (a0), v10, v0.t
3983 ; CHECK-NEXT:    ret
3984 entry:
3985   tail call void @llvm.riscv.vsoxseg6.mask.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
3986   ret void
3989 declare void @llvm.riscv.vsoxseg6.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, i32)
3990 declare void @llvm.riscv.vsoxseg6.mask.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
3992 define void @test_vsoxseg6_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
3993 ; CHECK-LABEL: test_vsoxseg6_nxv8i8_nxv8i8:
3994 ; CHECK:       # %bb.0: # %entry
3995 ; CHECK-NEXT:    vmv1r.v v10, v8
3996 ; CHECK-NEXT:    vmv1r.v v11, v8
3997 ; CHECK-NEXT:    vmv1r.v v12, v8
3998 ; CHECK-NEXT:    vmv1r.v v13, v8
3999 ; CHECK-NEXT:    vmv1r.v v14, v8
4000 ; CHECK-NEXT:    vmv1r.v v15, v8
4001 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4002 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
4003 ; CHECK-NEXT:    ret
4004 entry:
4005   tail call void @llvm.riscv.vsoxseg6.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
4006   ret void
4009 define void @test_vsoxseg6_mask_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
4010 ; CHECK-LABEL: test_vsoxseg6_mask_nxv8i8_nxv8i8:
4011 ; CHECK:       # %bb.0: # %entry
4012 ; CHECK-NEXT:    vmv1r.v v10, v8
4013 ; CHECK-NEXT:    vmv1r.v v11, v8
4014 ; CHECK-NEXT:    vmv1r.v v12, v8
4015 ; CHECK-NEXT:    vmv1r.v v13, v8
4016 ; CHECK-NEXT:    vmv1r.v v14, v8
4017 ; CHECK-NEXT:    vmv1r.v v15, v8
4018 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4019 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
4020 ; CHECK-NEXT:    ret
4021 entry:
4022   tail call void @llvm.riscv.vsoxseg6.mask.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
4023   ret void
4026 declare void @llvm.riscv.vsoxseg6.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, i32)
4027 declare void @llvm.riscv.vsoxseg6.mask.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
4029 define void @test_vsoxseg6_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
4030 ; CHECK-LABEL: test_vsoxseg6_nxv8i8_nxv8i32:
4031 ; CHECK:       # %bb.0: # %entry
4032 ; CHECK-NEXT:    vmv1r.v v16, v8
4033 ; CHECK-NEXT:    vmv1r.v v17, v8
4034 ; CHECK-NEXT:    vmv1r.v v18, v8
4035 ; CHECK-NEXT:    vmv1r.v v19, v8
4036 ; CHECK-NEXT:    vmv1r.v v20, v8
4037 ; CHECK-NEXT:    vmv1r.v v21, v8
4038 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4039 ; CHECK-NEXT:    vsoxseg6ei32.v v16, (a0), v12
4040 ; CHECK-NEXT:    ret
4041 entry:
4042   tail call void @llvm.riscv.vsoxseg6.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
4043   ret void
4046 define void @test_vsoxseg6_mask_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
4047 ; CHECK-LABEL: test_vsoxseg6_mask_nxv8i8_nxv8i32:
4048 ; CHECK:       # %bb.0: # %entry
4049 ; CHECK-NEXT:    vmv1r.v v16, v8
4050 ; CHECK-NEXT:    vmv1r.v v17, v8
4051 ; CHECK-NEXT:    vmv1r.v v18, v8
4052 ; CHECK-NEXT:    vmv1r.v v19, v8
4053 ; CHECK-NEXT:    vmv1r.v v20, v8
4054 ; CHECK-NEXT:    vmv1r.v v21, v8
4055 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4056 ; CHECK-NEXT:    vsoxseg6ei32.v v16, (a0), v12, v0.t
4057 ; CHECK-NEXT:    ret
4058 entry:
4059   tail call void @llvm.riscv.vsoxseg6.mask.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
4060   ret void
4063 declare void @llvm.riscv.vsoxseg7.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, i32)
4064 declare void @llvm.riscv.vsoxseg7.mask.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
4066 define void @test_vsoxseg7_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
4067 ; CHECK-LABEL: test_vsoxseg7_nxv8i8_nxv8i16:
4068 ; CHECK:       # %bb.0: # %entry
4069 ; CHECK-NEXT:    vmv1r.v v12, v8
4070 ; CHECK-NEXT:    vmv1r.v v13, v8
4071 ; CHECK-NEXT:    vmv1r.v v14, v8
4072 ; CHECK-NEXT:    vmv1r.v v15, v8
4073 ; CHECK-NEXT:    vmv1r.v v16, v8
4074 ; CHECK-NEXT:    vmv1r.v v17, v8
4075 ; CHECK-NEXT:    vmv1r.v v18, v8
4076 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4077 ; CHECK-NEXT:    vsoxseg7ei16.v v12, (a0), v10
4078 ; CHECK-NEXT:    ret
4079 entry:
4080   tail call void @llvm.riscv.vsoxseg7.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
4081   ret void
4084 define void @test_vsoxseg7_mask_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
4085 ; CHECK-LABEL: test_vsoxseg7_mask_nxv8i8_nxv8i16:
4086 ; CHECK:       # %bb.0: # %entry
4087 ; CHECK-NEXT:    vmv1r.v v12, v8
4088 ; CHECK-NEXT:    vmv1r.v v13, v8
4089 ; CHECK-NEXT:    vmv1r.v v14, v8
4090 ; CHECK-NEXT:    vmv1r.v v15, v8
4091 ; CHECK-NEXT:    vmv1r.v v16, v8
4092 ; CHECK-NEXT:    vmv1r.v v17, v8
4093 ; CHECK-NEXT:    vmv1r.v v18, v8
4094 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4095 ; CHECK-NEXT:    vsoxseg7ei16.v v12, (a0), v10, v0.t
4096 ; CHECK-NEXT:    ret
4097 entry:
4098   tail call void @llvm.riscv.vsoxseg7.mask.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
4099   ret void
4102 declare void @llvm.riscv.vsoxseg7.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, i32)
4103 declare void @llvm.riscv.vsoxseg7.mask.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
4105 define void @test_vsoxseg7_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
4106 ; CHECK-LABEL: test_vsoxseg7_nxv8i8_nxv8i8:
4107 ; CHECK:       # %bb.0: # %entry
4108 ; CHECK-NEXT:    vmv1r.v v10, v8
4109 ; CHECK-NEXT:    vmv1r.v v11, v8
4110 ; CHECK-NEXT:    vmv1r.v v12, v8
4111 ; CHECK-NEXT:    vmv1r.v v13, v8
4112 ; CHECK-NEXT:    vmv1r.v v14, v8
4113 ; CHECK-NEXT:    vmv1r.v v15, v8
4114 ; CHECK-NEXT:    vmv1r.v v16, v8
4115 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4116 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
4117 ; CHECK-NEXT:    ret
4118 entry:
4119   tail call void @llvm.riscv.vsoxseg7.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
4120   ret void
4123 define void @test_vsoxseg7_mask_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
4124 ; CHECK-LABEL: test_vsoxseg7_mask_nxv8i8_nxv8i8:
4125 ; CHECK:       # %bb.0: # %entry
4126 ; CHECK-NEXT:    vmv1r.v v10, v8
4127 ; CHECK-NEXT:    vmv1r.v v11, v8
4128 ; CHECK-NEXT:    vmv1r.v v12, v8
4129 ; CHECK-NEXT:    vmv1r.v v13, v8
4130 ; CHECK-NEXT:    vmv1r.v v14, v8
4131 ; CHECK-NEXT:    vmv1r.v v15, v8
4132 ; CHECK-NEXT:    vmv1r.v v16, v8
4133 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4134 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
4135 ; CHECK-NEXT:    ret
4136 entry:
4137   tail call void @llvm.riscv.vsoxseg7.mask.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
4138   ret void
4141 declare void @llvm.riscv.vsoxseg7.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, i32)
4142 declare void @llvm.riscv.vsoxseg7.mask.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
4144 define void @test_vsoxseg7_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
4145 ; CHECK-LABEL: test_vsoxseg7_nxv8i8_nxv8i32:
4146 ; CHECK:       # %bb.0: # %entry
4147 ; CHECK-NEXT:    vmv1r.v v16, v8
4148 ; CHECK-NEXT:    vmv1r.v v17, v8
4149 ; CHECK-NEXT:    vmv1r.v v18, v8
4150 ; CHECK-NEXT:    vmv1r.v v19, v8
4151 ; CHECK-NEXT:    vmv1r.v v20, v8
4152 ; CHECK-NEXT:    vmv1r.v v21, v8
4153 ; CHECK-NEXT:    vmv1r.v v22, v8
4154 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4155 ; CHECK-NEXT:    vsoxseg7ei32.v v16, (a0), v12
4156 ; CHECK-NEXT:    ret
4157 entry:
4158   tail call void @llvm.riscv.vsoxseg7.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
4159   ret void
4162 define void @test_vsoxseg7_mask_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
4163 ; CHECK-LABEL: test_vsoxseg7_mask_nxv8i8_nxv8i32:
4164 ; CHECK:       # %bb.0: # %entry
4165 ; CHECK-NEXT:    vmv1r.v v16, v8
4166 ; CHECK-NEXT:    vmv1r.v v17, v8
4167 ; CHECK-NEXT:    vmv1r.v v18, v8
4168 ; CHECK-NEXT:    vmv1r.v v19, v8
4169 ; CHECK-NEXT:    vmv1r.v v20, v8
4170 ; CHECK-NEXT:    vmv1r.v v21, v8
4171 ; CHECK-NEXT:    vmv1r.v v22, v8
4172 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4173 ; CHECK-NEXT:    vsoxseg7ei32.v v16, (a0), v12, v0.t
4174 ; CHECK-NEXT:    ret
4175 entry:
4176   tail call void @llvm.riscv.vsoxseg7.mask.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
4177   ret void
4180 declare void @llvm.riscv.vsoxseg8.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, i32)
4181 declare void @llvm.riscv.vsoxseg8.mask.nxv8i8.nxv8i16(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
4183 define void @test_vsoxseg8_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
4184 ; CHECK-LABEL: test_vsoxseg8_nxv8i8_nxv8i16:
4185 ; CHECK:       # %bb.0: # %entry
4186 ; CHECK-NEXT:    vmv1r.v v12, v8
4187 ; CHECK-NEXT:    vmv1r.v v13, v8
4188 ; CHECK-NEXT:    vmv1r.v v14, v8
4189 ; CHECK-NEXT:    vmv1r.v v15, v8
4190 ; CHECK-NEXT:    vmv1r.v v16, v8
4191 ; CHECK-NEXT:    vmv1r.v v17, v8
4192 ; CHECK-NEXT:    vmv1r.v v18, v8
4193 ; CHECK-NEXT:    vmv1r.v v19, v8
4194 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4195 ; CHECK-NEXT:    vsoxseg8ei16.v v12, (a0), v10
4196 ; CHECK-NEXT:    ret
4197 entry:
4198   tail call void @llvm.riscv.vsoxseg8.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
4199   ret void
4202 define void @test_vsoxseg8_mask_nxv8i8_nxv8i16(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
4203 ; CHECK-LABEL: test_vsoxseg8_mask_nxv8i8_nxv8i16:
4204 ; CHECK:       # %bb.0: # %entry
4205 ; CHECK-NEXT:    vmv1r.v v12, v8
4206 ; CHECK-NEXT:    vmv1r.v v13, v8
4207 ; CHECK-NEXT:    vmv1r.v v14, v8
4208 ; CHECK-NEXT:    vmv1r.v v15, v8
4209 ; CHECK-NEXT:    vmv1r.v v16, v8
4210 ; CHECK-NEXT:    vmv1r.v v17, v8
4211 ; CHECK-NEXT:    vmv1r.v v18, v8
4212 ; CHECK-NEXT:    vmv1r.v v19, v8
4213 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4214 ; CHECK-NEXT:    vsoxseg8ei16.v v12, (a0), v10, v0.t
4215 ; CHECK-NEXT:    ret
4216 entry:
4217   tail call void @llvm.riscv.vsoxseg8.mask.nxv8i8.nxv8i16(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
4218   ret void
4221 declare void @llvm.riscv.vsoxseg8.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, i32)
4222 declare void @llvm.riscv.vsoxseg8.mask.nxv8i8.nxv8i8(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
4224 define void @test_vsoxseg8_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
4225 ; CHECK-LABEL: test_vsoxseg8_nxv8i8_nxv8i8:
4226 ; CHECK:       # %bb.0: # %entry
4227 ; CHECK-NEXT:    vmv1r.v v10, v8
4228 ; CHECK-NEXT:    vmv1r.v v11, v8
4229 ; CHECK-NEXT:    vmv1r.v v12, v8
4230 ; CHECK-NEXT:    vmv1r.v v13, v8
4231 ; CHECK-NEXT:    vmv1r.v v14, v8
4232 ; CHECK-NEXT:    vmv1r.v v15, v8
4233 ; CHECK-NEXT:    vmv1r.v v16, v8
4234 ; CHECK-NEXT:    vmv1r.v v17, v8
4235 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4236 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
4237 ; CHECK-NEXT:    ret
4238 entry:
4239   tail call void @llvm.riscv.vsoxseg8.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
4240   ret void
4243 define void @test_vsoxseg8_mask_nxv8i8_nxv8i8(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
4244 ; CHECK-LABEL: test_vsoxseg8_mask_nxv8i8_nxv8i8:
4245 ; CHECK:       # %bb.0: # %entry
4246 ; CHECK-NEXT:    vmv1r.v v10, v8
4247 ; CHECK-NEXT:    vmv1r.v v11, v8
4248 ; CHECK-NEXT:    vmv1r.v v12, v8
4249 ; CHECK-NEXT:    vmv1r.v v13, v8
4250 ; CHECK-NEXT:    vmv1r.v v14, v8
4251 ; CHECK-NEXT:    vmv1r.v v15, v8
4252 ; CHECK-NEXT:    vmv1r.v v16, v8
4253 ; CHECK-NEXT:    vmv1r.v v17, v8
4254 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4255 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
4256 ; CHECK-NEXT:    ret
4257 entry:
4258   tail call void @llvm.riscv.vsoxseg8.mask.nxv8i8.nxv8i8(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
4259   ret void
4262 declare void @llvm.riscv.vsoxseg8.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, i32)
4263 declare void @llvm.riscv.vsoxseg8.mask.nxv8i8.nxv8i32(<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>,<vscale x 8 x i8>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
4265 define void @test_vsoxseg8_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
4266 ; CHECK-LABEL: test_vsoxseg8_nxv8i8_nxv8i32:
4267 ; CHECK:       # %bb.0: # %entry
4268 ; CHECK-NEXT:    vmv1r.v v16, v8
4269 ; CHECK-NEXT:    vmv1r.v v17, v8
4270 ; CHECK-NEXT:    vmv1r.v v18, v8
4271 ; CHECK-NEXT:    vmv1r.v v19, v8
4272 ; CHECK-NEXT:    vmv1r.v v20, v8
4273 ; CHECK-NEXT:    vmv1r.v v21, v8
4274 ; CHECK-NEXT:    vmv1r.v v22, v8
4275 ; CHECK-NEXT:    vmv1r.v v23, v8
4276 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4277 ; CHECK-NEXT:    vsoxseg8ei32.v v16, (a0), v12
4278 ; CHECK-NEXT:    ret
4279 entry:
4280   tail call void @llvm.riscv.vsoxseg8.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
4281   ret void
4284 define void @test_vsoxseg8_mask_nxv8i8_nxv8i32(<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
4285 ; CHECK-LABEL: test_vsoxseg8_mask_nxv8i8_nxv8i32:
4286 ; CHECK:       # %bb.0: # %entry
4287 ; CHECK-NEXT:    vmv1r.v v16, v8
4288 ; CHECK-NEXT:    vmv1r.v v17, v8
4289 ; CHECK-NEXT:    vmv1r.v v18, v8
4290 ; CHECK-NEXT:    vmv1r.v v19, v8
4291 ; CHECK-NEXT:    vmv1r.v v20, v8
4292 ; CHECK-NEXT:    vmv1r.v v21, v8
4293 ; CHECK-NEXT:    vmv1r.v v22, v8
4294 ; CHECK-NEXT:    vmv1r.v v23, v8
4295 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
4296 ; CHECK-NEXT:    vsoxseg8ei32.v v16, (a0), v12, v0.t
4297 ; CHECK-NEXT:    ret
4298 entry:
4299   tail call void @llvm.riscv.vsoxseg8.mask.nxv8i8.nxv8i32(<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val,<vscale x 8 x i8> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
4300   ret void
4303 declare void @llvm.riscv.vsoxseg2.nxv8i32.nxv8i16(<vscale x 8 x i32>,<vscale x 8 x i32>, ptr, <vscale x 8 x i16>, i32)
4304 declare void @llvm.riscv.vsoxseg2.mask.nxv8i32.nxv8i16(<vscale x 8 x i32>,<vscale x 8 x i32>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
4306 define void @test_vsoxseg2_nxv8i32_nxv8i16(<vscale x 8 x i32> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
4307 ; CHECK-LABEL: test_vsoxseg2_nxv8i32_nxv8i16:
4308 ; CHECK:       # %bb.0: # %entry
4309 ; CHECK-NEXT:    vmv2r.v v16, v12
4310 ; CHECK-NEXT:    vmv4r.v v12, v8
4311 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
4312 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v16
4313 ; CHECK-NEXT:    ret
4314 entry:
4315   tail call void @llvm.riscv.vsoxseg2.nxv8i32.nxv8i16(<vscale x 8 x i32> %val,<vscale x 8 x i32> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
4316   ret void
4319 define void @test_vsoxseg2_mask_nxv8i32_nxv8i16(<vscale x 8 x i32> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
4320 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8i32_nxv8i16:
4321 ; CHECK:       # %bb.0: # %entry
4322 ; CHECK-NEXT:    vmv2r.v v16, v12
4323 ; CHECK-NEXT:    vmv4r.v v12, v8
4324 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
4325 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v16, v0.t
4326 ; CHECK-NEXT:    ret
4327 entry:
4328   tail call void @llvm.riscv.vsoxseg2.mask.nxv8i32.nxv8i16(<vscale x 8 x i32> %val,<vscale x 8 x i32> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
4329   ret void
4332 declare void @llvm.riscv.vsoxseg2.nxv8i32.nxv8i8(<vscale x 8 x i32>,<vscale x 8 x i32>, ptr, <vscale x 8 x i8>, i32)
4333 declare void @llvm.riscv.vsoxseg2.mask.nxv8i32.nxv8i8(<vscale x 8 x i32>,<vscale x 8 x i32>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
4335 define void @test_vsoxseg2_nxv8i32_nxv8i8(<vscale x 8 x i32> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
4336 ; CHECK-LABEL: test_vsoxseg2_nxv8i32_nxv8i8:
4337 ; CHECK:       # %bb.0: # %entry
4338 ; CHECK-NEXT:    vmv1r.v v16, v12
4339 ; CHECK-NEXT:    vmv4r.v v12, v8
4340 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
4341 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v16
4342 ; CHECK-NEXT:    ret
4343 entry:
4344   tail call void @llvm.riscv.vsoxseg2.nxv8i32.nxv8i8(<vscale x 8 x i32> %val,<vscale x 8 x i32> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
4345   ret void
4348 define void @test_vsoxseg2_mask_nxv8i32_nxv8i8(<vscale x 8 x i32> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
4349 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8i32_nxv8i8:
4350 ; CHECK:       # %bb.0: # %entry
4351 ; CHECK-NEXT:    vmv1r.v v16, v12
4352 ; CHECK-NEXT:    vmv4r.v v12, v8
4353 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
4354 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v16, v0.t
4355 ; CHECK-NEXT:    ret
4356 entry:
4357   tail call void @llvm.riscv.vsoxseg2.mask.nxv8i32.nxv8i8(<vscale x 8 x i32> %val,<vscale x 8 x i32> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
4358   ret void
4361 declare void @llvm.riscv.vsoxseg2.nxv8i32.nxv8i32(<vscale x 8 x i32>,<vscale x 8 x i32>, ptr, <vscale x 8 x i32>, i32)
4362 declare void @llvm.riscv.vsoxseg2.mask.nxv8i32.nxv8i32(<vscale x 8 x i32>,<vscale x 8 x i32>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
4364 define void @test_vsoxseg2_nxv8i32_nxv8i32(<vscale x 8 x i32> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
4365 ; CHECK-LABEL: test_vsoxseg2_nxv8i32_nxv8i32:
4366 ; CHECK:       # %bb.0: # %entry
4367 ; CHECK-NEXT:    vmv4r.v v16, v12
4368 ; CHECK-NEXT:    vmv4r.v v12, v8
4369 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
4370 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v16
4371 ; CHECK-NEXT:    ret
4372 entry:
4373   tail call void @llvm.riscv.vsoxseg2.nxv8i32.nxv8i32(<vscale x 8 x i32> %val,<vscale x 8 x i32> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
4374   ret void
4377 define void @test_vsoxseg2_mask_nxv8i32_nxv8i32(<vscale x 8 x i32> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
4378 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8i32_nxv8i32:
4379 ; CHECK:       # %bb.0: # %entry
4380 ; CHECK-NEXT:    vmv4r.v v16, v12
4381 ; CHECK-NEXT:    vmv4r.v v12, v8
4382 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
4383 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v16, v0.t
4384 ; CHECK-NEXT:    ret
4385 entry:
4386   tail call void @llvm.riscv.vsoxseg2.mask.nxv8i32.nxv8i32(<vscale x 8 x i32> %val,<vscale x 8 x i32> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
4387   ret void
4390 declare void @llvm.riscv.vsoxseg2.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, i32)
4391 declare void @llvm.riscv.vsoxseg2.mask.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
4393 define void @test_vsoxseg2_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
4394 ; CHECK-LABEL: test_vsoxseg2_nxv4i8_nxv4i16:
4395 ; CHECK:       # %bb.0: # %entry
4396 ; CHECK-NEXT:    vmv1r.v v10, v9
4397 ; CHECK-NEXT:    vmv1r.v v9, v8
4398 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4399 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
4400 ; CHECK-NEXT:    ret
4401 entry:
4402   tail call void @llvm.riscv.vsoxseg2.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
4403   ret void
4406 define void @test_vsoxseg2_mask_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4407 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4i8_nxv4i16:
4408 ; CHECK:       # %bb.0: # %entry
4409 ; CHECK-NEXT:    vmv1r.v v10, v9
4410 ; CHECK-NEXT:    vmv1r.v v9, v8
4411 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4412 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
4413 ; CHECK-NEXT:    ret
4414 entry:
4415   tail call void @llvm.riscv.vsoxseg2.mask.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
4416   ret void
4419 declare void @llvm.riscv.vsoxseg2.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, i32)
4420 declare void @llvm.riscv.vsoxseg2.mask.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
4422 define void @test_vsoxseg2_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
4423 ; CHECK-LABEL: test_vsoxseg2_nxv4i8_nxv4i8:
4424 ; CHECK:       # %bb.0: # %entry
4425 ; CHECK-NEXT:    vmv1r.v v10, v9
4426 ; CHECK-NEXT:    vmv1r.v v9, v8
4427 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4428 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
4429 ; CHECK-NEXT:    ret
4430 entry:
4431   tail call void @llvm.riscv.vsoxseg2.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
4432   ret void
4435 define void @test_vsoxseg2_mask_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4436 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4i8_nxv4i8:
4437 ; CHECK:       # %bb.0: # %entry
4438 ; CHECK-NEXT:    vmv1r.v v10, v9
4439 ; CHECK-NEXT:    vmv1r.v v9, v8
4440 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4441 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
4442 ; CHECK-NEXT:    ret
4443 entry:
4444   tail call void @llvm.riscv.vsoxseg2.mask.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
4445   ret void
4448 declare void @llvm.riscv.vsoxseg2.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, i32)
4449 declare void @llvm.riscv.vsoxseg2.mask.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
4451 define void @test_vsoxseg2_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
4452 ; CHECK-LABEL: test_vsoxseg2_nxv4i8_nxv4i32:
4453 ; CHECK:       # %bb.0: # %entry
4454 ; CHECK-NEXT:    vmv1r.v v9, v8
4455 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4456 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
4457 ; CHECK-NEXT:    ret
4458 entry:
4459   tail call void @llvm.riscv.vsoxseg2.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
4460   ret void
4463 define void @test_vsoxseg2_mask_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4464 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4i8_nxv4i32:
4465 ; CHECK:       # %bb.0: # %entry
4466 ; CHECK-NEXT:    vmv1r.v v9, v8
4467 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4468 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
4469 ; CHECK-NEXT:    ret
4470 entry:
4471   tail call void @llvm.riscv.vsoxseg2.mask.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
4472   ret void
4475 declare void @llvm.riscv.vsoxseg3.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, i32)
4476 declare void @llvm.riscv.vsoxseg3.mask.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
4478 define void @test_vsoxseg3_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
4479 ; CHECK-LABEL: test_vsoxseg3_nxv4i8_nxv4i16:
4480 ; CHECK:       # %bb.0: # %entry
4481 ; CHECK-NEXT:    vmv1r.v v10, v8
4482 ; CHECK-NEXT:    vmv1r.v v11, v8
4483 ; CHECK-NEXT:    vmv1r.v v12, v8
4484 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4485 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
4486 ; CHECK-NEXT:    ret
4487 entry:
4488   tail call void @llvm.riscv.vsoxseg3.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
4489   ret void
4492 define void @test_vsoxseg3_mask_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4493 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4i8_nxv4i16:
4494 ; CHECK:       # %bb.0: # %entry
4495 ; CHECK-NEXT:    vmv1r.v v10, v8
4496 ; CHECK-NEXT:    vmv1r.v v11, v8
4497 ; CHECK-NEXT:    vmv1r.v v12, v8
4498 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4499 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
4500 ; CHECK-NEXT:    ret
4501 entry:
4502   tail call void @llvm.riscv.vsoxseg3.mask.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
4503   ret void
4506 declare void @llvm.riscv.vsoxseg3.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, i32)
4507 declare void @llvm.riscv.vsoxseg3.mask.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
4509 define void @test_vsoxseg3_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
4510 ; CHECK-LABEL: test_vsoxseg3_nxv4i8_nxv4i8:
4511 ; CHECK:       # %bb.0: # %entry
4512 ; CHECK-NEXT:    vmv1r.v v10, v8
4513 ; CHECK-NEXT:    vmv1r.v v11, v8
4514 ; CHECK-NEXT:    vmv1r.v v12, v8
4515 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4516 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
4517 ; CHECK-NEXT:    ret
4518 entry:
4519   tail call void @llvm.riscv.vsoxseg3.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
4520   ret void
4523 define void @test_vsoxseg3_mask_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4524 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4i8_nxv4i8:
4525 ; CHECK:       # %bb.0: # %entry
4526 ; CHECK-NEXT:    vmv1r.v v10, v8
4527 ; CHECK-NEXT:    vmv1r.v v11, v8
4528 ; CHECK-NEXT:    vmv1r.v v12, v8
4529 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4530 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
4531 ; CHECK-NEXT:    ret
4532 entry:
4533   tail call void @llvm.riscv.vsoxseg3.mask.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
4534   ret void
4537 declare void @llvm.riscv.vsoxseg3.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, i32)
4538 declare void @llvm.riscv.vsoxseg3.mask.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
4540 define void @test_vsoxseg3_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
4541 ; CHECK-LABEL: test_vsoxseg3_nxv4i8_nxv4i32:
4542 ; CHECK:       # %bb.0: # %entry
4543 ; CHECK-NEXT:    vmv1r.v v9, v8
4544 ; CHECK-NEXT:    vmv2r.v v12, v10
4545 ; CHECK-NEXT:    vmv1r.v v10, v8
4546 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4547 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v12
4548 ; CHECK-NEXT:    ret
4549 entry:
4550   tail call void @llvm.riscv.vsoxseg3.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
4551   ret void
4554 define void @test_vsoxseg3_mask_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4555 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4i8_nxv4i32:
4556 ; CHECK:       # %bb.0: # %entry
4557 ; CHECK-NEXT:    vmv1r.v v9, v8
4558 ; CHECK-NEXT:    vmv2r.v v12, v10
4559 ; CHECK-NEXT:    vmv1r.v v10, v8
4560 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4561 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v12, v0.t
4562 ; CHECK-NEXT:    ret
4563 entry:
4564   tail call void @llvm.riscv.vsoxseg3.mask.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
4565   ret void
4568 declare void @llvm.riscv.vsoxseg4.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, i32)
4569 declare void @llvm.riscv.vsoxseg4.mask.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
4571 define void @test_vsoxseg4_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
4572 ; CHECK-LABEL: test_vsoxseg4_nxv4i8_nxv4i16:
4573 ; CHECK:       # %bb.0: # %entry
4574 ; CHECK-NEXT:    vmv1r.v v10, v8
4575 ; CHECK-NEXT:    vmv1r.v v11, v8
4576 ; CHECK-NEXT:    vmv1r.v v12, v8
4577 ; CHECK-NEXT:    vmv1r.v v13, v8
4578 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4579 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
4580 ; CHECK-NEXT:    ret
4581 entry:
4582   tail call void @llvm.riscv.vsoxseg4.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
4583   ret void
4586 define void @test_vsoxseg4_mask_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4587 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4i8_nxv4i16:
4588 ; CHECK:       # %bb.0: # %entry
4589 ; CHECK-NEXT:    vmv1r.v v10, v8
4590 ; CHECK-NEXT:    vmv1r.v v11, v8
4591 ; CHECK-NEXT:    vmv1r.v v12, v8
4592 ; CHECK-NEXT:    vmv1r.v v13, v8
4593 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4594 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
4595 ; CHECK-NEXT:    ret
4596 entry:
4597   tail call void @llvm.riscv.vsoxseg4.mask.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
4598   ret void
4601 declare void @llvm.riscv.vsoxseg4.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, i32)
4602 declare void @llvm.riscv.vsoxseg4.mask.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
4604 define void @test_vsoxseg4_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
4605 ; CHECK-LABEL: test_vsoxseg4_nxv4i8_nxv4i8:
4606 ; CHECK:       # %bb.0: # %entry
4607 ; CHECK-NEXT:    vmv1r.v v10, v8
4608 ; CHECK-NEXT:    vmv1r.v v11, v8
4609 ; CHECK-NEXT:    vmv1r.v v12, v8
4610 ; CHECK-NEXT:    vmv1r.v v13, v8
4611 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4612 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
4613 ; CHECK-NEXT:    ret
4614 entry:
4615   tail call void @llvm.riscv.vsoxseg4.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
4616   ret void
4619 define void @test_vsoxseg4_mask_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4620 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4i8_nxv4i8:
4621 ; CHECK:       # %bb.0: # %entry
4622 ; CHECK-NEXT:    vmv1r.v v10, v8
4623 ; CHECK-NEXT:    vmv1r.v v11, v8
4624 ; CHECK-NEXT:    vmv1r.v v12, v8
4625 ; CHECK-NEXT:    vmv1r.v v13, v8
4626 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4627 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
4628 ; CHECK-NEXT:    ret
4629 entry:
4630   tail call void @llvm.riscv.vsoxseg4.mask.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
4631   ret void
4634 declare void @llvm.riscv.vsoxseg4.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, i32)
4635 declare void @llvm.riscv.vsoxseg4.mask.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
4637 define void @test_vsoxseg4_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
4638 ; CHECK-LABEL: test_vsoxseg4_nxv4i8_nxv4i32:
4639 ; CHECK:       # %bb.0: # %entry
4640 ; CHECK-NEXT:    vmv1r.v v12, v8
4641 ; CHECK-NEXT:    vmv1r.v v13, v8
4642 ; CHECK-NEXT:    vmv1r.v v14, v8
4643 ; CHECK-NEXT:    vmv1r.v v15, v8
4644 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4645 ; CHECK-NEXT:    vsoxseg4ei32.v v12, (a0), v10
4646 ; CHECK-NEXT:    ret
4647 entry:
4648   tail call void @llvm.riscv.vsoxseg4.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
4649   ret void
4652 define void @test_vsoxseg4_mask_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4653 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4i8_nxv4i32:
4654 ; CHECK:       # %bb.0: # %entry
4655 ; CHECK-NEXT:    vmv1r.v v12, v8
4656 ; CHECK-NEXT:    vmv1r.v v13, v8
4657 ; CHECK-NEXT:    vmv1r.v v14, v8
4658 ; CHECK-NEXT:    vmv1r.v v15, v8
4659 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4660 ; CHECK-NEXT:    vsoxseg4ei32.v v12, (a0), v10, v0.t
4661 ; CHECK-NEXT:    ret
4662 entry:
4663   tail call void @llvm.riscv.vsoxseg4.mask.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
4664   ret void
4667 declare void @llvm.riscv.vsoxseg5.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, i32)
4668 declare void @llvm.riscv.vsoxseg5.mask.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
4670 define void @test_vsoxseg5_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
4671 ; CHECK-LABEL: test_vsoxseg5_nxv4i8_nxv4i16:
4672 ; CHECK:       # %bb.0: # %entry
4673 ; CHECK-NEXT:    vmv1r.v v10, v8
4674 ; CHECK-NEXT:    vmv1r.v v11, v8
4675 ; CHECK-NEXT:    vmv1r.v v12, v8
4676 ; CHECK-NEXT:    vmv1r.v v13, v8
4677 ; CHECK-NEXT:    vmv1r.v v14, v8
4678 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4679 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
4680 ; CHECK-NEXT:    ret
4681 entry:
4682   tail call void @llvm.riscv.vsoxseg5.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
4683   ret void
4686 define void @test_vsoxseg5_mask_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4687 ; CHECK-LABEL: test_vsoxseg5_mask_nxv4i8_nxv4i16:
4688 ; CHECK:       # %bb.0: # %entry
4689 ; CHECK-NEXT:    vmv1r.v v10, v8
4690 ; CHECK-NEXT:    vmv1r.v v11, v8
4691 ; CHECK-NEXT:    vmv1r.v v12, v8
4692 ; CHECK-NEXT:    vmv1r.v v13, v8
4693 ; CHECK-NEXT:    vmv1r.v v14, v8
4694 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4695 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
4696 ; CHECK-NEXT:    ret
4697 entry:
4698   tail call void @llvm.riscv.vsoxseg5.mask.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
4699   ret void
4702 declare void @llvm.riscv.vsoxseg5.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, i32)
4703 declare void @llvm.riscv.vsoxseg5.mask.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
4705 define void @test_vsoxseg5_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
4706 ; CHECK-LABEL: test_vsoxseg5_nxv4i8_nxv4i8:
4707 ; CHECK:       # %bb.0: # %entry
4708 ; CHECK-NEXT:    vmv1r.v v10, v8
4709 ; CHECK-NEXT:    vmv1r.v v11, v8
4710 ; CHECK-NEXT:    vmv1r.v v12, v8
4711 ; CHECK-NEXT:    vmv1r.v v13, v8
4712 ; CHECK-NEXT:    vmv1r.v v14, v8
4713 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4714 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
4715 ; CHECK-NEXT:    ret
4716 entry:
4717   tail call void @llvm.riscv.vsoxseg5.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
4718   ret void
4721 define void @test_vsoxseg5_mask_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4722 ; CHECK-LABEL: test_vsoxseg5_mask_nxv4i8_nxv4i8:
4723 ; CHECK:       # %bb.0: # %entry
4724 ; CHECK-NEXT:    vmv1r.v v10, v8
4725 ; CHECK-NEXT:    vmv1r.v v11, v8
4726 ; CHECK-NEXT:    vmv1r.v v12, v8
4727 ; CHECK-NEXT:    vmv1r.v v13, v8
4728 ; CHECK-NEXT:    vmv1r.v v14, v8
4729 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4730 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
4731 ; CHECK-NEXT:    ret
4732 entry:
4733   tail call void @llvm.riscv.vsoxseg5.mask.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
4734   ret void
4737 declare void @llvm.riscv.vsoxseg5.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, i32)
4738 declare void @llvm.riscv.vsoxseg5.mask.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
4740 define void @test_vsoxseg5_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
4741 ; CHECK-LABEL: test_vsoxseg5_nxv4i8_nxv4i32:
4742 ; CHECK:       # %bb.0: # %entry
4743 ; CHECK-NEXT:    vmv1r.v v12, v8
4744 ; CHECK-NEXT:    vmv1r.v v13, v8
4745 ; CHECK-NEXT:    vmv1r.v v14, v8
4746 ; CHECK-NEXT:    vmv1r.v v15, v8
4747 ; CHECK-NEXT:    vmv1r.v v16, v8
4748 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4749 ; CHECK-NEXT:    vsoxseg5ei32.v v12, (a0), v10
4750 ; CHECK-NEXT:    ret
4751 entry:
4752   tail call void @llvm.riscv.vsoxseg5.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
4753   ret void
4756 define void @test_vsoxseg5_mask_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4757 ; CHECK-LABEL: test_vsoxseg5_mask_nxv4i8_nxv4i32:
4758 ; CHECK:       # %bb.0: # %entry
4759 ; CHECK-NEXT:    vmv1r.v v12, v8
4760 ; CHECK-NEXT:    vmv1r.v v13, v8
4761 ; CHECK-NEXT:    vmv1r.v v14, v8
4762 ; CHECK-NEXT:    vmv1r.v v15, v8
4763 ; CHECK-NEXT:    vmv1r.v v16, v8
4764 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4765 ; CHECK-NEXT:    vsoxseg5ei32.v v12, (a0), v10, v0.t
4766 ; CHECK-NEXT:    ret
4767 entry:
4768   tail call void @llvm.riscv.vsoxseg5.mask.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
4769   ret void
4772 declare void @llvm.riscv.vsoxseg6.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, i32)
4773 declare void @llvm.riscv.vsoxseg6.mask.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
4775 define void @test_vsoxseg6_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
4776 ; CHECK-LABEL: test_vsoxseg6_nxv4i8_nxv4i16:
4777 ; CHECK:       # %bb.0: # %entry
4778 ; CHECK-NEXT:    vmv1r.v v10, v8
4779 ; CHECK-NEXT:    vmv1r.v v11, v8
4780 ; CHECK-NEXT:    vmv1r.v v12, v8
4781 ; CHECK-NEXT:    vmv1r.v v13, v8
4782 ; CHECK-NEXT:    vmv1r.v v14, v8
4783 ; CHECK-NEXT:    vmv1r.v v15, v8
4784 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4785 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
4786 ; CHECK-NEXT:    ret
4787 entry:
4788   tail call void @llvm.riscv.vsoxseg6.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
4789   ret void
4792 define void @test_vsoxseg6_mask_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4793 ; CHECK-LABEL: test_vsoxseg6_mask_nxv4i8_nxv4i16:
4794 ; CHECK:       # %bb.0: # %entry
4795 ; CHECK-NEXT:    vmv1r.v v10, v8
4796 ; CHECK-NEXT:    vmv1r.v v11, v8
4797 ; CHECK-NEXT:    vmv1r.v v12, v8
4798 ; CHECK-NEXT:    vmv1r.v v13, v8
4799 ; CHECK-NEXT:    vmv1r.v v14, v8
4800 ; CHECK-NEXT:    vmv1r.v v15, v8
4801 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4802 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
4803 ; CHECK-NEXT:    ret
4804 entry:
4805   tail call void @llvm.riscv.vsoxseg6.mask.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
4806   ret void
4809 declare void @llvm.riscv.vsoxseg6.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, i32)
4810 declare void @llvm.riscv.vsoxseg6.mask.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
4812 define void @test_vsoxseg6_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
4813 ; CHECK-LABEL: test_vsoxseg6_nxv4i8_nxv4i8:
4814 ; CHECK:       # %bb.0: # %entry
4815 ; CHECK-NEXT:    vmv1r.v v10, v8
4816 ; CHECK-NEXT:    vmv1r.v v11, v8
4817 ; CHECK-NEXT:    vmv1r.v v12, v8
4818 ; CHECK-NEXT:    vmv1r.v v13, v8
4819 ; CHECK-NEXT:    vmv1r.v v14, v8
4820 ; CHECK-NEXT:    vmv1r.v v15, v8
4821 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4822 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
4823 ; CHECK-NEXT:    ret
4824 entry:
4825   tail call void @llvm.riscv.vsoxseg6.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
4826   ret void
4829 define void @test_vsoxseg6_mask_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4830 ; CHECK-LABEL: test_vsoxseg6_mask_nxv4i8_nxv4i8:
4831 ; CHECK:       # %bb.0: # %entry
4832 ; CHECK-NEXT:    vmv1r.v v10, v8
4833 ; CHECK-NEXT:    vmv1r.v v11, v8
4834 ; CHECK-NEXT:    vmv1r.v v12, v8
4835 ; CHECK-NEXT:    vmv1r.v v13, v8
4836 ; CHECK-NEXT:    vmv1r.v v14, v8
4837 ; CHECK-NEXT:    vmv1r.v v15, v8
4838 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4839 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
4840 ; CHECK-NEXT:    ret
4841 entry:
4842   tail call void @llvm.riscv.vsoxseg6.mask.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
4843   ret void
4846 declare void @llvm.riscv.vsoxseg6.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, i32)
4847 declare void @llvm.riscv.vsoxseg6.mask.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
4849 define void @test_vsoxseg6_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
4850 ; CHECK-LABEL: test_vsoxseg6_nxv4i8_nxv4i32:
4851 ; CHECK:       # %bb.0: # %entry
4852 ; CHECK-NEXT:    vmv1r.v v12, v8
4853 ; CHECK-NEXT:    vmv1r.v v13, v8
4854 ; CHECK-NEXT:    vmv1r.v v14, v8
4855 ; CHECK-NEXT:    vmv1r.v v15, v8
4856 ; CHECK-NEXT:    vmv1r.v v16, v8
4857 ; CHECK-NEXT:    vmv1r.v v17, v8
4858 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4859 ; CHECK-NEXT:    vsoxseg6ei32.v v12, (a0), v10
4860 ; CHECK-NEXT:    ret
4861 entry:
4862   tail call void @llvm.riscv.vsoxseg6.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
4863   ret void
4866 define void @test_vsoxseg6_mask_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4867 ; CHECK-LABEL: test_vsoxseg6_mask_nxv4i8_nxv4i32:
4868 ; CHECK:       # %bb.0: # %entry
4869 ; CHECK-NEXT:    vmv1r.v v12, v8
4870 ; CHECK-NEXT:    vmv1r.v v13, v8
4871 ; CHECK-NEXT:    vmv1r.v v14, v8
4872 ; CHECK-NEXT:    vmv1r.v v15, v8
4873 ; CHECK-NEXT:    vmv1r.v v16, v8
4874 ; CHECK-NEXT:    vmv1r.v v17, v8
4875 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4876 ; CHECK-NEXT:    vsoxseg6ei32.v v12, (a0), v10, v0.t
4877 ; CHECK-NEXT:    ret
4878 entry:
4879   tail call void @llvm.riscv.vsoxseg6.mask.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
4880   ret void
4883 declare void @llvm.riscv.vsoxseg7.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, i32)
4884 declare void @llvm.riscv.vsoxseg7.mask.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
4886 define void @test_vsoxseg7_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
4887 ; CHECK-LABEL: test_vsoxseg7_nxv4i8_nxv4i16:
4888 ; CHECK:       # %bb.0: # %entry
4889 ; CHECK-NEXT:    vmv1r.v v10, v8
4890 ; CHECK-NEXT:    vmv1r.v v11, v8
4891 ; CHECK-NEXT:    vmv1r.v v12, v8
4892 ; CHECK-NEXT:    vmv1r.v v13, v8
4893 ; CHECK-NEXT:    vmv1r.v v14, v8
4894 ; CHECK-NEXT:    vmv1r.v v15, v8
4895 ; CHECK-NEXT:    vmv1r.v v16, v8
4896 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4897 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
4898 ; CHECK-NEXT:    ret
4899 entry:
4900   tail call void @llvm.riscv.vsoxseg7.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
4901   ret void
4904 define void @test_vsoxseg7_mask_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4905 ; CHECK-LABEL: test_vsoxseg7_mask_nxv4i8_nxv4i16:
4906 ; CHECK:       # %bb.0: # %entry
4907 ; CHECK-NEXT:    vmv1r.v v10, v8
4908 ; CHECK-NEXT:    vmv1r.v v11, v8
4909 ; CHECK-NEXT:    vmv1r.v v12, v8
4910 ; CHECK-NEXT:    vmv1r.v v13, v8
4911 ; CHECK-NEXT:    vmv1r.v v14, v8
4912 ; CHECK-NEXT:    vmv1r.v v15, v8
4913 ; CHECK-NEXT:    vmv1r.v v16, v8
4914 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4915 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
4916 ; CHECK-NEXT:    ret
4917 entry:
4918   tail call void @llvm.riscv.vsoxseg7.mask.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
4919   ret void
4922 declare void @llvm.riscv.vsoxseg7.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, i32)
4923 declare void @llvm.riscv.vsoxseg7.mask.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
4925 define void @test_vsoxseg7_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
4926 ; CHECK-LABEL: test_vsoxseg7_nxv4i8_nxv4i8:
4927 ; CHECK:       # %bb.0: # %entry
4928 ; CHECK-NEXT:    vmv1r.v v10, v8
4929 ; CHECK-NEXT:    vmv1r.v v11, v8
4930 ; CHECK-NEXT:    vmv1r.v v12, v8
4931 ; CHECK-NEXT:    vmv1r.v v13, v8
4932 ; CHECK-NEXT:    vmv1r.v v14, v8
4933 ; CHECK-NEXT:    vmv1r.v v15, v8
4934 ; CHECK-NEXT:    vmv1r.v v16, v8
4935 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4936 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
4937 ; CHECK-NEXT:    ret
4938 entry:
4939   tail call void @llvm.riscv.vsoxseg7.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
4940   ret void
4943 define void @test_vsoxseg7_mask_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4944 ; CHECK-LABEL: test_vsoxseg7_mask_nxv4i8_nxv4i8:
4945 ; CHECK:       # %bb.0: # %entry
4946 ; CHECK-NEXT:    vmv1r.v v10, v8
4947 ; CHECK-NEXT:    vmv1r.v v11, v8
4948 ; CHECK-NEXT:    vmv1r.v v12, v8
4949 ; CHECK-NEXT:    vmv1r.v v13, v8
4950 ; CHECK-NEXT:    vmv1r.v v14, v8
4951 ; CHECK-NEXT:    vmv1r.v v15, v8
4952 ; CHECK-NEXT:    vmv1r.v v16, v8
4953 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4954 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
4955 ; CHECK-NEXT:    ret
4956 entry:
4957   tail call void @llvm.riscv.vsoxseg7.mask.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
4958   ret void
4961 declare void @llvm.riscv.vsoxseg7.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, i32)
4962 declare void @llvm.riscv.vsoxseg7.mask.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
4964 define void @test_vsoxseg7_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
4965 ; CHECK-LABEL: test_vsoxseg7_nxv4i8_nxv4i32:
4966 ; CHECK:       # %bb.0: # %entry
4967 ; CHECK-NEXT:    vmv1r.v v12, v8
4968 ; CHECK-NEXT:    vmv1r.v v13, v8
4969 ; CHECK-NEXT:    vmv1r.v v14, v8
4970 ; CHECK-NEXT:    vmv1r.v v15, v8
4971 ; CHECK-NEXT:    vmv1r.v v16, v8
4972 ; CHECK-NEXT:    vmv1r.v v17, v8
4973 ; CHECK-NEXT:    vmv1r.v v18, v8
4974 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4975 ; CHECK-NEXT:    vsoxseg7ei32.v v12, (a0), v10
4976 ; CHECK-NEXT:    ret
4977 entry:
4978   tail call void @llvm.riscv.vsoxseg7.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
4979   ret void
4982 define void @test_vsoxseg7_mask_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
4983 ; CHECK-LABEL: test_vsoxseg7_mask_nxv4i8_nxv4i32:
4984 ; CHECK:       # %bb.0: # %entry
4985 ; CHECK-NEXT:    vmv1r.v v12, v8
4986 ; CHECK-NEXT:    vmv1r.v v13, v8
4987 ; CHECK-NEXT:    vmv1r.v v14, v8
4988 ; CHECK-NEXT:    vmv1r.v v15, v8
4989 ; CHECK-NEXT:    vmv1r.v v16, v8
4990 ; CHECK-NEXT:    vmv1r.v v17, v8
4991 ; CHECK-NEXT:    vmv1r.v v18, v8
4992 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
4993 ; CHECK-NEXT:    vsoxseg7ei32.v v12, (a0), v10, v0.t
4994 ; CHECK-NEXT:    ret
4995 entry:
4996   tail call void @llvm.riscv.vsoxseg7.mask.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
4997   ret void
5000 declare void @llvm.riscv.vsoxseg8.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, i32)
5001 declare void @llvm.riscv.vsoxseg8.mask.nxv4i8.nxv4i16(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
5003 define void @test_vsoxseg8_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
5004 ; CHECK-LABEL: test_vsoxseg8_nxv4i8_nxv4i16:
5005 ; CHECK:       # %bb.0: # %entry
5006 ; CHECK-NEXT:    vmv1r.v v10, v8
5007 ; CHECK-NEXT:    vmv1r.v v11, v8
5008 ; CHECK-NEXT:    vmv1r.v v12, v8
5009 ; CHECK-NEXT:    vmv1r.v v13, v8
5010 ; CHECK-NEXT:    vmv1r.v v14, v8
5011 ; CHECK-NEXT:    vmv1r.v v15, v8
5012 ; CHECK-NEXT:    vmv1r.v v16, v8
5013 ; CHECK-NEXT:    vmv1r.v v17, v8
5014 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
5015 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
5016 ; CHECK-NEXT:    ret
5017 entry:
5018   tail call void @llvm.riscv.vsoxseg8.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
5019   ret void
5022 define void @test_vsoxseg8_mask_nxv4i8_nxv4i16(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
5023 ; CHECK-LABEL: test_vsoxseg8_mask_nxv4i8_nxv4i16:
5024 ; CHECK:       # %bb.0: # %entry
5025 ; CHECK-NEXT:    vmv1r.v v10, v8
5026 ; CHECK-NEXT:    vmv1r.v v11, v8
5027 ; CHECK-NEXT:    vmv1r.v v12, v8
5028 ; CHECK-NEXT:    vmv1r.v v13, v8
5029 ; CHECK-NEXT:    vmv1r.v v14, v8
5030 ; CHECK-NEXT:    vmv1r.v v15, v8
5031 ; CHECK-NEXT:    vmv1r.v v16, v8
5032 ; CHECK-NEXT:    vmv1r.v v17, v8
5033 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
5034 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
5035 ; CHECK-NEXT:    ret
5036 entry:
5037   tail call void @llvm.riscv.vsoxseg8.mask.nxv4i8.nxv4i16(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
5038   ret void
5041 declare void @llvm.riscv.vsoxseg8.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, i32)
5042 declare void @llvm.riscv.vsoxseg8.mask.nxv4i8.nxv4i8(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
5044 define void @test_vsoxseg8_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
5045 ; CHECK-LABEL: test_vsoxseg8_nxv4i8_nxv4i8:
5046 ; CHECK:       # %bb.0: # %entry
5047 ; CHECK-NEXT:    vmv1r.v v10, v8
5048 ; CHECK-NEXT:    vmv1r.v v11, v8
5049 ; CHECK-NEXT:    vmv1r.v v12, v8
5050 ; CHECK-NEXT:    vmv1r.v v13, v8
5051 ; CHECK-NEXT:    vmv1r.v v14, v8
5052 ; CHECK-NEXT:    vmv1r.v v15, v8
5053 ; CHECK-NEXT:    vmv1r.v v16, v8
5054 ; CHECK-NEXT:    vmv1r.v v17, v8
5055 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
5056 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
5057 ; CHECK-NEXT:    ret
5058 entry:
5059   tail call void @llvm.riscv.vsoxseg8.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
5060   ret void
5063 define void @test_vsoxseg8_mask_nxv4i8_nxv4i8(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
5064 ; CHECK-LABEL: test_vsoxseg8_mask_nxv4i8_nxv4i8:
5065 ; CHECK:       # %bb.0: # %entry
5066 ; CHECK-NEXT:    vmv1r.v v10, v8
5067 ; CHECK-NEXT:    vmv1r.v v11, v8
5068 ; CHECK-NEXT:    vmv1r.v v12, v8
5069 ; CHECK-NEXT:    vmv1r.v v13, v8
5070 ; CHECK-NEXT:    vmv1r.v v14, v8
5071 ; CHECK-NEXT:    vmv1r.v v15, v8
5072 ; CHECK-NEXT:    vmv1r.v v16, v8
5073 ; CHECK-NEXT:    vmv1r.v v17, v8
5074 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
5075 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
5076 ; CHECK-NEXT:    ret
5077 entry:
5078   tail call void @llvm.riscv.vsoxseg8.mask.nxv4i8.nxv4i8(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
5079   ret void
5082 declare void @llvm.riscv.vsoxseg8.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, i32)
5083 declare void @llvm.riscv.vsoxseg8.mask.nxv4i8.nxv4i32(<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>,<vscale x 4 x i8>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
5085 define void @test_vsoxseg8_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
5086 ; CHECK-LABEL: test_vsoxseg8_nxv4i8_nxv4i32:
5087 ; CHECK:       # %bb.0: # %entry
5088 ; CHECK-NEXT:    vmv1r.v v12, v8
5089 ; CHECK-NEXT:    vmv1r.v v13, v8
5090 ; CHECK-NEXT:    vmv1r.v v14, v8
5091 ; CHECK-NEXT:    vmv1r.v v15, v8
5092 ; CHECK-NEXT:    vmv1r.v v16, v8
5093 ; CHECK-NEXT:    vmv1r.v v17, v8
5094 ; CHECK-NEXT:    vmv1r.v v18, v8
5095 ; CHECK-NEXT:    vmv1r.v v19, v8
5096 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
5097 ; CHECK-NEXT:    vsoxseg8ei32.v v12, (a0), v10
5098 ; CHECK-NEXT:    ret
5099 entry:
5100   tail call void @llvm.riscv.vsoxseg8.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
5101   ret void
5104 define void @test_vsoxseg8_mask_nxv4i8_nxv4i32(<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
5105 ; CHECK-LABEL: test_vsoxseg8_mask_nxv4i8_nxv4i32:
5106 ; CHECK:       # %bb.0: # %entry
5107 ; CHECK-NEXT:    vmv1r.v v12, v8
5108 ; CHECK-NEXT:    vmv1r.v v13, v8
5109 ; CHECK-NEXT:    vmv1r.v v14, v8
5110 ; CHECK-NEXT:    vmv1r.v v15, v8
5111 ; CHECK-NEXT:    vmv1r.v v16, v8
5112 ; CHECK-NEXT:    vmv1r.v v17, v8
5113 ; CHECK-NEXT:    vmv1r.v v18, v8
5114 ; CHECK-NEXT:    vmv1r.v v19, v8
5115 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
5116 ; CHECK-NEXT:    vsoxseg8ei32.v v12, (a0), v10, v0.t
5117 ; CHECK-NEXT:    ret
5118 entry:
5119   tail call void @llvm.riscv.vsoxseg8.mask.nxv4i8.nxv4i32(<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val,<vscale x 4 x i8> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
5120   ret void
5123 declare void @llvm.riscv.vsoxseg2.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, i32)
5124 declare void @llvm.riscv.vsoxseg2.mask.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
5126 define void @test_vsoxseg2_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
5127 ; CHECK-LABEL: test_vsoxseg2_nxv1i16_nxv1i8:
5128 ; CHECK:       # %bb.0: # %entry
5129 ; CHECK-NEXT:    vmv1r.v v10, v9
5130 ; CHECK-NEXT:    vmv1r.v v9, v8
5131 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5132 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
5133 ; CHECK-NEXT:    ret
5134 entry:
5135   tail call void @llvm.riscv.vsoxseg2.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
5136   ret void
5139 define void @test_vsoxseg2_mask_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5140 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1i16_nxv1i8:
5141 ; CHECK:       # %bb.0: # %entry
5142 ; CHECK-NEXT:    vmv1r.v v10, v9
5143 ; CHECK-NEXT:    vmv1r.v v9, v8
5144 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5145 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
5146 ; CHECK-NEXT:    ret
5147 entry:
5148   tail call void @llvm.riscv.vsoxseg2.mask.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
5149   ret void
5152 declare void @llvm.riscv.vsoxseg2.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, i32)
5153 declare void @llvm.riscv.vsoxseg2.mask.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
5155 define void @test_vsoxseg2_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
5156 ; CHECK-LABEL: test_vsoxseg2_nxv1i16_nxv1i32:
5157 ; CHECK:       # %bb.0: # %entry
5158 ; CHECK-NEXT:    vmv1r.v v10, v9
5159 ; CHECK-NEXT:    vmv1r.v v9, v8
5160 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5161 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
5162 ; CHECK-NEXT:    ret
5163 entry:
5164   tail call void @llvm.riscv.vsoxseg2.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
5165   ret void
5168 define void @test_vsoxseg2_mask_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5169 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1i16_nxv1i32:
5170 ; CHECK:       # %bb.0: # %entry
5171 ; CHECK-NEXT:    vmv1r.v v10, v9
5172 ; CHECK-NEXT:    vmv1r.v v9, v8
5173 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5174 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
5175 ; CHECK-NEXT:    ret
5176 entry:
5177   tail call void @llvm.riscv.vsoxseg2.mask.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
5178   ret void
5181 declare void @llvm.riscv.vsoxseg2.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, i32)
5182 declare void @llvm.riscv.vsoxseg2.mask.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
5184 define void @test_vsoxseg2_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
5185 ; CHECK-LABEL: test_vsoxseg2_nxv1i16_nxv1i16:
5186 ; CHECK:       # %bb.0: # %entry
5187 ; CHECK-NEXT:    vmv1r.v v10, v9
5188 ; CHECK-NEXT:    vmv1r.v v9, v8
5189 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5190 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
5191 ; CHECK-NEXT:    ret
5192 entry:
5193   tail call void @llvm.riscv.vsoxseg2.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
5194   ret void
5197 define void @test_vsoxseg2_mask_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5198 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1i16_nxv1i16:
5199 ; CHECK:       # %bb.0: # %entry
5200 ; CHECK-NEXT:    vmv1r.v v10, v9
5201 ; CHECK-NEXT:    vmv1r.v v9, v8
5202 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5203 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
5204 ; CHECK-NEXT:    ret
5205 entry:
5206   tail call void @llvm.riscv.vsoxseg2.mask.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
5207   ret void
5210 declare void @llvm.riscv.vsoxseg3.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, i32)
5211 declare void @llvm.riscv.vsoxseg3.mask.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
5213 define void @test_vsoxseg3_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
5214 ; CHECK-LABEL: test_vsoxseg3_nxv1i16_nxv1i8:
5215 ; CHECK:       # %bb.0: # %entry
5216 ; CHECK-NEXT:    vmv1r.v v10, v8
5217 ; CHECK-NEXT:    vmv1r.v v11, v8
5218 ; CHECK-NEXT:    vmv1r.v v12, v8
5219 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5220 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
5221 ; CHECK-NEXT:    ret
5222 entry:
5223   tail call void @llvm.riscv.vsoxseg3.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
5224   ret void
5227 define void @test_vsoxseg3_mask_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5228 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1i16_nxv1i8:
5229 ; CHECK:       # %bb.0: # %entry
5230 ; CHECK-NEXT:    vmv1r.v v10, v8
5231 ; CHECK-NEXT:    vmv1r.v v11, v8
5232 ; CHECK-NEXT:    vmv1r.v v12, v8
5233 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5234 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
5235 ; CHECK-NEXT:    ret
5236 entry:
5237   tail call void @llvm.riscv.vsoxseg3.mask.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
5238   ret void
5241 declare void @llvm.riscv.vsoxseg3.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, i32)
5242 declare void @llvm.riscv.vsoxseg3.mask.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
5244 define void @test_vsoxseg3_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
5245 ; CHECK-LABEL: test_vsoxseg3_nxv1i16_nxv1i32:
5246 ; CHECK:       # %bb.0: # %entry
5247 ; CHECK-NEXT:    vmv1r.v v10, v8
5248 ; CHECK-NEXT:    vmv1r.v v11, v8
5249 ; CHECK-NEXT:    vmv1r.v v12, v8
5250 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5251 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9
5252 ; CHECK-NEXT:    ret
5253 entry:
5254   tail call void @llvm.riscv.vsoxseg3.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
5255   ret void
5258 define void @test_vsoxseg3_mask_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5259 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1i16_nxv1i32:
5260 ; CHECK:       # %bb.0: # %entry
5261 ; CHECK-NEXT:    vmv1r.v v10, v8
5262 ; CHECK-NEXT:    vmv1r.v v11, v8
5263 ; CHECK-NEXT:    vmv1r.v v12, v8
5264 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5265 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9, v0.t
5266 ; CHECK-NEXT:    ret
5267 entry:
5268   tail call void @llvm.riscv.vsoxseg3.mask.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
5269   ret void
5272 declare void @llvm.riscv.vsoxseg3.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, i32)
5273 declare void @llvm.riscv.vsoxseg3.mask.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
5275 define void @test_vsoxseg3_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
5276 ; CHECK-LABEL: test_vsoxseg3_nxv1i16_nxv1i16:
5277 ; CHECK:       # %bb.0: # %entry
5278 ; CHECK-NEXT:    vmv1r.v v10, v8
5279 ; CHECK-NEXT:    vmv1r.v v11, v8
5280 ; CHECK-NEXT:    vmv1r.v v12, v8
5281 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5282 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
5283 ; CHECK-NEXT:    ret
5284 entry:
5285   tail call void @llvm.riscv.vsoxseg3.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
5286   ret void
5289 define void @test_vsoxseg3_mask_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5290 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1i16_nxv1i16:
5291 ; CHECK:       # %bb.0: # %entry
5292 ; CHECK-NEXT:    vmv1r.v v10, v8
5293 ; CHECK-NEXT:    vmv1r.v v11, v8
5294 ; CHECK-NEXT:    vmv1r.v v12, v8
5295 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5296 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
5297 ; CHECK-NEXT:    ret
5298 entry:
5299   tail call void @llvm.riscv.vsoxseg3.mask.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
5300   ret void
5303 declare void @llvm.riscv.vsoxseg4.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, i32)
5304 declare void @llvm.riscv.vsoxseg4.mask.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
5306 define void @test_vsoxseg4_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
5307 ; CHECK-LABEL: test_vsoxseg4_nxv1i16_nxv1i8:
5308 ; CHECK:       # %bb.0: # %entry
5309 ; CHECK-NEXT:    vmv1r.v v10, v8
5310 ; CHECK-NEXT:    vmv1r.v v11, v8
5311 ; CHECK-NEXT:    vmv1r.v v12, v8
5312 ; CHECK-NEXT:    vmv1r.v v13, v8
5313 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5314 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
5315 ; CHECK-NEXT:    ret
5316 entry:
5317   tail call void @llvm.riscv.vsoxseg4.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
5318   ret void
5321 define void @test_vsoxseg4_mask_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5322 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1i16_nxv1i8:
5323 ; CHECK:       # %bb.0: # %entry
5324 ; CHECK-NEXT:    vmv1r.v v10, v8
5325 ; CHECK-NEXT:    vmv1r.v v11, v8
5326 ; CHECK-NEXT:    vmv1r.v v12, v8
5327 ; CHECK-NEXT:    vmv1r.v v13, v8
5328 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5329 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
5330 ; CHECK-NEXT:    ret
5331 entry:
5332   tail call void @llvm.riscv.vsoxseg4.mask.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
5333   ret void
5336 declare void @llvm.riscv.vsoxseg4.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, i32)
5337 declare void @llvm.riscv.vsoxseg4.mask.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
5339 define void @test_vsoxseg4_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
5340 ; CHECK-LABEL: test_vsoxseg4_nxv1i16_nxv1i32:
5341 ; CHECK:       # %bb.0: # %entry
5342 ; CHECK-NEXT:    vmv1r.v v10, v8
5343 ; CHECK-NEXT:    vmv1r.v v11, v8
5344 ; CHECK-NEXT:    vmv1r.v v12, v8
5345 ; CHECK-NEXT:    vmv1r.v v13, v8
5346 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5347 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9
5348 ; CHECK-NEXT:    ret
5349 entry:
5350   tail call void @llvm.riscv.vsoxseg4.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
5351   ret void
5354 define void @test_vsoxseg4_mask_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5355 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1i16_nxv1i32:
5356 ; CHECK:       # %bb.0: # %entry
5357 ; CHECK-NEXT:    vmv1r.v v10, v8
5358 ; CHECK-NEXT:    vmv1r.v v11, v8
5359 ; CHECK-NEXT:    vmv1r.v v12, v8
5360 ; CHECK-NEXT:    vmv1r.v v13, v8
5361 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5362 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9, v0.t
5363 ; CHECK-NEXT:    ret
5364 entry:
5365   tail call void @llvm.riscv.vsoxseg4.mask.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
5366   ret void
5369 declare void @llvm.riscv.vsoxseg4.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, i32)
5370 declare void @llvm.riscv.vsoxseg4.mask.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
5372 define void @test_vsoxseg4_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
5373 ; CHECK-LABEL: test_vsoxseg4_nxv1i16_nxv1i16:
5374 ; CHECK:       # %bb.0: # %entry
5375 ; CHECK-NEXT:    vmv1r.v v10, v8
5376 ; CHECK-NEXT:    vmv1r.v v11, v8
5377 ; CHECK-NEXT:    vmv1r.v v12, v8
5378 ; CHECK-NEXT:    vmv1r.v v13, v8
5379 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5380 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
5381 ; CHECK-NEXT:    ret
5382 entry:
5383   tail call void @llvm.riscv.vsoxseg4.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
5384   ret void
5387 define void @test_vsoxseg4_mask_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5388 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1i16_nxv1i16:
5389 ; CHECK:       # %bb.0: # %entry
5390 ; CHECK-NEXT:    vmv1r.v v10, v8
5391 ; CHECK-NEXT:    vmv1r.v v11, v8
5392 ; CHECK-NEXT:    vmv1r.v v12, v8
5393 ; CHECK-NEXT:    vmv1r.v v13, v8
5394 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5395 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
5396 ; CHECK-NEXT:    ret
5397 entry:
5398   tail call void @llvm.riscv.vsoxseg4.mask.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
5399   ret void
5402 declare void @llvm.riscv.vsoxseg5.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, i32)
5403 declare void @llvm.riscv.vsoxseg5.mask.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
5405 define void @test_vsoxseg5_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
5406 ; CHECK-LABEL: test_vsoxseg5_nxv1i16_nxv1i8:
5407 ; CHECK:       # %bb.0: # %entry
5408 ; CHECK-NEXT:    vmv1r.v v10, v8
5409 ; CHECK-NEXT:    vmv1r.v v11, v8
5410 ; CHECK-NEXT:    vmv1r.v v12, v8
5411 ; CHECK-NEXT:    vmv1r.v v13, v8
5412 ; CHECK-NEXT:    vmv1r.v v14, v8
5413 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5414 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
5415 ; CHECK-NEXT:    ret
5416 entry:
5417   tail call void @llvm.riscv.vsoxseg5.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
5418   ret void
5421 define void @test_vsoxseg5_mask_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5422 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1i16_nxv1i8:
5423 ; CHECK:       # %bb.0: # %entry
5424 ; CHECK-NEXT:    vmv1r.v v10, v8
5425 ; CHECK-NEXT:    vmv1r.v v11, v8
5426 ; CHECK-NEXT:    vmv1r.v v12, v8
5427 ; CHECK-NEXT:    vmv1r.v v13, v8
5428 ; CHECK-NEXT:    vmv1r.v v14, v8
5429 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5430 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
5431 ; CHECK-NEXT:    ret
5432 entry:
5433   tail call void @llvm.riscv.vsoxseg5.mask.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
5434   ret void
5437 declare void @llvm.riscv.vsoxseg5.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, i32)
5438 declare void @llvm.riscv.vsoxseg5.mask.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
5440 define void @test_vsoxseg5_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
5441 ; CHECK-LABEL: test_vsoxseg5_nxv1i16_nxv1i32:
5442 ; CHECK:       # %bb.0: # %entry
5443 ; CHECK-NEXT:    vmv1r.v v10, v8
5444 ; CHECK-NEXT:    vmv1r.v v11, v8
5445 ; CHECK-NEXT:    vmv1r.v v12, v8
5446 ; CHECK-NEXT:    vmv1r.v v13, v8
5447 ; CHECK-NEXT:    vmv1r.v v14, v8
5448 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5449 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9
5450 ; CHECK-NEXT:    ret
5451 entry:
5452   tail call void @llvm.riscv.vsoxseg5.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
5453   ret void
5456 define void @test_vsoxseg5_mask_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5457 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1i16_nxv1i32:
5458 ; CHECK:       # %bb.0: # %entry
5459 ; CHECK-NEXT:    vmv1r.v v10, v8
5460 ; CHECK-NEXT:    vmv1r.v v11, v8
5461 ; CHECK-NEXT:    vmv1r.v v12, v8
5462 ; CHECK-NEXT:    vmv1r.v v13, v8
5463 ; CHECK-NEXT:    vmv1r.v v14, v8
5464 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5465 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9, v0.t
5466 ; CHECK-NEXT:    ret
5467 entry:
5468   tail call void @llvm.riscv.vsoxseg5.mask.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
5469   ret void
5472 declare void @llvm.riscv.vsoxseg5.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, i32)
5473 declare void @llvm.riscv.vsoxseg5.mask.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
5475 define void @test_vsoxseg5_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
5476 ; CHECK-LABEL: test_vsoxseg5_nxv1i16_nxv1i16:
5477 ; CHECK:       # %bb.0: # %entry
5478 ; CHECK-NEXT:    vmv1r.v v10, v8
5479 ; CHECK-NEXT:    vmv1r.v v11, v8
5480 ; CHECK-NEXT:    vmv1r.v v12, v8
5481 ; CHECK-NEXT:    vmv1r.v v13, v8
5482 ; CHECK-NEXT:    vmv1r.v v14, v8
5483 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5484 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
5485 ; CHECK-NEXT:    ret
5486 entry:
5487   tail call void @llvm.riscv.vsoxseg5.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
5488   ret void
5491 define void @test_vsoxseg5_mask_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5492 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1i16_nxv1i16:
5493 ; CHECK:       # %bb.0: # %entry
5494 ; CHECK-NEXT:    vmv1r.v v10, v8
5495 ; CHECK-NEXT:    vmv1r.v v11, v8
5496 ; CHECK-NEXT:    vmv1r.v v12, v8
5497 ; CHECK-NEXT:    vmv1r.v v13, v8
5498 ; CHECK-NEXT:    vmv1r.v v14, v8
5499 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5500 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
5501 ; CHECK-NEXT:    ret
5502 entry:
5503   tail call void @llvm.riscv.vsoxseg5.mask.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
5504   ret void
5507 declare void @llvm.riscv.vsoxseg6.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, i32)
5508 declare void @llvm.riscv.vsoxseg6.mask.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
5510 define void @test_vsoxseg6_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
5511 ; CHECK-LABEL: test_vsoxseg6_nxv1i16_nxv1i8:
5512 ; CHECK:       # %bb.0: # %entry
5513 ; CHECK-NEXT:    vmv1r.v v10, v8
5514 ; CHECK-NEXT:    vmv1r.v v11, v8
5515 ; CHECK-NEXT:    vmv1r.v v12, v8
5516 ; CHECK-NEXT:    vmv1r.v v13, v8
5517 ; CHECK-NEXT:    vmv1r.v v14, v8
5518 ; CHECK-NEXT:    vmv1r.v v15, v8
5519 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5520 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
5521 ; CHECK-NEXT:    ret
5522 entry:
5523   tail call void @llvm.riscv.vsoxseg6.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
5524   ret void
5527 define void @test_vsoxseg6_mask_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5528 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1i16_nxv1i8:
5529 ; CHECK:       # %bb.0: # %entry
5530 ; CHECK-NEXT:    vmv1r.v v10, v8
5531 ; CHECK-NEXT:    vmv1r.v v11, v8
5532 ; CHECK-NEXT:    vmv1r.v v12, v8
5533 ; CHECK-NEXT:    vmv1r.v v13, v8
5534 ; CHECK-NEXT:    vmv1r.v v14, v8
5535 ; CHECK-NEXT:    vmv1r.v v15, v8
5536 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5537 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
5538 ; CHECK-NEXT:    ret
5539 entry:
5540   tail call void @llvm.riscv.vsoxseg6.mask.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
5541   ret void
5544 declare void @llvm.riscv.vsoxseg6.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, i32)
5545 declare void @llvm.riscv.vsoxseg6.mask.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
5547 define void @test_vsoxseg6_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
5548 ; CHECK-LABEL: test_vsoxseg6_nxv1i16_nxv1i32:
5549 ; CHECK:       # %bb.0: # %entry
5550 ; CHECK-NEXT:    vmv1r.v v10, v8
5551 ; CHECK-NEXT:    vmv1r.v v11, v8
5552 ; CHECK-NEXT:    vmv1r.v v12, v8
5553 ; CHECK-NEXT:    vmv1r.v v13, v8
5554 ; CHECK-NEXT:    vmv1r.v v14, v8
5555 ; CHECK-NEXT:    vmv1r.v v15, v8
5556 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5557 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9
5558 ; CHECK-NEXT:    ret
5559 entry:
5560   tail call void @llvm.riscv.vsoxseg6.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
5561   ret void
5564 define void @test_vsoxseg6_mask_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5565 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1i16_nxv1i32:
5566 ; CHECK:       # %bb.0: # %entry
5567 ; CHECK-NEXT:    vmv1r.v v10, v8
5568 ; CHECK-NEXT:    vmv1r.v v11, v8
5569 ; CHECK-NEXT:    vmv1r.v v12, v8
5570 ; CHECK-NEXT:    vmv1r.v v13, v8
5571 ; CHECK-NEXT:    vmv1r.v v14, v8
5572 ; CHECK-NEXT:    vmv1r.v v15, v8
5573 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5574 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9, v0.t
5575 ; CHECK-NEXT:    ret
5576 entry:
5577   tail call void @llvm.riscv.vsoxseg6.mask.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
5578   ret void
5581 declare void @llvm.riscv.vsoxseg6.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, i32)
5582 declare void @llvm.riscv.vsoxseg6.mask.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
5584 define void @test_vsoxseg6_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
5585 ; CHECK-LABEL: test_vsoxseg6_nxv1i16_nxv1i16:
5586 ; CHECK:       # %bb.0: # %entry
5587 ; CHECK-NEXT:    vmv1r.v v10, v8
5588 ; CHECK-NEXT:    vmv1r.v v11, v8
5589 ; CHECK-NEXT:    vmv1r.v v12, v8
5590 ; CHECK-NEXT:    vmv1r.v v13, v8
5591 ; CHECK-NEXT:    vmv1r.v v14, v8
5592 ; CHECK-NEXT:    vmv1r.v v15, v8
5593 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5594 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
5595 ; CHECK-NEXT:    ret
5596 entry:
5597   tail call void @llvm.riscv.vsoxseg6.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
5598   ret void
5601 define void @test_vsoxseg6_mask_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5602 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1i16_nxv1i16:
5603 ; CHECK:       # %bb.0: # %entry
5604 ; CHECK-NEXT:    vmv1r.v v10, v8
5605 ; CHECK-NEXT:    vmv1r.v v11, v8
5606 ; CHECK-NEXT:    vmv1r.v v12, v8
5607 ; CHECK-NEXT:    vmv1r.v v13, v8
5608 ; CHECK-NEXT:    vmv1r.v v14, v8
5609 ; CHECK-NEXT:    vmv1r.v v15, v8
5610 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5611 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
5612 ; CHECK-NEXT:    ret
5613 entry:
5614   tail call void @llvm.riscv.vsoxseg6.mask.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
5615   ret void
5618 declare void @llvm.riscv.vsoxseg7.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, i32)
5619 declare void @llvm.riscv.vsoxseg7.mask.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
5621 define void @test_vsoxseg7_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
5622 ; CHECK-LABEL: test_vsoxseg7_nxv1i16_nxv1i8:
5623 ; CHECK:       # %bb.0: # %entry
5624 ; CHECK-NEXT:    vmv1r.v v10, v8
5625 ; CHECK-NEXT:    vmv1r.v v11, v8
5626 ; CHECK-NEXT:    vmv1r.v v12, v8
5627 ; CHECK-NEXT:    vmv1r.v v13, v8
5628 ; CHECK-NEXT:    vmv1r.v v14, v8
5629 ; CHECK-NEXT:    vmv1r.v v15, v8
5630 ; CHECK-NEXT:    vmv1r.v v16, v8
5631 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5632 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
5633 ; CHECK-NEXT:    ret
5634 entry:
5635   tail call void @llvm.riscv.vsoxseg7.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
5636   ret void
5639 define void @test_vsoxseg7_mask_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5640 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1i16_nxv1i8:
5641 ; CHECK:       # %bb.0: # %entry
5642 ; CHECK-NEXT:    vmv1r.v v10, v8
5643 ; CHECK-NEXT:    vmv1r.v v11, v8
5644 ; CHECK-NEXT:    vmv1r.v v12, v8
5645 ; CHECK-NEXT:    vmv1r.v v13, v8
5646 ; CHECK-NEXT:    vmv1r.v v14, v8
5647 ; CHECK-NEXT:    vmv1r.v v15, v8
5648 ; CHECK-NEXT:    vmv1r.v v16, v8
5649 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5650 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
5651 ; CHECK-NEXT:    ret
5652 entry:
5653   tail call void @llvm.riscv.vsoxseg7.mask.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
5654   ret void
5657 declare void @llvm.riscv.vsoxseg7.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, i32)
5658 declare void @llvm.riscv.vsoxseg7.mask.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
5660 define void @test_vsoxseg7_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
5661 ; CHECK-LABEL: test_vsoxseg7_nxv1i16_nxv1i32:
5662 ; CHECK:       # %bb.0: # %entry
5663 ; CHECK-NEXT:    vmv1r.v v10, v8
5664 ; CHECK-NEXT:    vmv1r.v v11, v8
5665 ; CHECK-NEXT:    vmv1r.v v12, v8
5666 ; CHECK-NEXT:    vmv1r.v v13, v8
5667 ; CHECK-NEXT:    vmv1r.v v14, v8
5668 ; CHECK-NEXT:    vmv1r.v v15, v8
5669 ; CHECK-NEXT:    vmv1r.v v16, v8
5670 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5671 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9
5672 ; CHECK-NEXT:    ret
5673 entry:
5674   tail call void @llvm.riscv.vsoxseg7.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
5675   ret void
5678 define void @test_vsoxseg7_mask_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5679 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1i16_nxv1i32:
5680 ; CHECK:       # %bb.0: # %entry
5681 ; CHECK-NEXT:    vmv1r.v v10, v8
5682 ; CHECK-NEXT:    vmv1r.v v11, v8
5683 ; CHECK-NEXT:    vmv1r.v v12, v8
5684 ; CHECK-NEXT:    vmv1r.v v13, v8
5685 ; CHECK-NEXT:    vmv1r.v v14, v8
5686 ; CHECK-NEXT:    vmv1r.v v15, v8
5687 ; CHECK-NEXT:    vmv1r.v v16, v8
5688 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5689 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9, v0.t
5690 ; CHECK-NEXT:    ret
5691 entry:
5692   tail call void @llvm.riscv.vsoxseg7.mask.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
5693   ret void
5696 declare void @llvm.riscv.vsoxseg7.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, i32)
5697 declare void @llvm.riscv.vsoxseg7.mask.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
5699 define void @test_vsoxseg7_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
5700 ; CHECK-LABEL: test_vsoxseg7_nxv1i16_nxv1i16:
5701 ; CHECK:       # %bb.0: # %entry
5702 ; CHECK-NEXT:    vmv1r.v v10, v8
5703 ; CHECK-NEXT:    vmv1r.v v11, v8
5704 ; CHECK-NEXT:    vmv1r.v v12, v8
5705 ; CHECK-NEXT:    vmv1r.v v13, v8
5706 ; CHECK-NEXT:    vmv1r.v v14, v8
5707 ; CHECK-NEXT:    vmv1r.v v15, v8
5708 ; CHECK-NEXT:    vmv1r.v v16, v8
5709 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5710 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
5711 ; CHECK-NEXT:    ret
5712 entry:
5713   tail call void @llvm.riscv.vsoxseg7.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
5714   ret void
5717 define void @test_vsoxseg7_mask_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5718 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1i16_nxv1i16:
5719 ; CHECK:       # %bb.0: # %entry
5720 ; CHECK-NEXT:    vmv1r.v v10, v8
5721 ; CHECK-NEXT:    vmv1r.v v11, v8
5722 ; CHECK-NEXT:    vmv1r.v v12, v8
5723 ; CHECK-NEXT:    vmv1r.v v13, v8
5724 ; CHECK-NEXT:    vmv1r.v v14, v8
5725 ; CHECK-NEXT:    vmv1r.v v15, v8
5726 ; CHECK-NEXT:    vmv1r.v v16, v8
5727 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5728 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
5729 ; CHECK-NEXT:    ret
5730 entry:
5731   tail call void @llvm.riscv.vsoxseg7.mask.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
5732   ret void
5735 declare void @llvm.riscv.vsoxseg8.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, i32)
5736 declare void @llvm.riscv.vsoxseg8.mask.nxv1i16.nxv1i8(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
5738 define void @test_vsoxseg8_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
5739 ; CHECK-LABEL: test_vsoxseg8_nxv1i16_nxv1i8:
5740 ; CHECK:       # %bb.0: # %entry
5741 ; CHECK-NEXT:    vmv1r.v v10, v8
5742 ; CHECK-NEXT:    vmv1r.v v11, v8
5743 ; CHECK-NEXT:    vmv1r.v v12, v8
5744 ; CHECK-NEXT:    vmv1r.v v13, v8
5745 ; CHECK-NEXT:    vmv1r.v v14, v8
5746 ; CHECK-NEXT:    vmv1r.v v15, v8
5747 ; CHECK-NEXT:    vmv1r.v v16, v8
5748 ; CHECK-NEXT:    vmv1r.v v17, v8
5749 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5750 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
5751 ; CHECK-NEXT:    ret
5752 entry:
5753   tail call void @llvm.riscv.vsoxseg8.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
5754   ret void
5757 define void @test_vsoxseg8_mask_nxv1i16_nxv1i8(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5758 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1i16_nxv1i8:
5759 ; CHECK:       # %bb.0: # %entry
5760 ; CHECK-NEXT:    vmv1r.v v10, v8
5761 ; CHECK-NEXT:    vmv1r.v v11, v8
5762 ; CHECK-NEXT:    vmv1r.v v12, v8
5763 ; CHECK-NEXT:    vmv1r.v v13, v8
5764 ; CHECK-NEXT:    vmv1r.v v14, v8
5765 ; CHECK-NEXT:    vmv1r.v v15, v8
5766 ; CHECK-NEXT:    vmv1r.v v16, v8
5767 ; CHECK-NEXT:    vmv1r.v v17, v8
5768 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5769 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
5770 ; CHECK-NEXT:    ret
5771 entry:
5772   tail call void @llvm.riscv.vsoxseg8.mask.nxv1i16.nxv1i8(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
5773   ret void
5776 declare void @llvm.riscv.vsoxseg8.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, i32)
5777 declare void @llvm.riscv.vsoxseg8.mask.nxv1i16.nxv1i32(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
5779 define void @test_vsoxseg8_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
5780 ; CHECK-LABEL: test_vsoxseg8_nxv1i16_nxv1i32:
5781 ; CHECK:       # %bb.0: # %entry
5782 ; CHECK-NEXT:    vmv1r.v v10, v8
5783 ; CHECK-NEXT:    vmv1r.v v11, v8
5784 ; CHECK-NEXT:    vmv1r.v v12, v8
5785 ; CHECK-NEXT:    vmv1r.v v13, v8
5786 ; CHECK-NEXT:    vmv1r.v v14, v8
5787 ; CHECK-NEXT:    vmv1r.v v15, v8
5788 ; CHECK-NEXT:    vmv1r.v v16, v8
5789 ; CHECK-NEXT:    vmv1r.v v17, v8
5790 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5791 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9
5792 ; CHECK-NEXT:    ret
5793 entry:
5794   tail call void @llvm.riscv.vsoxseg8.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
5795   ret void
5798 define void @test_vsoxseg8_mask_nxv1i16_nxv1i32(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5799 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1i16_nxv1i32:
5800 ; CHECK:       # %bb.0: # %entry
5801 ; CHECK-NEXT:    vmv1r.v v10, v8
5802 ; CHECK-NEXT:    vmv1r.v v11, v8
5803 ; CHECK-NEXT:    vmv1r.v v12, v8
5804 ; CHECK-NEXT:    vmv1r.v v13, v8
5805 ; CHECK-NEXT:    vmv1r.v v14, v8
5806 ; CHECK-NEXT:    vmv1r.v v15, v8
5807 ; CHECK-NEXT:    vmv1r.v v16, v8
5808 ; CHECK-NEXT:    vmv1r.v v17, v8
5809 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5810 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9, v0.t
5811 ; CHECK-NEXT:    ret
5812 entry:
5813   tail call void @llvm.riscv.vsoxseg8.mask.nxv1i16.nxv1i32(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
5814   ret void
5817 declare void @llvm.riscv.vsoxseg8.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, i32)
5818 declare void @llvm.riscv.vsoxseg8.mask.nxv1i16.nxv1i16(<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>,<vscale x 1 x i16>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
5820 define void @test_vsoxseg8_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
5821 ; CHECK-LABEL: test_vsoxseg8_nxv1i16_nxv1i16:
5822 ; CHECK:       # %bb.0: # %entry
5823 ; CHECK-NEXT:    vmv1r.v v10, v8
5824 ; CHECK-NEXT:    vmv1r.v v11, v8
5825 ; CHECK-NEXT:    vmv1r.v v12, v8
5826 ; CHECK-NEXT:    vmv1r.v v13, v8
5827 ; CHECK-NEXT:    vmv1r.v v14, v8
5828 ; CHECK-NEXT:    vmv1r.v v15, v8
5829 ; CHECK-NEXT:    vmv1r.v v16, v8
5830 ; CHECK-NEXT:    vmv1r.v v17, v8
5831 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5832 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
5833 ; CHECK-NEXT:    ret
5834 entry:
5835   tail call void @llvm.riscv.vsoxseg8.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
5836   ret void
5839 define void @test_vsoxseg8_mask_nxv1i16_nxv1i16(<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
5840 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1i16_nxv1i16:
5841 ; CHECK:       # %bb.0: # %entry
5842 ; CHECK-NEXT:    vmv1r.v v10, v8
5843 ; CHECK-NEXT:    vmv1r.v v11, v8
5844 ; CHECK-NEXT:    vmv1r.v v12, v8
5845 ; CHECK-NEXT:    vmv1r.v v13, v8
5846 ; CHECK-NEXT:    vmv1r.v v14, v8
5847 ; CHECK-NEXT:    vmv1r.v v15, v8
5848 ; CHECK-NEXT:    vmv1r.v v16, v8
5849 ; CHECK-NEXT:    vmv1r.v v17, v8
5850 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
5851 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
5852 ; CHECK-NEXT:    ret
5853 entry:
5854   tail call void @llvm.riscv.vsoxseg8.mask.nxv1i16.nxv1i16(<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val,<vscale x 1 x i16> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
5855   ret void
5858 declare void @llvm.riscv.vsoxseg2.nxv32i8.nxv32i16(<vscale x 32 x i8>,<vscale x 32 x i8>, ptr, <vscale x 32 x i16>, i32)
5859 declare void @llvm.riscv.vsoxseg2.mask.nxv32i8.nxv32i16(<vscale x 32 x i8>,<vscale x 32 x i8>, ptr, <vscale x 32 x i16>, <vscale x 32 x i1>, i32)
5861 define void @test_vsoxseg2_nxv32i8_nxv32i16(<vscale x 32 x i8> %val, ptr %base, <vscale x 32 x i16> %index, i32 %vl) {
5862 ; CHECK-LABEL: test_vsoxseg2_nxv32i8_nxv32i16:
5863 ; CHECK:       # %bb.0: # %entry
5864 ; CHECK-NEXT:    vmv4r.v v12, v8
5865 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
5866 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v16
5867 ; CHECK-NEXT:    ret
5868 entry:
5869   tail call void @llvm.riscv.vsoxseg2.nxv32i8.nxv32i16(<vscale x 32 x i8> %val,<vscale x 32 x i8> %val, ptr %base, <vscale x 32 x i16> %index, i32 %vl)
5870   ret void
5873 define void @test_vsoxseg2_mask_nxv32i8_nxv32i16(<vscale x 32 x i8> %val, ptr %base, <vscale x 32 x i16> %index, <vscale x 32 x i1> %mask, i32 %vl) {
5874 ; CHECK-LABEL: test_vsoxseg2_mask_nxv32i8_nxv32i16:
5875 ; CHECK:       # %bb.0: # %entry
5876 ; CHECK-NEXT:    vmv4r.v v12, v8
5877 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
5878 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v16, v0.t
5879 ; CHECK-NEXT:    ret
5880 entry:
5881   tail call void @llvm.riscv.vsoxseg2.mask.nxv32i8.nxv32i16(<vscale x 32 x i8> %val,<vscale x 32 x i8> %val, ptr %base, <vscale x 32 x i16> %index, <vscale x 32 x i1> %mask, i32 %vl)
5882   ret void
5885 declare void @llvm.riscv.vsoxseg2.nxv32i8.nxv32i8(<vscale x 32 x i8>,<vscale x 32 x i8>, ptr, <vscale x 32 x i8>, i32)
5886 declare void @llvm.riscv.vsoxseg2.mask.nxv32i8.nxv32i8(<vscale x 32 x i8>,<vscale x 32 x i8>, ptr, <vscale x 32 x i8>, <vscale x 32 x i1>, i32)
5888 define void @test_vsoxseg2_nxv32i8_nxv32i8(<vscale x 32 x i8> %val, ptr %base, <vscale x 32 x i8> %index, i32 %vl) {
5889 ; CHECK-LABEL: test_vsoxseg2_nxv32i8_nxv32i8:
5890 ; CHECK:       # %bb.0: # %entry
5891 ; CHECK-NEXT:    vmv4r.v v16, v12
5892 ; CHECK-NEXT:    vmv4r.v v12, v8
5893 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
5894 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v16
5895 ; CHECK-NEXT:    ret
5896 entry:
5897   tail call void @llvm.riscv.vsoxseg2.nxv32i8.nxv32i8(<vscale x 32 x i8> %val,<vscale x 32 x i8> %val, ptr %base, <vscale x 32 x i8> %index, i32 %vl)
5898   ret void
5901 define void @test_vsoxseg2_mask_nxv32i8_nxv32i8(<vscale x 32 x i8> %val, ptr %base, <vscale x 32 x i8> %index, <vscale x 32 x i1> %mask, i32 %vl) {
5902 ; CHECK-LABEL: test_vsoxseg2_mask_nxv32i8_nxv32i8:
5903 ; CHECK:       # %bb.0: # %entry
5904 ; CHECK-NEXT:    vmv4r.v v16, v12
5905 ; CHECK-NEXT:    vmv4r.v v12, v8
5906 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
5907 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v16, v0.t
5908 ; CHECK-NEXT:    ret
5909 entry:
5910   tail call void @llvm.riscv.vsoxseg2.mask.nxv32i8.nxv32i8(<vscale x 32 x i8> %val,<vscale x 32 x i8> %val, ptr %base, <vscale x 32 x i8> %index, <vscale x 32 x i1> %mask, i32 %vl)
5911   ret void
5914 declare void @llvm.riscv.vsoxseg2.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, i32)
5915 declare void @llvm.riscv.vsoxseg2.mask.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
5917 define void @test_vsoxseg2_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
5918 ; CHECK-LABEL: test_vsoxseg2_nxv2i8_nxv2i32:
5919 ; CHECK:       # %bb.0: # %entry
5920 ; CHECK-NEXT:    vmv1r.v v10, v9
5921 ; CHECK-NEXT:    vmv1r.v v9, v8
5922 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
5923 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
5924 ; CHECK-NEXT:    ret
5925 entry:
5926   tail call void @llvm.riscv.vsoxseg2.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
5927   ret void
5930 define void @test_vsoxseg2_mask_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
5931 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2i8_nxv2i32:
5932 ; CHECK:       # %bb.0: # %entry
5933 ; CHECK-NEXT:    vmv1r.v v10, v9
5934 ; CHECK-NEXT:    vmv1r.v v9, v8
5935 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
5936 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
5937 ; CHECK-NEXT:    ret
5938 entry:
5939   tail call void @llvm.riscv.vsoxseg2.mask.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
5940   ret void
5943 declare void @llvm.riscv.vsoxseg2.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, i32)
5944 declare void @llvm.riscv.vsoxseg2.mask.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
5946 define void @test_vsoxseg2_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
5947 ; CHECK-LABEL: test_vsoxseg2_nxv2i8_nxv2i8:
5948 ; CHECK:       # %bb.0: # %entry
5949 ; CHECK-NEXT:    vmv1r.v v10, v9
5950 ; CHECK-NEXT:    vmv1r.v v9, v8
5951 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
5952 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
5953 ; CHECK-NEXT:    ret
5954 entry:
5955   tail call void @llvm.riscv.vsoxseg2.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
5956   ret void
5959 define void @test_vsoxseg2_mask_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
5960 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2i8_nxv2i8:
5961 ; CHECK:       # %bb.0: # %entry
5962 ; CHECK-NEXT:    vmv1r.v v10, v9
5963 ; CHECK-NEXT:    vmv1r.v v9, v8
5964 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
5965 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
5966 ; CHECK-NEXT:    ret
5967 entry:
5968   tail call void @llvm.riscv.vsoxseg2.mask.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
5969   ret void
5972 declare void @llvm.riscv.vsoxseg2.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, i32)
5973 declare void @llvm.riscv.vsoxseg2.mask.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
5975 define void @test_vsoxseg2_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
5976 ; CHECK-LABEL: test_vsoxseg2_nxv2i8_nxv2i16:
5977 ; CHECK:       # %bb.0: # %entry
5978 ; CHECK-NEXT:    vmv1r.v v10, v9
5979 ; CHECK-NEXT:    vmv1r.v v9, v8
5980 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
5981 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
5982 ; CHECK-NEXT:    ret
5983 entry:
5984   tail call void @llvm.riscv.vsoxseg2.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
5985   ret void
5988 define void @test_vsoxseg2_mask_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
5989 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2i8_nxv2i16:
5990 ; CHECK:       # %bb.0: # %entry
5991 ; CHECK-NEXT:    vmv1r.v v10, v9
5992 ; CHECK-NEXT:    vmv1r.v v9, v8
5993 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
5994 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
5995 ; CHECK-NEXT:    ret
5996 entry:
5997   tail call void @llvm.riscv.vsoxseg2.mask.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
5998   ret void
6001 declare void @llvm.riscv.vsoxseg3.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, i32)
6002 declare void @llvm.riscv.vsoxseg3.mask.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
6004 define void @test_vsoxseg3_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
6005 ; CHECK-LABEL: test_vsoxseg3_nxv2i8_nxv2i32:
6006 ; CHECK:       # %bb.0: # %entry
6007 ; CHECK-NEXT:    vmv1r.v v10, v8
6008 ; CHECK-NEXT:    vmv1r.v v11, v8
6009 ; CHECK-NEXT:    vmv1r.v v12, v8
6010 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6011 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9
6012 ; CHECK-NEXT:    ret
6013 entry:
6014   tail call void @llvm.riscv.vsoxseg3.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
6015   ret void
6018 define void @test_vsoxseg3_mask_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6019 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2i8_nxv2i32:
6020 ; CHECK:       # %bb.0: # %entry
6021 ; CHECK-NEXT:    vmv1r.v v10, v8
6022 ; CHECK-NEXT:    vmv1r.v v11, v8
6023 ; CHECK-NEXT:    vmv1r.v v12, v8
6024 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6025 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9, v0.t
6026 ; CHECK-NEXT:    ret
6027 entry:
6028   tail call void @llvm.riscv.vsoxseg3.mask.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
6029   ret void
6032 declare void @llvm.riscv.vsoxseg3.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, i32)
6033 declare void @llvm.riscv.vsoxseg3.mask.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
6035 define void @test_vsoxseg3_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
6036 ; CHECK-LABEL: test_vsoxseg3_nxv2i8_nxv2i8:
6037 ; CHECK:       # %bb.0: # %entry
6038 ; CHECK-NEXT:    vmv1r.v v10, v8
6039 ; CHECK-NEXT:    vmv1r.v v11, v8
6040 ; CHECK-NEXT:    vmv1r.v v12, v8
6041 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6042 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
6043 ; CHECK-NEXT:    ret
6044 entry:
6045   tail call void @llvm.riscv.vsoxseg3.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
6046   ret void
6049 define void @test_vsoxseg3_mask_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6050 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2i8_nxv2i8:
6051 ; CHECK:       # %bb.0: # %entry
6052 ; CHECK-NEXT:    vmv1r.v v10, v8
6053 ; CHECK-NEXT:    vmv1r.v v11, v8
6054 ; CHECK-NEXT:    vmv1r.v v12, v8
6055 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6056 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
6057 ; CHECK-NEXT:    ret
6058 entry:
6059   tail call void @llvm.riscv.vsoxseg3.mask.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
6060   ret void
6063 declare void @llvm.riscv.vsoxseg3.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, i32)
6064 declare void @llvm.riscv.vsoxseg3.mask.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
6066 define void @test_vsoxseg3_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
6067 ; CHECK-LABEL: test_vsoxseg3_nxv2i8_nxv2i16:
6068 ; CHECK:       # %bb.0: # %entry
6069 ; CHECK-NEXT:    vmv1r.v v10, v8
6070 ; CHECK-NEXT:    vmv1r.v v11, v8
6071 ; CHECK-NEXT:    vmv1r.v v12, v8
6072 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6073 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
6074 ; CHECK-NEXT:    ret
6075 entry:
6076   tail call void @llvm.riscv.vsoxseg3.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
6077   ret void
6080 define void @test_vsoxseg3_mask_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6081 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2i8_nxv2i16:
6082 ; CHECK:       # %bb.0: # %entry
6083 ; CHECK-NEXT:    vmv1r.v v10, v8
6084 ; CHECK-NEXT:    vmv1r.v v11, v8
6085 ; CHECK-NEXT:    vmv1r.v v12, v8
6086 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6087 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
6088 ; CHECK-NEXT:    ret
6089 entry:
6090   tail call void @llvm.riscv.vsoxseg3.mask.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
6091   ret void
6094 declare void @llvm.riscv.vsoxseg4.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, i32)
6095 declare void @llvm.riscv.vsoxseg4.mask.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
6097 define void @test_vsoxseg4_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
6098 ; CHECK-LABEL: test_vsoxseg4_nxv2i8_nxv2i32:
6099 ; CHECK:       # %bb.0: # %entry
6100 ; CHECK-NEXT:    vmv1r.v v10, v8
6101 ; CHECK-NEXT:    vmv1r.v v11, v8
6102 ; CHECK-NEXT:    vmv1r.v v12, v8
6103 ; CHECK-NEXT:    vmv1r.v v13, v8
6104 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6105 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9
6106 ; CHECK-NEXT:    ret
6107 entry:
6108   tail call void @llvm.riscv.vsoxseg4.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
6109   ret void
6112 define void @test_vsoxseg4_mask_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6113 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2i8_nxv2i32:
6114 ; CHECK:       # %bb.0: # %entry
6115 ; CHECK-NEXT:    vmv1r.v v10, v8
6116 ; CHECK-NEXT:    vmv1r.v v11, v8
6117 ; CHECK-NEXT:    vmv1r.v v12, v8
6118 ; CHECK-NEXT:    vmv1r.v v13, v8
6119 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6120 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9, v0.t
6121 ; CHECK-NEXT:    ret
6122 entry:
6123   tail call void @llvm.riscv.vsoxseg4.mask.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
6124   ret void
6127 declare void @llvm.riscv.vsoxseg4.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, i32)
6128 declare void @llvm.riscv.vsoxseg4.mask.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
6130 define void @test_vsoxseg4_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
6131 ; CHECK-LABEL: test_vsoxseg4_nxv2i8_nxv2i8:
6132 ; CHECK:       # %bb.0: # %entry
6133 ; CHECK-NEXT:    vmv1r.v v10, v8
6134 ; CHECK-NEXT:    vmv1r.v v11, v8
6135 ; CHECK-NEXT:    vmv1r.v v12, v8
6136 ; CHECK-NEXT:    vmv1r.v v13, v8
6137 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6138 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
6139 ; CHECK-NEXT:    ret
6140 entry:
6141   tail call void @llvm.riscv.vsoxseg4.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
6142   ret void
6145 define void @test_vsoxseg4_mask_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6146 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2i8_nxv2i8:
6147 ; CHECK:       # %bb.0: # %entry
6148 ; CHECK-NEXT:    vmv1r.v v10, v8
6149 ; CHECK-NEXT:    vmv1r.v v11, v8
6150 ; CHECK-NEXT:    vmv1r.v v12, v8
6151 ; CHECK-NEXT:    vmv1r.v v13, v8
6152 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6153 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
6154 ; CHECK-NEXT:    ret
6155 entry:
6156   tail call void @llvm.riscv.vsoxseg4.mask.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
6157   ret void
6160 declare void @llvm.riscv.vsoxseg4.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, i32)
6161 declare void @llvm.riscv.vsoxseg4.mask.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
6163 define void @test_vsoxseg4_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
6164 ; CHECK-LABEL: test_vsoxseg4_nxv2i8_nxv2i16:
6165 ; CHECK:       # %bb.0: # %entry
6166 ; CHECK-NEXT:    vmv1r.v v10, v8
6167 ; CHECK-NEXT:    vmv1r.v v11, v8
6168 ; CHECK-NEXT:    vmv1r.v v12, v8
6169 ; CHECK-NEXT:    vmv1r.v v13, v8
6170 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6171 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
6172 ; CHECK-NEXT:    ret
6173 entry:
6174   tail call void @llvm.riscv.vsoxseg4.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
6175   ret void
6178 define void @test_vsoxseg4_mask_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6179 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2i8_nxv2i16:
6180 ; CHECK:       # %bb.0: # %entry
6181 ; CHECK-NEXT:    vmv1r.v v10, v8
6182 ; CHECK-NEXT:    vmv1r.v v11, v8
6183 ; CHECK-NEXT:    vmv1r.v v12, v8
6184 ; CHECK-NEXT:    vmv1r.v v13, v8
6185 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6186 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
6187 ; CHECK-NEXT:    ret
6188 entry:
6189   tail call void @llvm.riscv.vsoxseg4.mask.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
6190   ret void
6193 declare void @llvm.riscv.vsoxseg5.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, i32)
6194 declare void @llvm.riscv.vsoxseg5.mask.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
6196 define void @test_vsoxseg5_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
6197 ; CHECK-LABEL: test_vsoxseg5_nxv2i8_nxv2i32:
6198 ; CHECK:       # %bb.0: # %entry
6199 ; CHECK-NEXT:    vmv1r.v v10, v8
6200 ; CHECK-NEXT:    vmv1r.v v11, v8
6201 ; CHECK-NEXT:    vmv1r.v v12, v8
6202 ; CHECK-NEXT:    vmv1r.v v13, v8
6203 ; CHECK-NEXT:    vmv1r.v v14, v8
6204 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6205 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9
6206 ; CHECK-NEXT:    ret
6207 entry:
6208   tail call void @llvm.riscv.vsoxseg5.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
6209   ret void
6212 define void @test_vsoxseg5_mask_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6213 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2i8_nxv2i32:
6214 ; CHECK:       # %bb.0: # %entry
6215 ; CHECK-NEXT:    vmv1r.v v10, v8
6216 ; CHECK-NEXT:    vmv1r.v v11, v8
6217 ; CHECK-NEXT:    vmv1r.v v12, v8
6218 ; CHECK-NEXT:    vmv1r.v v13, v8
6219 ; CHECK-NEXT:    vmv1r.v v14, v8
6220 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6221 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9, v0.t
6222 ; CHECK-NEXT:    ret
6223 entry:
6224   tail call void @llvm.riscv.vsoxseg5.mask.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
6225   ret void
6228 declare void @llvm.riscv.vsoxseg5.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, i32)
6229 declare void @llvm.riscv.vsoxseg5.mask.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
6231 define void @test_vsoxseg5_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
6232 ; CHECK-LABEL: test_vsoxseg5_nxv2i8_nxv2i8:
6233 ; CHECK:       # %bb.0: # %entry
6234 ; CHECK-NEXT:    vmv1r.v v10, v8
6235 ; CHECK-NEXT:    vmv1r.v v11, v8
6236 ; CHECK-NEXT:    vmv1r.v v12, v8
6237 ; CHECK-NEXT:    vmv1r.v v13, v8
6238 ; CHECK-NEXT:    vmv1r.v v14, v8
6239 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6240 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
6241 ; CHECK-NEXT:    ret
6242 entry:
6243   tail call void @llvm.riscv.vsoxseg5.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
6244   ret void
6247 define void @test_vsoxseg5_mask_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6248 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2i8_nxv2i8:
6249 ; CHECK:       # %bb.0: # %entry
6250 ; CHECK-NEXT:    vmv1r.v v10, v8
6251 ; CHECK-NEXT:    vmv1r.v v11, v8
6252 ; CHECK-NEXT:    vmv1r.v v12, v8
6253 ; CHECK-NEXT:    vmv1r.v v13, v8
6254 ; CHECK-NEXT:    vmv1r.v v14, v8
6255 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6256 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
6257 ; CHECK-NEXT:    ret
6258 entry:
6259   tail call void @llvm.riscv.vsoxseg5.mask.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
6260   ret void
6263 declare void @llvm.riscv.vsoxseg5.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, i32)
6264 declare void @llvm.riscv.vsoxseg5.mask.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
6266 define void @test_vsoxseg5_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
6267 ; CHECK-LABEL: test_vsoxseg5_nxv2i8_nxv2i16:
6268 ; CHECK:       # %bb.0: # %entry
6269 ; CHECK-NEXT:    vmv1r.v v10, v8
6270 ; CHECK-NEXT:    vmv1r.v v11, v8
6271 ; CHECK-NEXT:    vmv1r.v v12, v8
6272 ; CHECK-NEXT:    vmv1r.v v13, v8
6273 ; CHECK-NEXT:    vmv1r.v v14, v8
6274 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6275 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
6276 ; CHECK-NEXT:    ret
6277 entry:
6278   tail call void @llvm.riscv.vsoxseg5.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
6279   ret void
6282 define void @test_vsoxseg5_mask_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6283 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2i8_nxv2i16:
6284 ; CHECK:       # %bb.0: # %entry
6285 ; CHECK-NEXT:    vmv1r.v v10, v8
6286 ; CHECK-NEXT:    vmv1r.v v11, v8
6287 ; CHECK-NEXT:    vmv1r.v v12, v8
6288 ; CHECK-NEXT:    vmv1r.v v13, v8
6289 ; CHECK-NEXT:    vmv1r.v v14, v8
6290 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6291 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
6292 ; CHECK-NEXT:    ret
6293 entry:
6294   tail call void @llvm.riscv.vsoxseg5.mask.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
6295   ret void
6298 declare void @llvm.riscv.vsoxseg6.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, i32)
6299 declare void @llvm.riscv.vsoxseg6.mask.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
6301 define void @test_vsoxseg6_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
6302 ; CHECK-LABEL: test_vsoxseg6_nxv2i8_nxv2i32:
6303 ; CHECK:       # %bb.0: # %entry
6304 ; CHECK-NEXT:    vmv1r.v v10, v8
6305 ; CHECK-NEXT:    vmv1r.v v11, v8
6306 ; CHECK-NEXT:    vmv1r.v v12, v8
6307 ; CHECK-NEXT:    vmv1r.v v13, v8
6308 ; CHECK-NEXT:    vmv1r.v v14, v8
6309 ; CHECK-NEXT:    vmv1r.v v15, v8
6310 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6311 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9
6312 ; CHECK-NEXT:    ret
6313 entry:
6314   tail call void @llvm.riscv.vsoxseg6.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
6315   ret void
6318 define void @test_vsoxseg6_mask_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6319 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2i8_nxv2i32:
6320 ; CHECK:       # %bb.0: # %entry
6321 ; CHECK-NEXT:    vmv1r.v v10, v8
6322 ; CHECK-NEXT:    vmv1r.v v11, v8
6323 ; CHECK-NEXT:    vmv1r.v v12, v8
6324 ; CHECK-NEXT:    vmv1r.v v13, v8
6325 ; CHECK-NEXT:    vmv1r.v v14, v8
6326 ; CHECK-NEXT:    vmv1r.v v15, v8
6327 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6328 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9, v0.t
6329 ; CHECK-NEXT:    ret
6330 entry:
6331   tail call void @llvm.riscv.vsoxseg6.mask.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
6332   ret void
6335 declare void @llvm.riscv.vsoxseg6.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, i32)
6336 declare void @llvm.riscv.vsoxseg6.mask.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
6338 define void @test_vsoxseg6_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
6339 ; CHECK-LABEL: test_vsoxseg6_nxv2i8_nxv2i8:
6340 ; CHECK:       # %bb.0: # %entry
6341 ; CHECK-NEXT:    vmv1r.v v10, v8
6342 ; CHECK-NEXT:    vmv1r.v v11, v8
6343 ; CHECK-NEXT:    vmv1r.v v12, v8
6344 ; CHECK-NEXT:    vmv1r.v v13, v8
6345 ; CHECK-NEXT:    vmv1r.v v14, v8
6346 ; CHECK-NEXT:    vmv1r.v v15, v8
6347 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6348 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
6349 ; CHECK-NEXT:    ret
6350 entry:
6351   tail call void @llvm.riscv.vsoxseg6.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
6352   ret void
6355 define void @test_vsoxseg6_mask_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6356 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2i8_nxv2i8:
6357 ; CHECK:       # %bb.0: # %entry
6358 ; CHECK-NEXT:    vmv1r.v v10, v8
6359 ; CHECK-NEXT:    vmv1r.v v11, v8
6360 ; CHECK-NEXT:    vmv1r.v v12, v8
6361 ; CHECK-NEXT:    vmv1r.v v13, v8
6362 ; CHECK-NEXT:    vmv1r.v v14, v8
6363 ; CHECK-NEXT:    vmv1r.v v15, v8
6364 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6365 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
6366 ; CHECK-NEXT:    ret
6367 entry:
6368   tail call void @llvm.riscv.vsoxseg6.mask.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
6369   ret void
6372 declare void @llvm.riscv.vsoxseg6.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, i32)
6373 declare void @llvm.riscv.vsoxseg6.mask.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
6375 define void @test_vsoxseg6_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
6376 ; CHECK-LABEL: test_vsoxseg6_nxv2i8_nxv2i16:
6377 ; CHECK:       # %bb.0: # %entry
6378 ; CHECK-NEXT:    vmv1r.v v10, v8
6379 ; CHECK-NEXT:    vmv1r.v v11, v8
6380 ; CHECK-NEXT:    vmv1r.v v12, v8
6381 ; CHECK-NEXT:    vmv1r.v v13, v8
6382 ; CHECK-NEXT:    vmv1r.v v14, v8
6383 ; CHECK-NEXT:    vmv1r.v v15, v8
6384 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6385 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
6386 ; CHECK-NEXT:    ret
6387 entry:
6388   tail call void @llvm.riscv.vsoxseg6.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
6389   ret void
6392 define void @test_vsoxseg6_mask_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6393 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2i8_nxv2i16:
6394 ; CHECK:       # %bb.0: # %entry
6395 ; CHECK-NEXT:    vmv1r.v v10, v8
6396 ; CHECK-NEXT:    vmv1r.v v11, v8
6397 ; CHECK-NEXT:    vmv1r.v v12, v8
6398 ; CHECK-NEXT:    vmv1r.v v13, v8
6399 ; CHECK-NEXT:    vmv1r.v v14, v8
6400 ; CHECK-NEXT:    vmv1r.v v15, v8
6401 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6402 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
6403 ; CHECK-NEXT:    ret
6404 entry:
6405   tail call void @llvm.riscv.vsoxseg6.mask.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
6406   ret void
6409 declare void @llvm.riscv.vsoxseg7.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, i32)
6410 declare void @llvm.riscv.vsoxseg7.mask.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
6412 define void @test_vsoxseg7_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
6413 ; CHECK-LABEL: test_vsoxseg7_nxv2i8_nxv2i32:
6414 ; CHECK:       # %bb.0: # %entry
6415 ; CHECK-NEXT:    vmv1r.v v10, v8
6416 ; CHECK-NEXT:    vmv1r.v v11, v8
6417 ; CHECK-NEXT:    vmv1r.v v12, v8
6418 ; CHECK-NEXT:    vmv1r.v v13, v8
6419 ; CHECK-NEXT:    vmv1r.v v14, v8
6420 ; CHECK-NEXT:    vmv1r.v v15, v8
6421 ; CHECK-NEXT:    vmv1r.v v16, v8
6422 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6423 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9
6424 ; CHECK-NEXT:    ret
6425 entry:
6426   tail call void @llvm.riscv.vsoxseg7.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
6427   ret void
6430 define void @test_vsoxseg7_mask_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6431 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2i8_nxv2i32:
6432 ; CHECK:       # %bb.0: # %entry
6433 ; CHECK-NEXT:    vmv1r.v v10, v8
6434 ; CHECK-NEXT:    vmv1r.v v11, v8
6435 ; CHECK-NEXT:    vmv1r.v v12, v8
6436 ; CHECK-NEXT:    vmv1r.v v13, v8
6437 ; CHECK-NEXT:    vmv1r.v v14, v8
6438 ; CHECK-NEXT:    vmv1r.v v15, v8
6439 ; CHECK-NEXT:    vmv1r.v v16, v8
6440 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6441 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9, v0.t
6442 ; CHECK-NEXT:    ret
6443 entry:
6444   tail call void @llvm.riscv.vsoxseg7.mask.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
6445   ret void
6448 declare void @llvm.riscv.vsoxseg7.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, i32)
6449 declare void @llvm.riscv.vsoxseg7.mask.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
6451 define void @test_vsoxseg7_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
6452 ; CHECK-LABEL: test_vsoxseg7_nxv2i8_nxv2i8:
6453 ; CHECK:       # %bb.0: # %entry
6454 ; CHECK-NEXT:    vmv1r.v v10, v8
6455 ; CHECK-NEXT:    vmv1r.v v11, v8
6456 ; CHECK-NEXT:    vmv1r.v v12, v8
6457 ; CHECK-NEXT:    vmv1r.v v13, v8
6458 ; CHECK-NEXT:    vmv1r.v v14, v8
6459 ; CHECK-NEXT:    vmv1r.v v15, v8
6460 ; CHECK-NEXT:    vmv1r.v v16, v8
6461 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6462 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
6463 ; CHECK-NEXT:    ret
6464 entry:
6465   tail call void @llvm.riscv.vsoxseg7.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
6466   ret void
6469 define void @test_vsoxseg7_mask_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6470 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2i8_nxv2i8:
6471 ; CHECK:       # %bb.0: # %entry
6472 ; CHECK-NEXT:    vmv1r.v v10, v8
6473 ; CHECK-NEXT:    vmv1r.v v11, v8
6474 ; CHECK-NEXT:    vmv1r.v v12, v8
6475 ; CHECK-NEXT:    vmv1r.v v13, v8
6476 ; CHECK-NEXT:    vmv1r.v v14, v8
6477 ; CHECK-NEXT:    vmv1r.v v15, v8
6478 ; CHECK-NEXT:    vmv1r.v v16, v8
6479 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6480 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
6481 ; CHECK-NEXT:    ret
6482 entry:
6483   tail call void @llvm.riscv.vsoxseg7.mask.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
6484   ret void
6487 declare void @llvm.riscv.vsoxseg7.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, i32)
6488 declare void @llvm.riscv.vsoxseg7.mask.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
6490 define void @test_vsoxseg7_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
6491 ; CHECK-LABEL: test_vsoxseg7_nxv2i8_nxv2i16:
6492 ; CHECK:       # %bb.0: # %entry
6493 ; CHECK-NEXT:    vmv1r.v v10, v8
6494 ; CHECK-NEXT:    vmv1r.v v11, v8
6495 ; CHECK-NEXT:    vmv1r.v v12, v8
6496 ; CHECK-NEXT:    vmv1r.v v13, v8
6497 ; CHECK-NEXT:    vmv1r.v v14, v8
6498 ; CHECK-NEXT:    vmv1r.v v15, v8
6499 ; CHECK-NEXT:    vmv1r.v v16, v8
6500 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6501 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
6502 ; CHECK-NEXT:    ret
6503 entry:
6504   tail call void @llvm.riscv.vsoxseg7.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
6505   ret void
6508 define void @test_vsoxseg7_mask_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6509 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2i8_nxv2i16:
6510 ; CHECK:       # %bb.0: # %entry
6511 ; CHECK-NEXT:    vmv1r.v v10, v8
6512 ; CHECK-NEXT:    vmv1r.v v11, v8
6513 ; CHECK-NEXT:    vmv1r.v v12, v8
6514 ; CHECK-NEXT:    vmv1r.v v13, v8
6515 ; CHECK-NEXT:    vmv1r.v v14, v8
6516 ; CHECK-NEXT:    vmv1r.v v15, v8
6517 ; CHECK-NEXT:    vmv1r.v v16, v8
6518 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6519 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
6520 ; CHECK-NEXT:    ret
6521 entry:
6522   tail call void @llvm.riscv.vsoxseg7.mask.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
6523   ret void
6526 declare void @llvm.riscv.vsoxseg8.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, i32)
6527 declare void @llvm.riscv.vsoxseg8.mask.nxv2i8.nxv2i32(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
6529 define void @test_vsoxseg8_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
6530 ; CHECK-LABEL: test_vsoxseg8_nxv2i8_nxv2i32:
6531 ; CHECK:       # %bb.0: # %entry
6532 ; CHECK-NEXT:    vmv1r.v v10, v8
6533 ; CHECK-NEXT:    vmv1r.v v11, v8
6534 ; CHECK-NEXT:    vmv1r.v v12, v8
6535 ; CHECK-NEXT:    vmv1r.v v13, v8
6536 ; CHECK-NEXT:    vmv1r.v v14, v8
6537 ; CHECK-NEXT:    vmv1r.v v15, v8
6538 ; CHECK-NEXT:    vmv1r.v v16, v8
6539 ; CHECK-NEXT:    vmv1r.v v17, v8
6540 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6541 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9
6542 ; CHECK-NEXT:    ret
6543 entry:
6544   tail call void @llvm.riscv.vsoxseg8.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
6545   ret void
6548 define void @test_vsoxseg8_mask_nxv2i8_nxv2i32(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6549 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2i8_nxv2i32:
6550 ; CHECK:       # %bb.0: # %entry
6551 ; CHECK-NEXT:    vmv1r.v v10, v8
6552 ; CHECK-NEXT:    vmv1r.v v11, v8
6553 ; CHECK-NEXT:    vmv1r.v v12, v8
6554 ; CHECK-NEXT:    vmv1r.v v13, v8
6555 ; CHECK-NEXT:    vmv1r.v v14, v8
6556 ; CHECK-NEXT:    vmv1r.v v15, v8
6557 ; CHECK-NEXT:    vmv1r.v v16, v8
6558 ; CHECK-NEXT:    vmv1r.v v17, v8
6559 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6560 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9, v0.t
6561 ; CHECK-NEXT:    ret
6562 entry:
6563   tail call void @llvm.riscv.vsoxseg8.mask.nxv2i8.nxv2i32(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
6564   ret void
6567 declare void @llvm.riscv.vsoxseg8.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, i32)
6568 declare void @llvm.riscv.vsoxseg8.mask.nxv2i8.nxv2i8(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
6570 define void @test_vsoxseg8_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
6571 ; CHECK-LABEL: test_vsoxseg8_nxv2i8_nxv2i8:
6572 ; CHECK:       # %bb.0: # %entry
6573 ; CHECK-NEXT:    vmv1r.v v10, v8
6574 ; CHECK-NEXT:    vmv1r.v v11, v8
6575 ; CHECK-NEXT:    vmv1r.v v12, v8
6576 ; CHECK-NEXT:    vmv1r.v v13, v8
6577 ; CHECK-NEXT:    vmv1r.v v14, v8
6578 ; CHECK-NEXT:    vmv1r.v v15, v8
6579 ; CHECK-NEXT:    vmv1r.v v16, v8
6580 ; CHECK-NEXT:    vmv1r.v v17, v8
6581 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6582 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
6583 ; CHECK-NEXT:    ret
6584 entry:
6585   tail call void @llvm.riscv.vsoxseg8.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
6586   ret void
6589 define void @test_vsoxseg8_mask_nxv2i8_nxv2i8(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6590 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2i8_nxv2i8:
6591 ; CHECK:       # %bb.0: # %entry
6592 ; CHECK-NEXT:    vmv1r.v v10, v8
6593 ; CHECK-NEXT:    vmv1r.v v11, v8
6594 ; CHECK-NEXT:    vmv1r.v v12, v8
6595 ; CHECK-NEXT:    vmv1r.v v13, v8
6596 ; CHECK-NEXT:    vmv1r.v v14, v8
6597 ; CHECK-NEXT:    vmv1r.v v15, v8
6598 ; CHECK-NEXT:    vmv1r.v v16, v8
6599 ; CHECK-NEXT:    vmv1r.v v17, v8
6600 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6601 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
6602 ; CHECK-NEXT:    ret
6603 entry:
6604   tail call void @llvm.riscv.vsoxseg8.mask.nxv2i8.nxv2i8(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
6605   ret void
6608 declare void @llvm.riscv.vsoxseg8.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, i32)
6609 declare void @llvm.riscv.vsoxseg8.mask.nxv2i8.nxv2i16(<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>,<vscale x 2 x i8>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
6611 define void @test_vsoxseg8_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
6612 ; CHECK-LABEL: test_vsoxseg8_nxv2i8_nxv2i16:
6613 ; CHECK:       # %bb.0: # %entry
6614 ; CHECK-NEXT:    vmv1r.v v10, v8
6615 ; CHECK-NEXT:    vmv1r.v v11, v8
6616 ; CHECK-NEXT:    vmv1r.v v12, v8
6617 ; CHECK-NEXT:    vmv1r.v v13, v8
6618 ; CHECK-NEXT:    vmv1r.v v14, v8
6619 ; CHECK-NEXT:    vmv1r.v v15, v8
6620 ; CHECK-NEXT:    vmv1r.v v16, v8
6621 ; CHECK-NEXT:    vmv1r.v v17, v8
6622 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6623 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
6624 ; CHECK-NEXT:    ret
6625 entry:
6626   tail call void @llvm.riscv.vsoxseg8.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
6627   ret void
6630 define void @test_vsoxseg8_mask_nxv2i8_nxv2i16(<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6631 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2i8_nxv2i16:
6632 ; CHECK:       # %bb.0: # %entry
6633 ; CHECK-NEXT:    vmv1r.v v10, v8
6634 ; CHECK-NEXT:    vmv1r.v v11, v8
6635 ; CHECK-NEXT:    vmv1r.v v12, v8
6636 ; CHECK-NEXT:    vmv1r.v v13, v8
6637 ; CHECK-NEXT:    vmv1r.v v14, v8
6638 ; CHECK-NEXT:    vmv1r.v v15, v8
6639 ; CHECK-NEXT:    vmv1r.v v16, v8
6640 ; CHECK-NEXT:    vmv1r.v v17, v8
6641 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
6642 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
6643 ; CHECK-NEXT:    ret
6644 entry:
6645   tail call void @llvm.riscv.vsoxseg8.mask.nxv2i8.nxv2i16(<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val,<vscale x 2 x i8> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
6646   ret void
6649 declare void @llvm.riscv.vsoxseg2.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, i32)
6650 declare void @llvm.riscv.vsoxseg2.mask.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
6652 define void @test_vsoxseg2_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
6653 ; CHECK-LABEL: test_vsoxseg2_nxv2i16_nxv2i32:
6654 ; CHECK:       # %bb.0: # %entry
6655 ; CHECK-NEXT:    vmv1r.v v10, v9
6656 ; CHECK-NEXT:    vmv1r.v v9, v8
6657 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6658 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
6659 ; CHECK-NEXT:    ret
6660 entry:
6661   tail call void @llvm.riscv.vsoxseg2.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
6662   ret void
6665 define void @test_vsoxseg2_mask_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6666 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2i16_nxv2i32:
6667 ; CHECK:       # %bb.0: # %entry
6668 ; CHECK-NEXT:    vmv1r.v v10, v9
6669 ; CHECK-NEXT:    vmv1r.v v9, v8
6670 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6671 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
6672 ; CHECK-NEXT:    ret
6673 entry:
6674   tail call void @llvm.riscv.vsoxseg2.mask.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
6675   ret void
6678 declare void @llvm.riscv.vsoxseg2.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, i32)
6679 declare void @llvm.riscv.vsoxseg2.mask.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
6681 define void @test_vsoxseg2_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
6682 ; CHECK-LABEL: test_vsoxseg2_nxv2i16_nxv2i8:
6683 ; CHECK:       # %bb.0: # %entry
6684 ; CHECK-NEXT:    vmv1r.v v10, v9
6685 ; CHECK-NEXT:    vmv1r.v v9, v8
6686 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6687 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
6688 ; CHECK-NEXT:    ret
6689 entry:
6690   tail call void @llvm.riscv.vsoxseg2.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
6691   ret void
6694 define void @test_vsoxseg2_mask_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6695 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2i16_nxv2i8:
6696 ; CHECK:       # %bb.0: # %entry
6697 ; CHECK-NEXT:    vmv1r.v v10, v9
6698 ; CHECK-NEXT:    vmv1r.v v9, v8
6699 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6700 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
6701 ; CHECK-NEXT:    ret
6702 entry:
6703   tail call void @llvm.riscv.vsoxseg2.mask.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
6704   ret void
6707 declare void @llvm.riscv.vsoxseg2.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, i32)
6708 declare void @llvm.riscv.vsoxseg2.mask.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
6710 define void @test_vsoxseg2_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
6711 ; CHECK-LABEL: test_vsoxseg2_nxv2i16_nxv2i16:
6712 ; CHECK:       # %bb.0: # %entry
6713 ; CHECK-NEXT:    vmv1r.v v10, v9
6714 ; CHECK-NEXT:    vmv1r.v v9, v8
6715 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6716 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
6717 ; CHECK-NEXT:    ret
6718 entry:
6719   tail call void @llvm.riscv.vsoxseg2.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
6720   ret void
6723 define void @test_vsoxseg2_mask_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6724 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2i16_nxv2i16:
6725 ; CHECK:       # %bb.0: # %entry
6726 ; CHECK-NEXT:    vmv1r.v v10, v9
6727 ; CHECK-NEXT:    vmv1r.v v9, v8
6728 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6729 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
6730 ; CHECK-NEXT:    ret
6731 entry:
6732   tail call void @llvm.riscv.vsoxseg2.mask.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
6733   ret void
6736 declare void @llvm.riscv.vsoxseg3.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, i32)
6737 declare void @llvm.riscv.vsoxseg3.mask.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
6739 define void @test_vsoxseg3_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
6740 ; CHECK-LABEL: test_vsoxseg3_nxv2i16_nxv2i32:
6741 ; CHECK:       # %bb.0: # %entry
6742 ; CHECK-NEXT:    vmv1r.v v10, v8
6743 ; CHECK-NEXT:    vmv1r.v v11, v8
6744 ; CHECK-NEXT:    vmv1r.v v12, v8
6745 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6746 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9
6747 ; CHECK-NEXT:    ret
6748 entry:
6749   tail call void @llvm.riscv.vsoxseg3.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
6750   ret void
6753 define void @test_vsoxseg3_mask_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6754 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2i16_nxv2i32:
6755 ; CHECK:       # %bb.0: # %entry
6756 ; CHECK-NEXT:    vmv1r.v v10, v8
6757 ; CHECK-NEXT:    vmv1r.v v11, v8
6758 ; CHECK-NEXT:    vmv1r.v v12, v8
6759 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6760 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9, v0.t
6761 ; CHECK-NEXT:    ret
6762 entry:
6763   tail call void @llvm.riscv.vsoxseg3.mask.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
6764   ret void
6767 declare void @llvm.riscv.vsoxseg3.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, i32)
6768 declare void @llvm.riscv.vsoxseg3.mask.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
6770 define void @test_vsoxseg3_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
6771 ; CHECK-LABEL: test_vsoxseg3_nxv2i16_nxv2i8:
6772 ; CHECK:       # %bb.0: # %entry
6773 ; CHECK-NEXT:    vmv1r.v v10, v8
6774 ; CHECK-NEXT:    vmv1r.v v11, v8
6775 ; CHECK-NEXT:    vmv1r.v v12, v8
6776 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6777 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
6778 ; CHECK-NEXT:    ret
6779 entry:
6780   tail call void @llvm.riscv.vsoxseg3.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
6781   ret void
6784 define void @test_vsoxseg3_mask_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6785 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2i16_nxv2i8:
6786 ; CHECK:       # %bb.0: # %entry
6787 ; CHECK-NEXT:    vmv1r.v v10, v8
6788 ; CHECK-NEXT:    vmv1r.v v11, v8
6789 ; CHECK-NEXT:    vmv1r.v v12, v8
6790 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6791 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
6792 ; CHECK-NEXT:    ret
6793 entry:
6794   tail call void @llvm.riscv.vsoxseg3.mask.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
6795   ret void
6798 declare void @llvm.riscv.vsoxseg3.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, i32)
6799 declare void @llvm.riscv.vsoxseg3.mask.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
6801 define void @test_vsoxseg3_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
6802 ; CHECK-LABEL: test_vsoxseg3_nxv2i16_nxv2i16:
6803 ; CHECK:       # %bb.0: # %entry
6804 ; CHECK-NEXT:    vmv1r.v v10, v8
6805 ; CHECK-NEXT:    vmv1r.v v11, v8
6806 ; CHECK-NEXT:    vmv1r.v v12, v8
6807 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6808 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
6809 ; CHECK-NEXT:    ret
6810 entry:
6811   tail call void @llvm.riscv.vsoxseg3.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
6812   ret void
6815 define void @test_vsoxseg3_mask_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6816 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2i16_nxv2i16:
6817 ; CHECK:       # %bb.0: # %entry
6818 ; CHECK-NEXT:    vmv1r.v v10, v8
6819 ; CHECK-NEXT:    vmv1r.v v11, v8
6820 ; CHECK-NEXT:    vmv1r.v v12, v8
6821 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6822 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
6823 ; CHECK-NEXT:    ret
6824 entry:
6825   tail call void @llvm.riscv.vsoxseg3.mask.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
6826   ret void
6829 declare void @llvm.riscv.vsoxseg4.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, i32)
6830 declare void @llvm.riscv.vsoxseg4.mask.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
6832 define void @test_vsoxseg4_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
6833 ; CHECK-LABEL: test_vsoxseg4_nxv2i16_nxv2i32:
6834 ; CHECK:       # %bb.0: # %entry
6835 ; CHECK-NEXT:    vmv1r.v v10, v8
6836 ; CHECK-NEXT:    vmv1r.v v11, v8
6837 ; CHECK-NEXT:    vmv1r.v v12, v8
6838 ; CHECK-NEXT:    vmv1r.v v13, v8
6839 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6840 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9
6841 ; CHECK-NEXT:    ret
6842 entry:
6843   tail call void @llvm.riscv.vsoxseg4.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
6844   ret void
6847 define void @test_vsoxseg4_mask_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6848 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2i16_nxv2i32:
6849 ; CHECK:       # %bb.0: # %entry
6850 ; CHECK-NEXT:    vmv1r.v v10, v8
6851 ; CHECK-NEXT:    vmv1r.v v11, v8
6852 ; CHECK-NEXT:    vmv1r.v v12, v8
6853 ; CHECK-NEXT:    vmv1r.v v13, v8
6854 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6855 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9, v0.t
6856 ; CHECK-NEXT:    ret
6857 entry:
6858   tail call void @llvm.riscv.vsoxseg4.mask.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
6859   ret void
6862 declare void @llvm.riscv.vsoxseg4.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, i32)
6863 declare void @llvm.riscv.vsoxseg4.mask.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
6865 define void @test_vsoxseg4_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
6866 ; CHECK-LABEL: test_vsoxseg4_nxv2i16_nxv2i8:
6867 ; CHECK:       # %bb.0: # %entry
6868 ; CHECK-NEXT:    vmv1r.v v10, v8
6869 ; CHECK-NEXT:    vmv1r.v v11, v8
6870 ; CHECK-NEXT:    vmv1r.v v12, v8
6871 ; CHECK-NEXT:    vmv1r.v v13, v8
6872 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6873 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
6874 ; CHECK-NEXT:    ret
6875 entry:
6876   tail call void @llvm.riscv.vsoxseg4.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
6877   ret void
6880 define void @test_vsoxseg4_mask_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6881 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2i16_nxv2i8:
6882 ; CHECK:       # %bb.0: # %entry
6883 ; CHECK-NEXT:    vmv1r.v v10, v8
6884 ; CHECK-NEXT:    vmv1r.v v11, v8
6885 ; CHECK-NEXT:    vmv1r.v v12, v8
6886 ; CHECK-NEXT:    vmv1r.v v13, v8
6887 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6888 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
6889 ; CHECK-NEXT:    ret
6890 entry:
6891   tail call void @llvm.riscv.vsoxseg4.mask.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
6892   ret void
6895 declare void @llvm.riscv.vsoxseg4.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, i32)
6896 declare void @llvm.riscv.vsoxseg4.mask.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
6898 define void @test_vsoxseg4_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
6899 ; CHECK-LABEL: test_vsoxseg4_nxv2i16_nxv2i16:
6900 ; CHECK:       # %bb.0: # %entry
6901 ; CHECK-NEXT:    vmv1r.v v10, v8
6902 ; CHECK-NEXT:    vmv1r.v v11, v8
6903 ; CHECK-NEXT:    vmv1r.v v12, v8
6904 ; CHECK-NEXT:    vmv1r.v v13, v8
6905 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6906 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
6907 ; CHECK-NEXT:    ret
6908 entry:
6909   tail call void @llvm.riscv.vsoxseg4.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
6910   ret void
6913 define void @test_vsoxseg4_mask_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6914 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2i16_nxv2i16:
6915 ; CHECK:       # %bb.0: # %entry
6916 ; CHECK-NEXT:    vmv1r.v v10, v8
6917 ; CHECK-NEXT:    vmv1r.v v11, v8
6918 ; CHECK-NEXT:    vmv1r.v v12, v8
6919 ; CHECK-NEXT:    vmv1r.v v13, v8
6920 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6921 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
6922 ; CHECK-NEXT:    ret
6923 entry:
6924   tail call void @llvm.riscv.vsoxseg4.mask.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
6925   ret void
6928 declare void @llvm.riscv.vsoxseg5.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, i32)
6929 declare void @llvm.riscv.vsoxseg5.mask.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
6931 define void @test_vsoxseg5_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
6932 ; CHECK-LABEL: test_vsoxseg5_nxv2i16_nxv2i32:
6933 ; CHECK:       # %bb.0: # %entry
6934 ; CHECK-NEXT:    vmv1r.v v10, v8
6935 ; CHECK-NEXT:    vmv1r.v v11, v8
6936 ; CHECK-NEXT:    vmv1r.v v12, v8
6937 ; CHECK-NEXT:    vmv1r.v v13, v8
6938 ; CHECK-NEXT:    vmv1r.v v14, v8
6939 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6940 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9
6941 ; CHECK-NEXT:    ret
6942 entry:
6943   tail call void @llvm.riscv.vsoxseg5.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
6944   ret void
6947 define void @test_vsoxseg5_mask_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6948 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2i16_nxv2i32:
6949 ; CHECK:       # %bb.0: # %entry
6950 ; CHECK-NEXT:    vmv1r.v v10, v8
6951 ; CHECK-NEXT:    vmv1r.v v11, v8
6952 ; CHECK-NEXT:    vmv1r.v v12, v8
6953 ; CHECK-NEXT:    vmv1r.v v13, v8
6954 ; CHECK-NEXT:    vmv1r.v v14, v8
6955 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6956 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9, v0.t
6957 ; CHECK-NEXT:    ret
6958 entry:
6959   tail call void @llvm.riscv.vsoxseg5.mask.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
6960   ret void
6963 declare void @llvm.riscv.vsoxseg5.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, i32)
6964 declare void @llvm.riscv.vsoxseg5.mask.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
6966 define void @test_vsoxseg5_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
6967 ; CHECK-LABEL: test_vsoxseg5_nxv2i16_nxv2i8:
6968 ; CHECK:       # %bb.0: # %entry
6969 ; CHECK-NEXT:    vmv1r.v v10, v8
6970 ; CHECK-NEXT:    vmv1r.v v11, v8
6971 ; CHECK-NEXT:    vmv1r.v v12, v8
6972 ; CHECK-NEXT:    vmv1r.v v13, v8
6973 ; CHECK-NEXT:    vmv1r.v v14, v8
6974 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6975 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
6976 ; CHECK-NEXT:    ret
6977 entry:
6978   tail call void @llvm.riscv.vsoxseg5.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
6979   ret void
6982 define void @test_vsoxseg5_mask_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
6983 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2i16_nxv2i8:
6984 ; CHECK:       # %bb.0: # %entry
6985 ; CHECK-NEXT:    vmv1r.v v10, v8
6986 ; CHECK-NEXT:    vmv1r.v v11, v8
6987 ; CHECK-NEXT:    vmv1r.v v12, v8
6988 ; CHECK-NEXT:    vmv1r.v v13, v8
6989 ; CHECK-NEXT:    vmv1r.v v14, v8
6990 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
6991 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
6992 ; CHECK-NEXT:    ret
6993 entry:
6994   tail call void @llvm.riscv.vsoxseg5.mask.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
6995   ret void
6998 declare void @llvm.riscv.vsoxseg5.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, i32)
6999 declare void @llvm.riscv.vsoxseg5.mask.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
7001 define void @test_vsoxseg5_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
7002 ; CHECK-LABEL: test_vsoxseg5_nxv2i16_nxv2i16:
7003 ; CHECK:       # %bb.0: # %entry
7004 ; CHECK-NEXT:    vmv1r.v v10, v8
7005 ; CHECK-NEXT:    vmv1r.v v11, v8
7006 ; CHECK-NEXT:    vmv1r.v v12, v8
7007 ; CHECK-NEXT:    vmv1r.v v13, v8
7008 ; CHECK-NEXT:    vmv1r.v v14, v8
7009 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7010 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
7011 ; CHECK-NEXT:    ret
7012 entry:
7013   tail call void @llvm.riscv.vsoxseg5.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
7014   ret void
7017 define void @test_vsoxseg5_mask_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
7018 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2i16_nxv2i16:
7019 ; CHECK:       # %bb.0: # %entry
7020 ; CHECK-NEXT:    vmv1r.v v10, v8
7021 ; CHECK-NEXT:    vmv1r.v v11, v8
7022 ; CHECK-NEXT:    vmv1r.v v12, v8
7023 ; CHECK-NEXT:    vmv1r.v v13, v8
7024 ; CHECK-NEXT:    vmv1r.v v14, v8
7025 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7026 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
7027 ; CHECK-NEXT:    ret
7028 entry:
7029   tail call void @llvm.riscv.vsoxseg5.mask.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
7030   ret void
7033 declare void @llvm.riscv.vsoxseg6.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, i32)
7034 declare void @llvm.riscv.vsoxseg6.mask.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
7036 define void @test_vsoxseg6_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
7037 ; CHECK-LABEL: test_vsoxseg6_nxv2i16_nxv2i32:
7038 ; CHECK:       # %bb.0: # %entry
7039 ; CHECK-NEXT:    vmv1r.v v10, v8
7040 ; CHECK-NEXT:    vmv1r.v v11, v8
7041 ; CHECK-NEXT:    vmv1r.v v12, v8
7042 ; CHECK-NEXT:    vmv1r.v v13, v8
7043 ; CHECK-NEXT:    vmv1r.v v14, v8
7044 ; CHECK-NEXT:    vmv1r.v v15, v8
7045 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7046 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9
7047 ; CHECK-NEXT:    ret
7048 entry:
7049   tail call void @llvm.riscv.vsoxseg6.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
7050   ret void
7053 define void @test_vsoxseg6_mask_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
7054 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2i16_nxv2i32:
7055 ; CHECK:       # %bb.0: # %entry
7056 ; CHECK-NEXT:    vmv1r.v v10, v8
7057 ; CHECK-NEXT:    vmv1r.v v11, v8
7058 ; CHECK-NEXT:    vmv1r.v v12, v8
7059 ; CHECK-NEXT:    vmv1r.v v13, v8
7060 ; CHECK-NEXT:    vmv1r.v v14, v8
7061 ; CHECK-NEXT:    vmv1r.v v15, v8
7062 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7063 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9, v0.t
7064 ; CHECK-NEXT:    ret
7065 entry:
7066   tail call void @llvm.riscv.vsoxseg6.mask.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
7067   ret void
7070 declare void @llvm.riscv.vsoxseg6.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, i32)
7071 declare void @llvm.riscv.vsoxseg6.mask.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
7073 define void @test_vsoxseg6_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
7074 ; CHECK-LABEL: test_vsoxseg6_nxv2i16_nxv2i8:
7075 ; CHECK:       # %bb.0: # %entry
7076 ; CHECK-NEXT:    vmv1r.v v10, v8
7077 ; CHECK-NEXT:    vmv1r.v v11, v8
7078 ; CHECK-NEXT:    vmv1r.v v12, v8
7079 ; CHECK-NEXT:    vmv1r.v v13, v8
7080 ; CHECK-NEXT:    vmv1r.v v14, v8
7081 ; CHECK-NEXT:    vmv1r.v v15, v8
7082 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7083 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
7084 ; CHECK-NEXT:    ret
7085 entry:
7086   tail call void @llvm.riscv.vsoxseg6.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
7087   ret void
7090 define void @test_vsoxseg6_mask_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
7091 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2i16_nxv2i8:
7092 ; CHECK:       # %bb.0: # %entry
7093 ; CHECK-NEXT:    vmv1r.v v10, v8
7094 ; CHECK-NEXT:    vmv1r.v v11, v8
7095 ; CHECK-NEXT:    vmv1r.v v12, v8
7096 ; CHECK-NEXT:    vmv1r.v v13, v8
7097 ; CHECK-NEXT:    vmv1r.v v14, v8
7098 ; CHECK-NEXT:    vmv1r.v v15, v8
7099 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7100 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
7101 ; CHECK-NEXT:    ret
7102 entry:
7103   tail call void @llvm.riscv.vsoxseg6.mask.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
7104   ret void
7107 declare void @llvm.riscv.vsoxseg6.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, i32)
7108 declare void @llvm.riscv.vsoxseg6.mask.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
7110 define void @test_vsoxseg6_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
7111 ; CHECK-LABEL: test_vsoxseg6_nxv2i16_nxv2i16:
7112 ; CHECK:       # %bb.0: # %entry
7113 ; CHECK-NEXT:    vmv1r.v v10, v8
7114 ; CHECK-NEXT:    vmv1r.v v11, v8
7115 ; CHECK-NEXT:    vmv1r.v v12, v8
7116 ; CHECK-NEXT:    vmv1r.v v13, v8
7117 ; CHECK-NEXT:    vmv1r.v v14, v8
7118 ; CHECK-NEXT:    vmv1r.v v15, v8
7119 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7120 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
7121 ; CHECK-NEXT:    ret
7122 entry:
7123   tail call void @llvm.riscv.vsoxseg6.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
7124   ret void
7127 define void @test_vsoxseg6_mask_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
7128 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2i16_nxv2i16:
7129 ; CHECK:       # %bb.0: # %entry
7130 ; CHECK-NEXT:    vmv1r.v v10, v8
7131 ; CHECK-NEXT:    vmv1r.v v11, v8
7132 ; CHECK-NEXT:    vmv1r.v v12, v8
7133 ; CHECK-NEXT:    vmv1r.v v13, v8
7134 ; CHECK-NEXT:    vmv1r.v v14, v8
7135 ; CHECK-NEXT:    vmv1r.v v15, v8
7136 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7137 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
7138 ; CHECK-NEXT:    ret
7139 entry:
7140   tail call void @llvm.riscv.vsoxseg6.mask.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
7141   ret void
7144 declare void @llvm.riscv.vsoxseg7.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, i32)
7145 declare void @llvm.riscv.vsoxseg7.mask.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
7147 define void @test_vsoxseg7_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
7148 ; CHECK-LABEL: test_vsoxseg7_nxv2i16_nxv2i32:
7149 ; CHECK:       # %bb.0: # %entry
7150 ; CHECK-NEXT:    vmv1r.v v10, v8
7151 ; CHECK-NEXT:    vmv1r.v v11, v8
7152 ; CHECK-NEXT:    vmv1r.v v12, v8
7153 ; CHECK-NEXT:    vmv1r.v v13, v8
7154 ; CHECK-NEXT:    vmv1r.v v14, v8
7155 ; CHECK-NEXT:    vmv1r.v v15, v8
7156 ; CHECK-NEXT:    vmv1r.v v16, v8
7157 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7158 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9
7159 ; CHECK-NEXT:    ret
7160 entry:
7161   tail call void @llvm.riscv.vsoxseg7.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
7162   ret void
7165 define void @test_vsoxseg7_mask_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
7166 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2i16_nxv2i32:
7167 ; CHECK:       # %bb.0: # %entry
7168 ; CHECK-NEXT:    vmv1r.v v10, v8
7169 ; CHECK-NEXT:    vmv1r.v v11, v8
7170 ; CHECK-NEXT:    vmv1r.v v12, v8
7171 ; CHECK-NEXT:    vmv1r.v v13, v8
7172 ; CHECK-NEXT:    vmv1r.v v14, v8
7173 ; CHECK-NEXT:    vmv1r.v v15, v8
7174 ; CHECK-NEXT:    vmv1r.v v16, v8
7175 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7176 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9, v0.t
7177 ; CHECK-NEXT:    ret
7178 entry:
7179   tail call void @llvm.riscv.vsoxseg7.mask.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
7180   ret void
7183 declare void @llvm.riscv.vsoxseg7.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, i32)
7184 declare void @llvm.riscv.vsoxseg7.mask.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
7186 define void @test_vsoxseg7_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
7187 ; CHECK-LABEL: test_vsoxseg7_nxv2i16_nxv2i8:
7188 ; CHECK:       # %bb.0: # %entry
7189 ; CHECK-NEXT:    vmv1r.v v10, v8
7190 ; CHECK-NEXT:    vmv1r.v v11, v8
7191 ; CHECK-NEXT:    vmv1r.v v12, v8
7192 ; CHECK-NEXT:    vmv1r.v v13, v8
7193 ; CHECK-NEXT:    vmv1r.v v14, v8
7194 ; CHECK-NEXT:    vmv1r.v v15, v8
7195 ; CHECK-NEXT:    vmv1r.v v16, v8
7196 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7197 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
7198 ; CHECK-NEXT:    ret
7199 entry:
7200   tail call void @llvm.riscv.vsoxseg7.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
7201   ret void
7204 define void @test_vsoxseg7_mask_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
7205 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2i16_nxv2i8:
7206 ; CHECK:       # %bb.0: # %entry
7207 ; CHECK-NEXT:    vmv1r.v v10, v8
7208 ; CHECK-NEXT:    vmv1r.v v11, v8
7209 ; CHECK-NEXT:    vmv1r.v v12, v8
7210 ; CHECK-NEXT:    vmv1r.v v13, v8
7211 ; CHECK-NEXT:    vmv1r.v v14, v8
7212 ; CHECK-NEXT:    vmv1r.v v15, v8
7213 ; CHECK-NEXT:    vmv1r.v v16, v8
7214 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7215 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
7216 ; CHECK-NEXT:    ret
7217 entry:
7218   tail call void @llvm.riscv.vsoxseg7.mask.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
7219   ret void
7222 declare void @llvm.riscv.vsoxseg7.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, i32)
7223 declare void @llvm.riscv.vsoxseg7.mask.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
7225 define void @test_vsoxseg7_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
7226 ; CHECK-LABEL: test_vsoxseg7_nxv2i16_nxv2i16:
7227 ; CHECK:       # %bb.0: # %entry
7228 ; CHECK-NEXT:    vmv1r.v v10, v8
7229 ; CHECK-NEXT:    vmv1r.v v11, v8
7230 ; CHECK-NEXT:    vmv1r.v v12, v8
7231 ; CHECK-NEXT:    vmv1r.v v13, v8
7232 ; CHECK-NEXT:    vmv1r.v v14, v8
7233 ; CHECK-NEXT:    vmv1r.v v15, v8
7234 ; CHECK-NEXT:    vmv1r.v v16, v8
7235 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7236 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
7237 ; CHECK-NEXT:    ret
7238 entry:
7239   tail call void @llvm.riscv.vsoxseg7.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
7240   ret void
7243 define void @test_vsoxseg7_mask_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
7244 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2i16_nxv2i16:
7245 ; CHECK:       # %bb.0: # %entry
7246 ; CHECK-NEXT:    vmv1r.v v10, v8
7247 ; CHECK-NEXT:    vmv1r.v v11, v8
7248 ; CHECK-NEXT:    vmv1r.v v12, v8
7249 ; CHECK-NEXT:    vmv1r.v v13, v8
7250 ; CHECK-NEXT:    vmv1r.v v14, v8
7251 ; CHECK-NEXT:    vmv1r.v v15, v8
7252 ; CHECK-NEXT:    vmv1r.v v16, v8
7253 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7254 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
7255 ; CHECK-NEXT:    ret
7256 entry:
7257   tail call void @llvm.riscv.vsoxseg7.mask.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
7258   ret void
7261 declare void @llvm.riscv.vsoxseg8.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, i32)
7262 declare void @llvm.riscv.vsoxseg8.mask.nxv2i16.nxv2i32(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
7264 define void @test_vsoxseg8_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
7265 ; CHECK-LABEL: test_vsoxseg8_nxv2i16_nxv2i32:
7266 ; CHECK:       # %bb.0: # %entry
7267 ; CHECK-NEXT:    vmv1r.v v10, v8
7268 ; CHECK-NEXT:    vmv1r.v v11, v8
7269 ; CHECK-NEXT:    vmv1r.v v12, v8
7270 ; CHECK-NEXT:    vmv1r.v v13, v8
7271 ; CHECK-NEXT:    vmv1r.v v14, v8
7272 ; CHECK-NEXT:    vmv1r.v v15, v8
7273 ; CHECK-NEXT:    vmv1r.v v16, v8
7274 ; CHECK-NEXT:    vmv1r.v v17, v8
7275 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7276 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9
7277 ; CHECK-NEXT:    ret
7278 entry:
7279   tail call void @llvm.riscv.vsoxseg8.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
7280   ret void
7283 define void @test_vsoxseg8_mask_nxv2i16_nxv2i32(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
7284 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2i16_nxv2i32:
7285 ; CHECK:       # %bb.0: # %entry
7286 ; CHECK-NEXT:    vmv1r.v v10, v8
7287 ; CHECK-NEXT:    vmv1r.v v11, v8
7288 ; CHECK-NEXT:    vmv1r.v v12, v8
7289 ; CHECK-NEXT:    vmv1r.v v13, v8
7290 ; CHECK-NEXT:    vmv1r.v v14, v8
7291 ; CHECK-NEXT:    vmv1r.v v15, v8
7292 ; CHECK-NEXT:    vmv1r.v v16, v8
7293 ; CHECK-NEXT:    vmv1r.v v17, v8
7294 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7295 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9, v0.t
7296 ; CHECK-NEXT:    ret
7297 entry:
7298   tail call void @llvm.riscv.vsoxseg8.mask.nxv2i16.nxv2i32(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
7299   ret void
7302 declare void @llvm.riscv.vsoxseg8.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, i32)
7303 declare void @llvm.riscv.vsoxseg8.mask.nxv2i16.nxv2i8(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
7305 define void @test_vsoxseg8_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
7306 ; CHECK-LABEL: test_vsoxseg8_nxv2i16_nxv2i8:
7307 ; CHECK:       # %bb.0: # %entry
7308 ; CHECK-NEXT:    vmv1r.v v10, v8
7309 ; CHECK-NEXT:    vmv1r.v v11, v8
7310 ; CHECK-NEXT:    vmv1r.v v12, v8
7311 ; CHECK-NEXT:    vmv1r.v v13, v8
7312 ; CHECK-NEXT:    vmv1r.v v14, v8
7313 ; CHECK-NEXT:    vmv1r.v v15, v8
7314 ; CHECK-NEXT:    vmv1r.v v16, v8
7315 ; CHECK-NEXT:    vmv1r.v v17, v8
7316 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7317 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
7318 ; CHECK-NEXT:    ret
7319 entry:
7320   tail call void @llvm.riscv.vsoxseg8.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
7321   ret void
7324 define void @test_vsoxseg8_mask_nxv2i16_nxv2i8(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
7325 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2i16_nxv2i8:
7326 ; CHECK:       # %bb.0: # %entry
7327 ; CHECK-NEXT:    vmv1r.v v10, v8
7328 ; CHECK-NEXT:    vmv1r.v v11, v8
7329 ; CHECK-NEXT:    vmv1r.v v12, v8
7330 ; CHECK-NEXT:    vmv1r.v v13, v8
7331 ; CHECK-NEXT:    vmv1r.v v14, v8
7332 ; CHECK-NEXT:    vmv1r.v v15, v8
7333 ; CHECK-NEXT:    vmv1r.v v16, v8
7334 ; CHECK-NEXT:    vmv1r.v v17, v8
7335 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7336 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
7337 ; CHECK-NEXT:    ret
7338 entry:
7339   tail call void @llvm.riscv.vsoxseg8.mask.nxv2i16.nxv2i8(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
7340   ret void
7343 declare void @llvm.riscv.vsoxseg8.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, i32)
7344 declare void @llvm.riscv.vsoxseg8.mask.nxv2i16.nxv2i16(<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>,<vscale x 2 x i16>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
7346 define void @test_vsoxseg8_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
7347 ; CHECK-LABEL: test_vsoxseg8_nxv2i16_nxv2i16:
7348 ; CHECK:       # %bb.0: # %entry
7349 ; CHECK-NEXT:    vmv1r.v v10, v8
7350 ; CHECK-NEXT:    vmv1r.v v11, v8
7351 ; CHECK-NEXT:    vmv1r.v v12, v8
7352 ; CHECK-NEXT:    vmv1r.v v13, v8
7353 ; CHECK-NEXT:    vmv1r.v v14, v8
7354 ; CHECK-NEXT:    vmv1r.v v15, v8
7355 ; CHECK-NEXT:    vmv1r.v v16, v8
7356 ; CHECK-NEXT:    vmv1r.v v17, v8
7357 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7358 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
7359 ; CHECK-NEXT:    ret
7360 entry:
7361   tail call void @llvm.riscv.vsoxseg8.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
7362   ret void
7365 define void @test_vsoxseg8_mask_nxv2i16_nxv2i16(<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
7366 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2i16_nxv2i16:
7367 ; CHECK:       # %bb.0: # %entry
7368 ; CHECK-NEXT:    vmv1r.v v10, v8
7369 ; CHECK-NEXT:    vmv1r.v v11, v8
7370 ; CHECK-NEXT:    vmv1r.v v12, v8
7371 ; CHECK-NEXT:    vmv1r.v v13, v8
7372 ; CHECK-NEXT:    vmv1r.v v14, v8
7373 ; CHECK-NEXT:    vmv1r.v v15, v8
7374 ; CHECK-NEXT:    vmv1r.v v16, v8
7375 ; CHECK-NEXT:    vmv1r.v v17, v8
7376 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
7377 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
7378 ; CHECK-NEXT:    ret
7379 entry:
7380   tail call void @llvm.riscv.vsoxseg8.mask.nxv2i16.nxv2i16(<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val,<vscale x 2 x i16> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
7381   ret void
7384 declare void @llvm.riscv.vsoxseg2.nxv4i32.nxv4i16(<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i16>, i32)
7385 declare void @llvm.riscv.vsoxseg2.mask.nxv4i32.nxv4i16(<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
7387 define void @test_vsoxseg2_nxv4i32_nxv4i16(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
7388 ; CHECK-LABEL: test_vsoxseg2_nxv4i32_nxv4i16:
7389 ; CHECK:       # %bb.0: # %entry
7390 ; CHECK-NEXT:    vmv1r.v v12, v10
7391 ; CHECK-NEXT:    vmv2r.v v10, v8
7392 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7393 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v12
7394 ; CHECK-NEXT:    ret
7395 entry:
7396   tail call void @llvm.riscv.vsoxseg2.nxv4i32.nxv4i16(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
7397   ret void
7400 define void @test_vsoxseg2_mask_nxv4i32_nxv4i16(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
7401 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4i32_nxv4i16:
7402 ; CHECK:       # %bb.0: # %entry
7403 ; CHECK-NEXT:    vmv1r.v v12, v10
7404 ; CHECK-NEXT:    vmv2r.v v10, v8
7405 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7406 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v12, v0.t
7407 ; CHECK-NEXT:    ret
7408 entry:
7409   tail call void @llvm.riscv.vsoxseg2.mask.nxv4i32.nxv4i16(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
7410   ret void
7413 declare void @llvm.riscv.vsoxseg2.nxv4i32.nxv4i8(<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i8>, i32)
7414 declare void @llvm.riscv.vsoxseg2.mask.nxv4i32.nxv4i8(<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
7416 define void @test_vsoxseg2_nxv4i32_nxv4i8(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
7417 ; CHECK-LABEL: test_vsoxseg2_nxv4i32_nxv4i8:
7418 ; CHECK:       # %bb.0: # %entry
7419 ; CHECK-NEXT:    vmv1r.v v12, v10
7420 ; CHECK-NEXT:    vmv2r.v v10, v8
7421 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7422 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v12
7423 ; CHECK-NEXT:    ret
7424 entry:
7425   tail call void @llvm.riscv.vsoxseg2.nxv4i32.nxv4i8(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
7426   ret void
7429 define void @test_vsoxseg2_mask_nxv4i32_nxv4i8(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
7430 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4i32_nxv4i8:
7431 ; CHECK:       # %bb.0: # %entry
7432 ; CHECK-NEXT:    vmv1r.v v12, v10
7433 ; CHECK-NEXT:    vmv2r.v v10, v8
7434 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7435 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v12, v0.t
7436 ; CHECK-NEXT:    ret
7437 entry:
7438   tail call void @llvm.riscv.vsoxseg2.mask.nxv4i32.nxv4i8(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
7439   ret void
7442 declare void @llvm.riscv.vsoxseg2.nxv4i32.nxv4i32(<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i32>, i32)
7443 declare void @llvm.riscv.vsoxseg2.mask.nxv4i32.nxv4i32(<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
7445 define void @test_vsoxseg2_nxv4i32_nxv4i32(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
7446 ; CHECK-LABEL: test_vsoxseg2_nxv4i32_nxv4i32:
7447 ; CHECK:       # %bb.0: # %entry
7448 ; CHECK-NEXT:    vmv2r.v v12, v10
7449 ; CHECK-NEXT:    vmv2r.v v10, v8
7450 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7451 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v12
7452 ; CHECK-NEXT:    ret
7453 entry:
7454   tail call void @llvm.riscv.vsoxseg2.nxv4i32.nxv4i32(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
7455   ret void
7458 define void @test_vsoxseg2_mask_nxv4i32_nxv4i32(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
7459 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4i32_nxv4i32:
7460 ; CHECK:       # %bb.0: # %entry
7461 ; CHECK-NEXT:    vmv2r.v v12, v10
7462 ; CHECK-NEXT:    vmv2r.v v10, v8
7463 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7464 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v12, v0.t
7465 ; CHECK-NEXT:    ret
7466 entry:
7467   tail call void @llvm.riscv.vsoxseg2.mask.nxv4i32.nxv4i32(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
7468   ret void
7471 declare void @llvm.riscv.vsoxseg3.nxv4i32.nxv4i16(<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i16>, i32)
7472 declare void @llvm.riscv.vsoxseg3.mask.nxv4i32.nxv4i16(<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
7474 define void @test_vsoxseg3_nxv4i32_nxv4i16(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
7475 ; CHECK-LABEL: test_vsoxseg3_nxv4i32_nxv4i16:
7476 ; CHECK:       # %bb.0: # %entry
7477 ; CHECK-NEXT:    vmv2r.v v12, v8
7478 ; CHECK-NEXT:    vmv2r.v v14, v8
7479 ; CHECK-NEXT:    vmv2r.v v16, v8
7480 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7481 ; CHECK-NEXT:    vsoxseg3ei16.v v12, (a0), v10
7482 ; CHECK-NEXT:    ret
7483 entry:
7484   tail call void @llvm.riscv.vsoxseg3.nxv4i32.nxv4i16(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
7485   ret void
7488 define void @test_vsoxseg3_mask_nxv4i32_nxv4i16(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
7489 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4i32_nxv4i16:
7490 ; CHECK:       # %bb.0: # %entry
7491 ; CHECK-NEXT:    vmv2r.v v12, v8
7492 ; CHECK-NEXT:    vmv2r.v v14, v8
7493 ; CHECK-NEXT:    vmv2r.v v16, v8
7494 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7495 ; CHECK-NEXT:    vsoxseg3ei16.v v12, (a0), v10, v0.t
7496 ; CHECK-NEXT:    ret
7497 entry:
7498   tail call void @llvm.riscv.vsoxseg3.mask.nxv4i32.nxv4i16(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
7499   ret void
7502 declare void @llvm.riscv.vsoxseg3.nxv4i32.nxv4i8(<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i8>, i32)
7503 declare void @llvm.riscv.vsoxseg3.mask.nxv4i32.nxv4i8(<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
7505 define void @test_vsoxseg3_nxv4i32_nxv4i8(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
7506 ; CHECK-LABEL: test_vsoxseg3_nxv4i32_nxv4i8:
7507 ; CHECK:       # %bb.0: # %entry
7508 ; CHECK-NEXT:    vmv2r.v v12, v8
7509 ; CHECK-NEXT:    vmv2r.v v14, v8
7510 ; CHECK-NEXT:    vmv2r.v v16, v8
7511 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7512 ; CHECK-NEXT:    vsoxseg3ei8.v v12, (a0), v10
7513 ; CHECK-NEXT:    ret
7514 entry:
7515   tail call void @llvm.riscv.vsoxseg3.nxv4i32.nxv4i8(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
7516   ret void
7519 define void @test_vsoxseg3_mask_nxv4i32_nxv4i8(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
7520 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4i32_nxv4i8:
7521 ; CHECK:       # %bb.0: # %entry
7522 ; CHECK-NEXT:    vmv2r.v v12, v8
7523 ; CHECK-NEXT:    vmv2r.v v14, v8
7524 ; CHECK-NEXT:    vmv2r.v v16, v8
7525 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7526 ; CHECK-NEXT:    vsoxseg3ei8.v v12, (a0), v10, v0.t
7527 ; CHECK-NEXT:    ret
7528 entry:
7529   tail call void @llvm.riscv.vsoxseg3.mask.nxv4i32.nxv4i8(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
7530   ret void
7533 declare void @llvm.riscv.vsoxseg3.nxv4i32.nxv4i32(<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i32>, i32)
7534 declare void @llvm.riscv.vsoxseg3.mask.nxv4i32.nxv4i32(<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
7536 define void @test_vsoxseg3_nxv4i32_nxv4i32(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
7537 ; CHECK-LABEL: test_vsoxseg3_nxv4i32_nxv4i32:
7538 ; CHECK:       # %bb.0: # %entry
7539 ; CHECK-NEXT:    vmv2r.v v12, v8
7540 ; CHECK-NEXT:    vmv2r.v v14, v8
7541 ; CHECK-NEXT:    vmv2r.v v16, v8
7542 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7543 ; CHECK-NEXT:    vsoxseg3ei32.v v12, (a0), v10
7544 ; CHECK-NEXT:    ret
7545 entry:
7546   tail call void @llvm.riscv.vsoxseg3.nxv4i32.nxv4i32(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
7547   ret void
7550 define void @test_vsoxseg3_mask_nxv4i32_nxv4i32(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
7551 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4i32_nxv4i32:
7552 ; CHECK:       # %bb.0: # %entry
7553 ; CHECK-NEXT:    vmv2r.v v12, v8
7554 ; CHECK-NEXT:    vmv2r.v v14, v8
7555 ; CHECK-NEXT:    vmv2r.v v16, v8
7556 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7557 ; CHECK-NEXT:    vsoxseg3ei32.v v12, (a0), v10, v0.t
7558 ; CHECK-NEXT:    ret
7559 entry:
7560   tail call void @llvm.riscv.vsoxseg3.mask.nxv4i32.nxv4i32(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
7561   ret void
7564 declare void @llvm.riscv.vsoxseg4.nxv4i32.nxv4i16(<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i16>, i32)
7565 declare void @llvm.riscv.vsoxseg4.mask.nxv4i32.nxv4i16(<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
7567 define void @test_vsoxseg4_nxv4i32_nxv4i16(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
7568 ; CHECK-LABEL: test_vsoxseg4_nxv4i32_nxv4i16:
7569 ; CHECK:       # %bb.0: # %entry
7570 ; CHECK-NEXT:    vmv2r.v v12, v8
7571 ; CHECK-NEXT:    vmv2r.v v14, v8
7572 ; CHECK-NEXT:    vmv2r.v v16, v8
7573 ; CHECK-NEXT:    vmv2r.v v18, v8
7574 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7575 ; CHECK-NEXT:    vsoxseg4ei16.v v12, (a0), v10
7576 ; CHECK-NEXT:    ret
7577 entry:
7578   tail call void @llvm.riscv.vsoxseg4.nxv4i32.nxv4i16(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
7579   ret void
7582 define void @test_vsoxseg4_mask_nxv4i32_nxv4i16(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
7583 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4i32_nxv4i16:
7584 ; CHECK:       # %bb.0: # %entry
7585 ; CHECK-NEXT:    vmv2r.v v12, v8
7586 ; CHECK-NEXT:    vmv2r.v v14, v8
7587 ; CHECK-NEXT:    vmv2r.v v16, v8
7588 ; CHECK-NEXT:    vmv2r.v v18, v8
7589 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7590 ; CHECK-NEXT:    vsoxseg4ei16.v v12, (a0), v10, v0.t
7591 ; CHECK-NEXT:    ret
7592 entry:
7593   tail call void @llvm.riscv.vsoxseg4.mask.nxv4i32.nxv4i16(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
7594   ret void
7597 declare void @llvm.riscv.vsoxseg4.nxv4i32.nxv4i8(<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i8>, i32)
7598 declare void @llvm.riscv.vsoxseg4.mask.nxv4i32.nxv4i8(<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
7600 define void @test_vsoxseg4_nxv4i32_nxv4i8(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
7601 ; CHECK-LABEL: test_vsoxseg4_nxv4i32_nxv4i8:
7602 ; CHECK:       # %bb.0: # %entry
7603 ; CHECK-NEXT:    vmv2r.v v12, v8
7604 ; CHECK-NEXT:    vmv2r.v v14, v8
7605 ; CHECK-NEXT:    vmv2r.v v16, v8
7606 ; CHECK-NEXT:    vmv2r.v v18, v8
7607 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7608 ; CHECK-NEXT:    vsoxseg4ei8.v v12, (a0), v10
7609 ; CHECK-NEXT:    ret
7610 entry:
7611   tail call void @llvm.riscv.vsoxseg4.nxv4i32.nxv4i8(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
7612   ret void
7615 define void @test_vsoxseg4_mask_nxv4i32_nxv4i8(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
7616 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4i32_nxv4i8:
7617 ; CHECK:       # %bb.0: # %entry
7618 ; CHECK-NEXT:    vmv2r.v v12, v8
7619 ; CHECK-NEXT:    vmv2r.v v14, v8
7620 ; CHECK-NEXT:    vmv2r.v v16, v8
7621 ; CHECK-NEXT:    vmv2r.v v18, v8
7622 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7623 ; CHECK-NEXT:    vsoxseg4ei8.v v12, (a0), v10, v0.t
7624 ; CHECK-NEXT:    ret
7625 entry:
7626   tail call void @llvm.riscv.vsoxseg4.mask.nxv4i32.nxv4i8(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
7627   ret void
7630 declare void @llvm.riscv.vsoxseg4.nxv4i32.nxv4i32(<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i32>, i32)
7631 declare void @llvm.riscv.vsoxseg4.mask.nxv4i32.nxv4i32(<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>,<vscale x 4 x i32>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
7633 define void @test_vsoxseg4_nxv4i32_nxv4i32(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
7634 ; CHECK-LABEL: test_vsoxseg4_nxv4i32_nxv4i32:
7635 ; CHECK:       # %bb.0: # %entry
7636 ; CHECK-NEXT:    vmv2r.v v12, v8
7637 ; CHECK-NEXT:    vmv2r.v v14, v8
7638 ; CHECK-NEXT:    vmv2r.v v16, v8
7639 ; CHECK-NEXT:    vmv2r.v v18, v8
7640 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7641 ; CHECK-NEXT:    vsoxseg4ei32.v v12, (a0), v10
7642 ; CHECK-NEXT:    ret
7643 entry:
7644   tail call void @llvm.riscv.vsoxseg4.nxv4i32.nxv4i32(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
7645   ret void
7648 define void @test_vsoxseg4_mask_nxv4i32_nxv4i32(<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
7649 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4i32_nxv4i32:
7650 ; CHECK:       # %bb.0: # %entry
7651 ; CHECK-NEXT:    vmv2r.v v12, v8
7652 ; CHECK-NEXT:    vmv2r.v v14, v8
7653 ; CHECK-NEXT:    vmv2r.v v16, v8
7654 ; CHECK-NEXT:    vmv2r.v v18, v8
7655 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
7656 ; CHECK-NEXT:    vsoxseg4ei32.v v12, (a0), v10, v0.t
7657 ; CHECK-NEXT:    ret
7658 entry:
7659   tail call void @llvm.riscv.vsoxseg4.mask.nxv4i32.nxv4i32(<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val,<vscale x 4 x i32> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
7660   ret void
7663 declare void @llvm.riscv.vsoxseg2.nxv16f16.nxv16i16(<vscale x 16 x half>,<vscale x 16 x half>, ptr, <vscale x 16 x i16>, i32)
7664 declare void @llvm.riscv.vsoxseg2.mask.nxv16f16.nxv16i16(<vscale x 16 x half>,<vscale x 16 x half>, ptr, <vscale x 16 x i16>, <vscale x 16 x i1>, i32)
7666 define void @test_vsoxseg2_nxv16f16_nxv16i16(<vscale x 16 x half> %val, ptr %base, <vscale x 16 x i16> %index, i32 %vl) {
7667 ; CHECK-LABEL: test_vsoxseg2_nxv16f16_nxv16i16:
7668 ; CHECK:       # %bb.0: # %entry
7669 ; CHECK-NEXT:    vmv4r.v v16, v12
7670 ; CHECK-NEXT:    vmv4r.v v12, v8
7671 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
7672 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v16
7673 ; CHECK-NEXT:    ret
7674 entry:
7675   tail call void @llvm.riscv.vsoxseg2.nxv16f16.nxv16i16(<vscale x 16 x half> %val,<vscale x 16 x half> %val, ptr %base, <vscale x 16 x i16> %index, i32 %vl)
7676   ret void
7679 define void @test_vsoxseg2_mask_nxv16f16_nxv16i16(<vscale x 16 x half> %val, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i32 %vl) {
7680 ; CHECK-LABEL: test_vsoxseg2_mask_nxv16f16_nxv16i16:
7681 ; CHECK:       # %bb.0: # %entry
7682 ; CHECK-NEXT:    vmv4r.v v16, v12
7683 ; CHECK-NEXT:    vmv4r.v v12, v8
7684 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
7685 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v16, v0.t
7686 ; CHECK-NEXT:    ret
7687 entry:
7688   tail call void @llvm.riscv.vsoxseg2.mask.nxv16f16.nxv16i16(<vscale x 16 x half> %val,<vscale x 16 x half> %val, ptr %base, <vscale x 16 x i16> %index, <vscale x 16 x i1> %mask, i32 %vl)
7689   ret void
7692 declare void @llvm.riscv.vsoxseg2.nxv16f16.nxv16i8(<vscale x 16 x half>,<vscale x 16 x half>, ptr, <vscale x 16 x i8>, i32)
7693 declare void @llvm.riscv.vsoxseg2.mask.nxv16f16.nxv16i8(<vscale x 16 x half>,<vscale x 16 x half>, ptr, <vscale x 16 x i8>, <vscale x 16 x i1>, i32)
7695 define void @test_vsoxseg2_nxv16f16_nxv16i8(<vscale x 16 x half> %val, ptr %base, <vscale x 16 x i8> %index, i32 %vl) {
7696 ; CHECK-LABEL: test_vsoxseg2_nxv16f16_nxv16i8:
7697 ; CHECK:       # %bb.0: # %entry
7698 ; CHECK-NEXT:    vmv2r.v v16, v12
7699 ; CHECK-NEXT:    vmv4r.v v12, v8
7700 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
7701 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v16
7702 ; CHECK-NEXT:    ret
7703 entry:
7704   tail call void @llvm.riscv.vsoxseg2.nxv16f16.nxv16i8(<vscale x 16 x half> %val,<vscale x 16 x half> %val, ptr %base, <vscale x 16 x i8> %index, i32 %vl)
7705   ret void
7708 define void @test_vsoxseg2_mask_nxv16f16_nxv16i8(<vscale x 16 x half> %val, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i32 %vl) {
7709 ; CHECK-LABEL: test_vsoxseg2_mask_nxv16f16_nxv16i8:
7710 ; CHECK:       # %bb.0: # %entry
7711 ; CHECK-NEXT:    vmv2r.v v16, v12
7712 ; CHECK-NEXT:    vmv4r.v v12, v8
7713 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
7714 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v16, v0.t
7715 ; CHECK-NEXT:    ret
7716 entry:
7717   tail call void @llvm.riscv.vsoxseg2.mask.nxv16f16.nxv16i8(<vscale x 16 x half> %val,<vscale x 16 x half> %val, ptr %base, <vscale x 16 x i8> %index, <vscale x 16 x i1> %mask, i32 %vl)
7718   ret void
7721 declare void @llvm.riscv.vsoxseg2.nxv16f16.nxv16i32(<vscale x 16 x half>,<vscale x 16 x half>, ptr, <vscale x 16 x i32>, i32)
7722 declare void @llvm.riscv.vsoxseg2.mask.nxv16f16.nxv16i32(<vscale x 16 x half>,<vscale x 16 x half>, ptr, <vscale x 16 x i32>, <vscale x 16 x i1>, i32)
7724 define void @test_vsoxseg2_nxv16f16_nxv16i32(<vscale x 16 x half> %val, ptr %base, <vscale x 16 x i32> %index, i32 %vl) {
7725 ; CHECK-LABEL: test_vsoxseg2_nxv16f16_nxv16i32:
7726 ; CHECK:       # %bb.0: # %entry
7727 ; CHECK-NEXT:    vmv4r.v v12, v8
7728 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
7729 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v16
7730 ; CHECK-NEXT:    ret
7731 entry:
7732   tail call void @llvm.riscv.vsoxseg2.nxv16f16.nxv16i32(<vscale x 16 x half> %val,<vscale x 16 x half> %val, ptr %base, <vscale x 16 x i32> %index, i32 %vl)
7733   ret void
7736 define void @test_vsoxseg2_mask_nxv16f16_nxv16i32(<vscale x 16 x half> %val, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i32 %vl) {
7737 ; CHECK-LABEL: test_vsoxseg2_mask_nxv16f16_nxv16i32:
7738 ; CHECK:       # %bb.0: # %entry
7739 ; CHECK-NEXT:    vmv4r.v v12, v8
7740 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
7741 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v16, v0.t
7742 ; CHECK-NEXT:    ret
7743 entry:
7744   tail call void @llvm.riscv.vsoxseg2.mask.nxv16f16.nxv16i32(<vscale x 16 x half> %val,<vscale x 16 x half> %val, ptr %base, <vscale x 16 x i32> %index, <vscale x 16 x i1> %mask, i32 %vl)
7745   ret void
7748 declare void @llvm.riscv.vsoxseg2.nxv4f64.nxv4i16(<vscale x 4 x double>,<vscale x 4 x double>, ptr, <vscale x 4 x i16>, i32)
7749 declare void @llvm.riscv.vsoxseg2.mask.nxv4f64.nxv4i16(<vscale x 4 x double>,<vscale x 4 x double>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
7751 define void @test_vsoxseg2_nxv4f64_nxv4i16(<vscale x 4 x double> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
7752 ; CHECK-LABEL: test_vsoxseg2_nxv4f64_nxv4i16:
7753 ; CHECK:       # %bb.0: # %entry
7754 ; CHECK-NEXT:    vmv1r.v v16, v12
7755 ; CHECK-NEXT:    vmv4r.v v12, v8
7756 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
7757 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v16
7758 ; CHECK-NEXT:    ret
7759 entry:
7760   tail call void @llvm.riscv.vsoxseg2.nxv4f64.nxv4i16(<vscale x 4 x double> %val,<vscale x 4 x double> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
7761   ret void
7764 define void @test_vsoxseg2_mask_nxv4f64_nxv4i16(<vscale x 4 x double> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
7765 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4f64_nxv4i16:
7766 ; CHECK:       # %bb.0: # %entry
7767 ; CHECK-NEXT:    vmv1r.v v16, v12
7768 ; CHECK-NEXT:    vmv4r.v v12, v8
7769 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
7770 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v16, v0.t
7771 ; CHECK-NEXT:    ret
7772 entry:
7773   tail call void @llvm.riscv.vsoxseg2.mask.nxv4f64.nxv4i16(<vscale x 4 x double> %val,<vscale x 4 x double> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
7774   ret void
7777 declare void @llvm.riscv.vsoxseg2.nxv4f64.nxv4i8(<vscale x 4 x double>,<vscale x 4 x double>, ptr, <vscale x 4 x i8>, i32)
7778 declare void @llvm.riscv.vsoxseg2.mask.nxv4f64.nxv4i8(<vscale x 4 x double>,<vscale x 4 x double>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
7780 define void @test_vsoxseg2_nxv4f64_nxv4i8(<vscale x 4 x double> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
7781 ; CHECK-LABEL: test_vsoxseg2_nxv4f64_nxv4i8:
7782 ; CHECK:       # %bb.0: # %entry
7783 ; CHECK-NEXT:    vmv1r.v v16, v12
7784 ; CHECK-NEXT:    vmv4r.v v12, v8
7785 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
7786 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v16
7787 ; CHECK-NEXT:    ret
7788 entry:
7789   tail call void @llvm.riscv.vsoxseg2.nxv4f64.nxv4i8(<vscale x 4 x double> %val,<vscale x 4 x double> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
7790   ret void
7793 define void @test_vsoxseg2_mask_nxv4f64_nxv4i8(<vscale x 4 x double> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
7794 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4f64_nxv4i8:
7795 ; CHECK:       # %bb.0: # %entry
7796 ; CHECK-NEXT:    vmv1r.v v16, v12
7797 ; CHECK-NEXT:    vmv4r.v v12, v8
7798 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
7799 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v16, v0.t
7800 ; CHECK-NEXT:    ret
7801 entry:
7802   tail call void @llvm.riscv.vsoxseg2.mask.nxv4f64.nxv4i8(<vscale x 4 x double> %val,<vscale x 4 x double> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
7803   ret void
7806 declare void @llvm.riscv.vsoxseg2.nxv4f64.nxv4i32(<vscale x 4 x double>,<vscale x 4 x double>, ptr, <vscale x 4 x i32>, i32)
7807 declare void @llvm.riscv.vsoxseg2.mask.nxv4f64.nxv4i32(<vscale x 4 x double>,<vscale x 4 x double>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
7809 define void @test_vsoxseg2_nxv4f64_nxv4i32(<vscale x 4 x double> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
7810 ; CHECK-LABEL: test_vsoxseg2_nxv4f64_nxv4i32:
7811 ; CHECK:       # %bb.0: # %entry
7812 ; CHECK-NEXT:    vmv2r.v v16, v12
7813 ; CHECK-NEXT:    vmv4r.v v12, v8
7814 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
7815 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v16
7816 ; CHECK-NEXT:    ret
7817 entry:
7818   tail call void @llvm.riscv.vsoxseg2.nxv4f64.nxv4i32(<vscale x 4 x double> %val,<vscale x 4 x double> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
7819   ret void
7822 define void @test_vsoxseg2_mask_nxv4f64_nxv4i32(<vscale x 4 x double> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
7823 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4f64_nxv4i32:
7824 ; CHECK:       # %bb.0: # %entry
7825 ; CHECK-NEXT:    vmv2r.v v16, v12
7826 ; CHECK-NEXT:    vmv4r.v v12, v8
7827 ; CHECK-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
7828 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v16, v0.t
7829 ; CHECK-NEXT:    ret
7830 entry:
7831   tail call void @llvm.riscv.vsoxseg2.mask.nxv4f64.nxv4i32(<vscale x 4 x double> %val,<vscale x 4 x double> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
7832   ret void
7835 declare void @llvm.riscv.vsoxseg2.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, i32)
7836 declare void @llvm.riscv.vsoxseg2.mask.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
7838 define void @test_vsoxseg2_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
7839 ; CHECK-LABEL: test_vsoxseg2_nxv1f64_nxv1i8:
7840 ; CHECK:       # %bb.0: # %entry
7841 ; CHECK-NEXT:    vmv1r.v v10, v9
7842 ; CHECK-NEXT:    vmv1r.v v9, v8
7843 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
7844 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
7845 ; CHECK-NEXT:    ret
7846 entry:
7847   tail call void @llvm.riscv.vsoxseg2.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
7848   ret void
7851 define void @test_vsoxseg2_mask_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
7852 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1f64_nxv1i8:
7853 ; CHECK:       # %bb.0: # %entry
7854 ; CHECK-NEXT:    vmv1r.v v10, v9
7855 ; CHECK-NEXT:    vmv1r.v v9, v8
7856 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
7857 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
7858 ; CHECK-NEXT:    ret
7859 entry:
7860   tail call void @llvm.riscv.vsoxseg2.mask.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
7861   ret void
7864 declare void @llvm.riscv.vsoxseg2.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, i32)
7865 declare void @llvm.riscv.vsoxseg2.mask.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
7867 define void @test_vsoxseg2_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
7868 ; CHECK-LABEL: test_vsoxseg2_nxv1f64_nxv1i32:
7869 ; CHECK:       # %bb.0: # %entry
7870 ; CHECK-NEXT:    vmv1r.v v10, v9
7871 ; CHECK-NEXT:    vmv1r.v v9, v8
7872 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
7873 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
7874 ; CHECK-NEXT:    ret
7875 entry:
7876   tail call void @llvm.riscv.vsoxseg2.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
7877   ret void
7880 define void @test_vsoxseg2_mask_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
7881 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1f64_nxv1i32:
7882 ; CHECK:       # %bb.0: # %entry
7883 ; CHECK-NEXT:    vmv1r.v v10, v9
7884 ; CHECK-NEXT:    vmv1r.v v9, v8
7885 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
7886 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
7887 ; CHECK-NEXT:    ret
7888 entry:
7889   tail call void @llvm.riscv.vsoxseg2.mask.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
7890   ret void
7893 declare void @llvm.riscv.vsoxseg2.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, i32)
7894 declare void @llvm.riscv.vsoxseg2.mask.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
7896 define void @test_vsoxseg2_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
7897 ; CHECK-LABEL: test_vsoxseg2_nxv1f64_nxv1i16:
7898 ; CHECK:       # %bb.0: # %entry
7899 ; CHECK-NEXT:    vmv1r.v v10, v9
7900 ; CHECK-NEXT:    vmv1r.v v9, v8
7901 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
7902 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
7903 ; CHECK-NEXT:    ret
7904 entry:
7905   tail call void @llvm.riscv.vsoxseg2.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
7906   ret void
7909 define void @test_vsoxseg2_mask_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
7910 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1f64_nxv1i16:
7911 ; CHECK:       # %bb.0: # %entry
7912 ; CHECK-NEXT:    vmv1r.v v10, v9
7913 ; CHECK-NEXT:    vmv1r.v v9, v8
7914 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
7915 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
7916 ; CHECK-NEXT:    ret
7917 entry:
7918   tail call void @llvm.riscv.vsoxseg2.mask.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
7919   ret void
7922 declare void @llvm.riscv.vsoxseg3.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, i32)
7923 declare void @llvm.riscv.vsoxseg3.mask.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
7925 define void @test_vsoxseg3_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
7926 ; CHECK-LABEL: test_vsoxseg3_nxv1f64_nxv1i8:
7927 ; CHECK:       # %bb.0: # %entry
7928 ; CHECK-NEXT:    vmv1r.v v10, v8
7929 ; CHECK-NEXT:    vmv1r.v v11, v8
7930 ; CHECK-NEXT:    vmv1r.v v12, v8
7931 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
7932 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
7933 ; CHECK-NEXT:    ret
7934 entry:
7935   tail call void @llvm.riscv.vsoxseg3.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
7936   ret void
7939 define void @test_vsoxseg3_mask_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
7940 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1f64_nxv1i8:
7941 ; CHECK:       # %bb.0: # %entry
7942 ; CHECK-NEXT:    vmv1r.v v10, v8
7943 ; CHECK-NEXT:    vmv1r.v v11, v8
7944 ; CHECK-NEXT:    vmv1r.v v12, v8
7945 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
7946 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
7947 ; CHECK-NEXT:    ret
7948 entry:
7949   tail call void @llvm.riscv.vsoxseg3.mask.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
7950   ret void
7953 declare void @llvm.riscv.vsoxseg3.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, i32)
7954 declare void @llvm.riscv.vsoxseg3.mask.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
7956 define void @test_vsoxseg3_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
7957 ; CHECK-LABEL: test_vsoxseg3_nxv1f64_nxv1i32:
7958 ; CHECK:       # %bb.0: # %entry
7959 ; CHECK-NEXT:    vmv1r.v v10, v8
7960 ; CHECK-NEXT:    vmv1r.v v11, v8
7961 ; CHECK-NEXT:    vmv1r.v v12, v8
7962 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
7963 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9
7964 ; CHECK-NEXT:    ret
7965 entry:
7966   tail call void @llvm.riscv.vsoxseg3.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
7967   ret void
7970 define void @test_vsoxseg3_mask_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
7971 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1f64_nxv1i32:
7972 ; CHECK:       # %bb.0: # %entry
7973 ; CHECK-NEXT:    vmv1r.v v10, v8
7974 ; CHECK-NEXT:    vmv1r.v v11, v8
7975 ; CHECK-NEXT:    vmv1r.v v12, v8
7976 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
7977 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9, v0.t
7978 ; CHECK-NEXT:    ret
7979 entry:
7980   tail call void @llvm.riscv.vsoxseg3.mask.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
7981   ret void
7984 declare void @llvm.riscv.vsoxseg3.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, i32)
7985 declare void @llvm.riscv.vsoxseg3.mask.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
7987 define void @test_vsoxseg3_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
7988 ; CHECK-LABEL: test_vsoxseg3_nxv1f64_nxv1i16:
7989 ; CHECK:       # %bb.0: # %entry
7990 ; CHECK-NEXT:    vmv1r.v v10, v8
7991 ; CHECK-NEXT:    vmv1r.v v11, v8
7992 ; CHECK-NEXT:    vmv1r.v v12, v8
7993 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
7994 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
7995 ; CHECK-NEXT:    ret
7996 entry:
7997   tail call void @llvm.riscv.vsoxseg3.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
7998   ret void
8001 define void @test_vsoxseg3_mask_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8002 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1f64_nxv1i16:
8003 ; CHECK:       # %bb.0: # %entry
8004 ; CHECK-NEXT:    vmv1r.v v10, v8
8005 ; CHECK-NEXT:    vmv1r.v v11, v8
8006 ; CHECK-NEXT:    vmv1r.v v12, v8
8007 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8008 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
8009 ; CHECK-NEXT:    ret
8010 entry:
8011   tail call void @llvm.riscv.vsoxseg3.mask.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
8012   ret void
8015 declare void @llvm.riscv.vsoxseg4.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, i32)
8016 declare void @llvm.riscv.vsoxseg4.mask.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
8018 define void @test_vsoxseg4_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
8019 ; CHECK-LABEL: test_vsoxseg4_nxv1f64_nxv1i8:
8020 ; CHECK:       # %bb.0: # %entry
8021 ; CHECK-NEXT:    vmv1r.v v10, v8
8022 ; CHECK-NEXT:    vmv1r.v v11, v8
8023 ; CHECK-NEXT:    vmv1r.v v12, v8
8024 ; CHECK-NEXT:    vmv1r.v v13, v8
8025 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8026 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
8027 ; CHECK-NEXT:    ret
8028 entry:
8029   tail call void @llvm.riscv.vsoxseg4.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
8030   ret void
8033 define void @test_vsoxseg4_mask_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8034 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1f64_nxv1i8:
8035 ; CHECK:       # %bb.0: # %entry
8036 ; CHECK-NEXT:    vmv1r.v v10, v8
8037 ; CHECK-NEXT:    vmv1r.v v11, v8
8038 ; CHECK-NEXT:    vmv1r.v v12, v8
8039 ; CHECK-NEXT:    vmv1r.v v13, v8
8040 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8041 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
8042 ; CHECK-NEXT:    ret
8043 entry:
8044   tail call void @llvm.riscv.vsoxseg4.mask.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
8045   ret void
8048 declare void @llvm.riscv.vsoxseg4.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, i32)
8049 declare void @llvm.riscv.vsoxseg4.mask.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
8051 define void @test_vsoxseg4_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
8052 ; CHECK-LABEL: test_vsoxseg4_nxv1f64_nxv1i32:
8053 ; CHECK:       # %bb.0: # %entry
8054 ; CHECK-NEXT:    vmv1r.v v10, v8
8055 ; CHECK-NEXT:    vmv1r.v v11, v8
8056 ; CHECK-NEXT:    vmv1r.v v12, v8
8057 ; CHECK-NEXT:    vmv1r.v v13, v8
8058 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8059 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9
8060 ; CHECK-NEXT:    ret
8061 entry:
8062   tail call void @llvm.riscv.vsoxseg4.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
8063   ret void
8066 define void @test_vsoxseg4_mask_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8067 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1f64_nxv1i32:
8068 ; CHECK:       # %bb.0: # %entry
8069 ; CHECK-NEXT:    vmv1r.v v10, v8
8070 ; CHECK-NEXT:    vmv1r.v v11, v8
8071 ; CHECK-NEXT:    vmv1r.v v12, v8
8072 ; CHECK-NEXT:    vmv1r.v v13, v8
8073 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8074 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9, v0.t
8075 ; CHECK-NEXT:    ret
8076 entry:
8077   tail call void @llvm.riscv.vsoxseg4.mask.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
8078   ret void
8081 declare void @llvm.riscv.vsoxseg4.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, i32)
8082 declare void @llvm.riscv.vsoxseg4.mask.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
8084 define void @test_vsoxseg4_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
8085 ; CHECK-LABEL: test_vsoxseg4_nxv1f64_nxv1i16:
8086 ; CHECK:       # %bb.0: # %entry
8087 ; CHECK-NEXT:    vmv1r.v v10, v8
8088 ; CHECK-NEXT:    vmv1r.v v11, v8
8089 ; CHECK-NEXT:    vmv1r.v v12, v8
8090 ; CHECK-NEXT:    vmv1r.v v13, v8
8091 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8092 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
8093 ; CHECK-NEXT:    ret
8094 entry:
8095   tail call void @llvm.riscv.vsoxseg4.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
8096   ret void
8099 define void @test_vsoxseg4_mask_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8100 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1f64_nxv1i16:
8101 ; CHECK:       # %bb.0: # %entry
8102 ; CHECK-NEXT:    vmv1r.v v10, v8
8103 ; CHECK-NEXT:    vmv1r.v v11, v8
8104 ; CHECK-NEXT:    vmv1r.v v12, v8
8105 ; CHECK-NEXT:    vmv1r.v v13, v8
8106 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8107 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
8108 ; CHECK-NEXT:    ret
8109 entry:
8110   tail call void @llvm.riscv.vsoxseg4.mask.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
8111   ret void
8114 declare void @llvm.riscv.vsoxseg5.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, i32)
8115 declare void @llvm.riscv.vsoxseg5.mask.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
8117 define void @test_vsoxseg5_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
8118 ; CHECK-LABEL: test_vsoxseg5_nxv1f64_nxv1i8:
8119 ; CHECK:       # %bb.0: # %entry
8120 ; CHECK-NEXT:    vmv1r.v v10, v8
8121 ; CHECK-NEXT:    vmv1r.v v11, v8
8122 ; CHECK-NEXT:    vmv1r.v v12, v8
8123 ; CHECK-NEXT:    vmv1r.v v13, v8
8124 ; CHECK-NEXT:    vmv1r.v v14, v8
8125 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8126 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
8127 ; CHECK-NEXT:    ret
8128 entry:
8129   tail call void @llvm.riscv.vsoxseg5.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
8130   ret void
8133 define void @test_vsoxseg5_mask_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8134 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1f64_nxv1i8:
8135 ; CHECK:       # %bb.0: # %entry
8136 ; CHECK-NEXT:    vmv1r.v v10, v8
8137 ; CHECK-NEXT:    vmv1r.v v11, v8
8138 ; CHECK-NEXT:    vmv1r.v v12, v8
8139 ; CHECK-NEXT:    vmv1r.v v13, v8
8140 ; CHECK-NEXT:    vmv1r.v v14, v8
8141 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8142 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
8143 ; CHECK-NEXT:    ret
8144 entry:
8145   tail call void @llvm.riscv.vsoxseg5.mask.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
8146   ret void
8149 declare void @llvm.riscv.vsoxseg5.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, i32)
8150 declare void @llvm.riscv.vsoxseg5.mask.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
8152 define void @test_vsoxseg5_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
8153 ; CHECK-LABEL: test_vsoxseg5_nxv1f64_nxv1i32:
8154 ; CHECK:       # %bb.0: # %entry
8155 ; CHECK-NEXT:    vmv1r.v v10, v8
8156 ; CHECK-NEXT:    vmv1r.v v11, v8
8157 ; CHECK-NEXT:    vmv1r.v v12, v8
8158 ; CHECK-NEXT:    vmv1r.v v13, v8
8159 ; CHECK-NEXT:    vmv1r.v v14, v8
8160 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8161 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9
8162 ; CHECK-NEXT:    ret
8163 entry:
8164   tail call void @llvm.riscv.vsoxseg5.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
8165   ret void
8168 define void @test_vsoxseg5_mask_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8169 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1f64_nxv1i32:
8170 ; CHECK:       # %bb.0: # %entry
8171 ; CHECK-NEXT:    vmv1r.v v10, v8
8172 ; CHECK-NEXT:    vmv1r.v v11, v8
8173 ; CHECK-NEXT:    vmv1r.v v12, v8
8174 ; CHECK-NEXT:    vmv1r.v v13, v8
8175 ; CHECK-NEXT:    vmv1r.v v14, v8
8176 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8177 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9, v0.t
8178 ; CHECK-NEXT:    ret
8179 entry:
8180   tail call void @llvm.riscv.vsoxseg5.mask.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
8181   ret void
8184 declare void @llvm.riscv.vsoxseg5.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, i32)
8185 declare void @llvm.riscv.vsoxseg5.mask.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
8187 define void @test_vsoxseg5_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
8188 ; CHECK-LABEL: test_vsoxseg5_nxv1f64_nxv1i16:
8189 ; CHECK:       # %bb.0: # %entry
8190 ; CHECK-NEXT:    vmv1r.v v10, v8
8191 ; CHECK-NEXT:    vmv1r.v v11, v8
8192 ; CHECK-NEXT:    vmv1r.v v12, v8
8193 ; CHECK-NEXT:    vmv1r.v v13, v8
8194 ; CHECK-NEXT:    vmv1r.v v14, v8
8195 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8196 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
8197 ; CHECK-NEXT:    ret
8198 entry:
8199   tail call void @llvm.riscv.vsoxseg5.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
8200   ret void
8203 define void @test_vsoxseg5_mask_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8204 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1f64_nxv1i16:
8205 ; CHECK:       # %bb.0: # %entry
8206 ; CHECK-NEXT:    vmv1r.v v10, v8
8207 ; CHECK-NEXT:    vmv1r.v v11, v8
8208 ; CHECK-NEXT:    vmv1r.v v12, v8
8209 ; CHECK-NEXT:    vmv1r.v v13, v8
8210 ; CHECK-NEXT:    vmv1r.v v14, v8
8211 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8212 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
8213 ; CHECK-NEXT:    ret
8214 entry:
8215   tail call void @llvm.riscv.vsoxseg5.mask.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
8216   ret void
8219 declare void @llvm.riscv.vsoxseg6.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, i32)
8220 declare void @llvm.riscv.vsoxseg6.mask.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
8222 define void @test_vsoxseg6_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
8223 ; CHECK-LABEL: test_vsoxseg6_nxv1f64_nxv1i8:
8224 ; CHECK:       # %bb.0: # %entry
8225 ; CHECK-NEXT:    vmv1r.v v10, v8
8226 ; CHECK-NEXT:    vmv1r.v v11, v8
8227 ; CHECK-NEXT:    vmv1r.v v12, v8
8228 ; CHECK-NEXT:    vmv1r.v v13, v8
8229 ; CHECK-NEXT:    vmv1r.v v14, v8
8230 ; CHECK-NEXT:    vmv1r.v v15, v8
8231 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8232 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
8233 ; CHECK-NEXT:    ret
8234 entry:
8235   tail call void @llvm.riscv.vsoxseg6.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
8236   ret void
8239 define void @test_vsoxseg6_mask_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8240 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1f64_nxv1i8:
8241 ; CHECK:       # %bb.0: # %entry
8242 ; CHECK-NEXT:    vmv1r.v v10, v8
8243 ; CHECK-NEXT:    vmv1r.v v11, v8
8244 ; CHECK-NEXT:    vmv1r.v v12, v8
8245 ; CHECK-NEXT:    vmv1r.v v13, v8
8246 ; CHECK-NEXT:    vmv1r.v v14, v8
8247 ; CHECK-NEXT:    vmv1r.v v15, v8
8248 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8249 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
8250 ; CHECK-NEXT:    ret
8251 entry:
8252   tail call void @llvm.riscv.vsoxseg6.mask.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
8253   ret void
8256 declare void @llvm.riscv.vsoxseg6.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, i32)
8257 declare void @llvm.riscv.vsoxseg6.mask.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
8259 define void @test_vsoxseg6_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
8260 ; CHECK-LABEL: test_vsoxseg6_nxv1f64_nxv1i32:
8261 ; CHECK:       # %bb.0: # %entry
8262 ; CHECK-NEXT:    vmv1r.v v10, v8
8263 ; CHECK-NEXT:    vmv1r.v v11, v8
8264 ; CHECK-NEXT:    vmv1r.v v12, v8
8265 ; CHECK-NEXT:    vmv1r.v v13, v8
8266 ; CHECK-NEXT:    vmv1r.v v14, v8
8267 ; CHECK-NEXT:    vmv1r.v v15, v8
8268 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8269 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9
8270 ; CHECK-NEXT:    ret
8271 entry:
8272   tail call void @llvm.riscv.vsoxseg6.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
8273   ret void
8276 define void @test_vsoxseg6_mask_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8277 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1f64_nxv1i32:
8278 ; CHECK:       # %bb.0: # %entry
8279 ; CHECK-NEXT:    vmv1r.v v10, v8
8280 ; CHECK-NEXT:    vmv1r.v v11, v8
8281 ; CHECK-NEXT:    vmv1r.v v12, v8
8282 ; CHECK-NEXT:    vmv1r.v v13, v8
8283 ; CHECK-NEXT:    vmv1r.v v14, v8
8284 ; CHECK-NEXT:    vmv1r.v v15, v8
8285 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8286 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9, v0.t
8287 ; CHECK-NEXT:    ret
8288 entry:
8289   tail call void @llvm.riscv.vsoxseg6.mask.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
8290   ret void
8293 declare void @llvm.riscv.vsoxseg6.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, i32)
8294 declare void @llvm.riscv.vsoxseg6.mask.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
8296 define void @test_vsoxseg6_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
8297 ; CHECK-LABEL: test_vsoxseg6_nxv1f64_nxv1i16:
8298 ; CHECK:       # %bb.0: # %entry
8299 ; CHECK-NEXT:    vmv1r.v v10, v8
8300 ; CHECK-NEXT:    vmv1r.v v11, v8
8301 ; CHECK-NEXT:    vmv1r.v v12, v8
8302 ; CHECK-NEXT:    vmv1r.v v13, v8
8303 ; CHECK-NEXT:    vmv1r.v v14, v8
8304 ; CHECK-NEXT:    vmv1r.v v15, v8
8305 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8306 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
8307 ; CHECK-NEXT:    ret
8308 entry:
8309   tail call void @llvm.riscv.vsoxseg6.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
8310   ret void
8313 define void @test_vsoxseg6_mask_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8314 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1f64_nxv1i16:
8315 ; CHECK:       # %bb.0: # %entry
8316 ; CHECK-NEXT:    vmv1r.v v10, v8
8317 ; CHECK-NEXT:    vmv1r.v v11, v8
8318 ; CHECK-NEXT:    vmv1r.v v12, v8
8319 ; CHECK-NEXT:    vmv1r.v v13, v8
8320 ; CHECK-NEXT:    vmv1r.v v14, v8
8321 ; CHECK-NEXT:    vmv1r.v v15, v8
8322 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8323 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
8324 ; CHECK-NEXT:    ret
8325 entry:
8326   tail call void @llvm.riscv.vsoxseg6.mask.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
8327   ret void
8330 declare void @llvm.riscv.vsoxseg7.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, i32)
8331 declare void @llvm.riscv.vsoxseg7.mask.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
8333 define void @test_vsoxseg7_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
8334 ; CHECK-LABEL: test_vsoxseg7_nxv1f64_nxv1i8:
8335 ; CHECK:       # %bb.0: # %entry
8336 ; CHECK-NEXT:    vmv1r.v v10, v8
8337 ; CHECK-NEXT:    vmv1r.v v11, v8
8338 ; CHECK-NEXT:    vmv1r.v v12, v8
8339 ; CHECK-NEXT:    vmv1r.v v13, v8
8340 ; CHECK-NEXT:    vmv1r.v v14, v8
8341 ; CHECK-NEXT:    vmv1r.v v15, v8
8342 ; CHECK-NEXT:    vmv1r.v v16, v8
8343 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8344 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
8345 ; CHECK-NEXT:    ret
8346 entry:
8347   tail call void @llvm.riscv.vsoxseg7.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
8348   ret void
8351 define void @test_vsoxseg7_mask_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8352 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1f64_nxv1i8:
8353 ; CHECK:       # %bb.0: # %entry
8354 ; CHECK-NEXT:    vmv1r.v v10, v8
8355 ; CHECK-NEXT:    vmv1r.v v11, v8
8356 ; CHECK-NEXT:    vmv1r.v v12, v8
8357 ; CHECK-NEXT:    vmv1r.v v13, v8
8358 ; CHECK-NEXT:    vmv1r.v v14, v8
8359 ; CHECK-NEXT:    vmv1r.v v15, v8
8360 ; CHECK-NEXT:    vmv1r.v v16, v8
8361 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8362 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
8363 ; CHECK-NEXT:    ret
8364 entry:
8365   tail call void @llvm.riscv.vsoxseg7.mask.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
8366   ret void
8369 declare void @llvm.riscv.vsoxseg7.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, i32)
8370 declare void @llvm.riscv.vsoxseg7.mask.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
8372 define void @test_vsoxseg7_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
8373 ; CHECK-LABEL: test_vsoxseg7_nxv1f64_nxv1i32:
8374 ; CHECK:       # %bb.0: # %entry
8375 ; CHECK-NEXT:    vmv1r.v v10, v8
8376 ; CHECK-NEXT:    vmv1r.v v11, v8
8377 ; CHECK-NEXT:    vmv1r.v v12, v8
8378 ; CHECK-NEXT:    vmv1r.v v13, v8
8379 ; CHECK-NEXT:    vmv1r.v v14, v8
8380 ; CHECK-NEXT:    vmv1r.v v15, v8
8381 ; CHECK-NEXT:    vmv1r.v v16, v8
8382 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8383 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9
8384 ; CHECK-NEXT:    ret
8385 entry:
8386   tail call void @llvm.riscv.vsoxseg7.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
8387   ret void
8390 define void @test_vsoxseg7_mask_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8391 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1f64_nxv1i32:
8392 ; CHECK:       # %bb.0: # %entry
8393 ; CHECK-NEXT:    vmv1r.v v10, v8
8394 ; CHECK-NEXT:    vmv1r.v v11, v8
8395 ; CHECK-NEXT:    vmv1r.v v12, v8
8396 ; CHECK-NEXT:    vmv1r.v v13, v8
8397 ; CHECK-NEXT:    vmv1r.v v14, v8
8398 ; CHECK-NEXT:    vmv1r.v v15, v8
8399 ; CHECK-NEXT:    vmv1r.v v16, v8
8400 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8401 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9, v0.t
8402 ; CHECK-NEXT:    ret
8403 entry:
8404   tail call void @llvm.riscv.vsoxseg7.mask.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
8405   ret void
8408 declare void @llvm.riscv.vsoxseg7.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, i32)
8409 declare void @llvm.riscv.vsoxseg7.mask.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
8411 define void @test_vsoxseg7_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
8412 ; CHECK-LABEL: test_vsoxseg7_nxv1f64_nxv1i16:
8413 ; CHECK:       # %bb.0: # %entry
8414 ; CHECK-NEXT:    vmv1r.v v10, v8
8415 ; CHECK-NEXT:    vmv1r.v v11, v8
8416 ; CHECK-NEXT:    vmv1r.v v12, v8
8417 ; CHECK-NEXT:    vmv1r.v v13, v8
8418 ; CHECK-NEXT:    vmv1r.v v14, v8
8419 ; CHECK-NEXT:    vmv1r.v v15, v8
8420 ; CHECK-NEXT:    vmv1r.v v16, v8
8421 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8422 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
8423 ; CHECK-NEXT:    ret
8424 entry:
8425   tail call void @llvm.riscv.vsoxseg7.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
8426   ret void
8429 define void @test_vsoxseg7_mask_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8430 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1f64_nxv1i16:
8431 ; CHECK:       # %bb.0: # %entry
8432 ; CHECK-NEXT:    vmv1r.v v10, v8
8433 ; CHECK-NEXT:    vmv1r.v v11, v8
8434 ; CHECK-NEXT:    vmv1r.v v12, v8
8435 ; CHECK-NEXT:    vmv1r.v v13, v8
8436 ; CHECK-NEXT:    vmv1r.v v14, v8
8437 ; CHECK-NEXT:    vmv1r.v v15, v8
8438 ; CHECK-NEXT:    vmv1r.v v16, v8
8439 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8440 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
8441 ; CHECK-NEXT:    ret
8442 entry:
8443   tail call void @llvm.riscv.vsoxseg7.mask.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
8444   ret void
8447 declare void @llvm.riscv.vsoxseg8.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, i32)
8448 declare void @llvm.riscv.vsoxseg8.mask.nxv1f64.nxv1i8(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
8450 define void @test_vsoxseg8_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
8451 ; CHECK-LABEL: test_vsoxseg8_nxv1f64_nxv1i8:
8452 ; CHECK:       # %bb.0: # %entry
8453 ; CHECK-NEXT:    vmv1r.v v10, v8
8454 ; CHECK-NEXT:    vmv1r.v v11, v8
8455 ; CHECK-NEXT:    vmv1r.v v12, v8
8456 ; CHECK-NEXT:    vmv1r.v v13, v8
8457 ; CHECK-NEXT:    vmv1r.v v14, v8
8458 ; CHECK-NEXT:    vmv1r.v v15, v8
8459 ; CHECK-NEXT:    vmv1r.v v16, v8
8460 ; CHECK-NEXT:    vmv1r.v v17, v8
8461 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8462 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
8463 ; CHECK-NEXT:    ret
8464 entry:
8465   tail call void @llvm.riscv.vsoxseg8.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
8466   ret void
8469 define void @test_vsoxseg8_mask_nxv1f64_nxv1i8(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8470 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1f64_nxv1i8:
8471 ; CHECK:       # %bb.0: # %entry
8472 ; CHECK-NEXT:    vmv1r.v v10, v8
8473 ; CHECK-NEXT:    vmv1r.v v11, v8
8474 ; CHECK-NEXT:    vmv1r.v v12, v8
8475 ; CHECK-NEXT:    vmv1r.v v13, v8
8476 ; CHECK-NEXT:    vmv1r.v v14, v8
8477 ; CHECK-NEXT:    vmv1r.v v15, v8
8478 ; CHECK-NEXT:    vmv1r.v v16, v8
8479 ; CHECK-NEXT:    vmv1r.v v17, v8
8480 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8481 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
8482 ; CHECK-NEXT:    ret
8483 entry:
8484   tail call void @llvm.riscv.vsoxseg8.mask.nxv1f64.nxv1i8(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
8485   ret void
8488 declare void @llvm.riscv.vsoxseg8.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, i32)
8489 declare void @llvm.riscv.vsoxseg8.mask.nxv1f64.nxv1i32(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
8491 define void @test_vsoxseg8_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
8492 ; CHECK-LABEL: test_vsoxseg8_nxv1f64_nxv1i32:
8493 ; CHECK:       # %bb.0: # %entry
8494 ; CHECK-NEXT:    vmv1r.v v10, v8
8495 ; CHECK-NEXT:    vmv1r.v v11, v8
8496 ; CHECK-NEXT:    vmv1r.v v12, v8
8497 ; CHECK-NEXT:    vmv1r.v v13, v8
8498 ; CHECK-NEXT:    vmv1r.v v14, v8
8499 ; CHECK-NEXT:    vmv1r.v v15, v8
8500 ; CHECK-NEXT:    vmv1r.v v16, v8
8501 ; CHECK-NEXT:    vmv1r.v v17, v8
8502 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8503 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9
8504 ; CHECK-NEXT:    ret
8505 entry:
8506   tail call void @llvm.riscv.vsoxseg8.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
8507   ret void
8510 define void @test_vsoxseg8_mask_nxv1f64_nxv1i32(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8511 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1f64_nxv1i32:
8512 ; CHECK:       # %bb.0: # %entry
8513 ; CHECK-NEXT:    vmv1r.v v10, v8
8514 ; CHECK-NEXT:    vmv1r.v v11, v8
8515 ; CHECK-NEXT:    vmv1r.v v12, v8
8516 ; CHECK-NEXT:    vmv1r.v v13, v8
8517 ; CHECK-NEXT:    vmv1r.v v14, v8
8518 ; CHECK-NEXT:    vmv1r.v v15, v8
8519 ; CHECK-NEXT:    vmv1r.v v16, v8
8520 ; CHECK-NEXT:    vmv1r.v v17, v8
8521 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8522 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9, v0.t
8523 ; CHECK-NEXT:    ret
8524 entry:
8525   tail call void @llvm.riscv.vsoxseg8.mask.nxv1f64.nxv1i32(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
8526   ret void
8529 declare void @llvm.riscv.vsoxseg8.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, i32)
8530 declare void @llvm.riscv.vsoxseg8.mask.nxv1f64.nxv1i16(<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>,<vscale x 1 x double>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
8532 define void @test_vsoxseg8_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
8533 ; CHECK-LABEL: test_vsoxseg8_nxv1f64_nxv1i16:
8534 ; CHECK:       # %bb.0: # %entry
8535 ; CHECK-NEXT:    vmv1r.v v10, v8
8536 ; CHECK-NEXT:    vmv1r.v v11, v8
8537 ; CHECK-NEXT:    vmv1r.v v12, v8
8538 ; CHECK-NEXT:    vmv1r.v v13, v8
8539 ; CHECK-NEXT:    vmv1r.v v14, v8
8540 ; CHECK-NEXT:    vmv1r.v v15, v8
8541 ; CHECK-NEXT:    vmv1r.v v16, v8
8542 ; CHECK-NEXT:    vmv1r.v v17, v8
8543 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8544 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
8545 ; CHECK-NEXT:    ret
8546 entry:
8547   tail call void @llvm.riscv.vsoxseg8.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
8548   ret void
8551 define void @test_vsoxseg8_mask_nxv1f64_nxv1i16(<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
8552 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1f64_nxv1i16:
8553 ; CHECK:       # %bb.0: # %entry
8554 ; CHECK-NEXT:    vmv1r.v v10, v8
8555 ; CHECK-NEXT:    vmv1r.v v11, v8
8556 ; CHECK-NEXT:    vmv1r.v v12, v8
8557 ; CHECK-NEXT:    vmv1r.v v13, v8
8558 ; CHECK-NEXT:    vmv1r.v v14, v8
8559 ; CHECK-NEXT:    vmv1r.v v15, v8
8560 ; CHECK-NEXT:    vmv1r.v v16, v8
8561 ; CHECK-NEXT:    vmv1r.v v17, v8
8562 ; CHECK-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
8563 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
8564 ; CHECK-NEXT:    ret
8565 entry:
8566   tail call void @llvm.riscv.vsoxseg8.mask.nxv1f64.nxv1i16(<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val,<vscale x 1 x double> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
8567   ret void
8570 declare void @llvm.riscv.vsoxseg2.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, i32)
8571 declare void @llvm.riscv.vsoxseg2.mask.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
8573 define void @test_vsoxseg2_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
8574 ; CHECK-LABEL: test_vsoxseg2_nxv2f32_nxv2i32:
8575 ; CHECK:       # %bb.0: # %entry
8576 ; CHECK-NEXT:    vmv1r.v v10, v9
8577 ; CHECK-NEXT:    vmv1r.v v9, v8
8578 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8579 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
8580 ; CHECK-NEXT:    ret
8581 entry:
8582   tail call void @llvm.riscv.vsoxseg2.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
8583   ret void
8586 define void @test_vsoxseg2_mask_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
8587 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2f32_nxv2i32:
8588 ; CHECK:       # %bb.0: # %entry
8589 ; CHECK-NEXT:    vmv1r.v v10, v9
8590 ; CHECK-NEXT:    vmv1r.v v9, v8
8591 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8592 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
8593 ; CHECK-NEXT:    ret
8594 entry:
8595   tail call void @llvm.riscv.vsoxseg2.mask.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
8596   ret void
8599 declare void @llvm.riscv.vsoxseg2.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, i32)
8600 declare void @llvm.riscv.vsoxseg2.mask.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
8602 define void @test_vsoxseg2_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
8603 ; CHECK-LABEL: test_vsoxseg2_nxv2f32_nxv2i8:
8604 ; CHECK:       # %bb.0: # %entry
8605 ; CHECK-NEXT:    vmv1r.v v10, v9
8606 ; CHECK-NEXT:    vmv1r.v v9, v8
8607 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8608 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
8609 ; CHECK-NEXT:    ret
8610 entry:
8611   tail call void @llvm.riscv.vsoxseg2.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
8612   ret void
8615 define void @test_vsoxseg2_mask_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
8616 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2f32_nxv2i8:
8617 ; CHECK:       # %bb.0: # %entry
8618 ; CHECK-NEXT:    vmv1r.v v10, v9
8619 ; CHECK-NEXT:    vmv1r.v v9, v8
8620 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8621 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
8622 ; CHECK-NEXT:    ret
8623 entry:
8624   tail call void @llvm.riscv.vsoxseg2.mask.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
8625   ret void
8628 declare void @llvm.riscv.vsoxseg2.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, i32)
8629 declare void @llvm.riscv.vsoxseg2.mask.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
8631 define void @test_vsoxseg2_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
8632 ; CHECK-LABEL: test_vsoxseg2_nxv2f32_nxv2i16:
8633 ; CHECK:       # %bb.0: # %entry
8634 ; CHECK-NEXT:    vmv1r.v v10, v9
8635 ; CHECK-NEXT:    vmv1r.v v9, v8
8636 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8637 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
8638 ; CHECK-NEXT:    ret
8639 entry:
8640   tail call void @llvm.riscv.vsoxseg2.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
8641   ret void
8644 define void @test_vsoxseg2_mask_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
8645 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2f32_nxv2i16:
8646 ; CHECK:       # %bb.0: # %entry
8647 ; CHECK-NEXT:    vmv1r.v v10, v9
8648 ; CHECK-NEXT:    vmv1r.v v9, v8
8649 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8650 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
8651 ; CHECK-NEXT:    ret
8652 entry:
8653   tail call void @llvm.riscv.vsoxseg2.mask.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
8654   ret void
8657 declare void @llvm.riscv.vsoxseg3.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, i32)
8658 declare void @llvm.riscv.vsoxseg3.mask.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
8660 define void @test_vsoxseg3_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
8661 ; CHECK-LABEL: test_vsoxseg3_nxv2f32_nxv2i32:
8662 ; CHECK:       # %bb.0: # %entry
8663 ; CHECK-NEXT:    vmv1r.v v10, v8
8664 ; CHECK-NEXT:    vmv1r.v v11, v8
8665 ; CHECK-NEXT:    vmv1r.v v12, v8
8666 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8667 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9
8668 ; CHECK-NEXT:    ret
8669 entry:
8670   tail call void @llvm.riscv.vsoxseg3.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
8671   ret void
8674 define void @test_vsoxseg3_mask_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
8675 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2f32_nxv2i32:
8676 ; CHECK:       # %bb.0: # %entry
8677 ; CHECK-NEXT:    vmv1r.v v10, v8
8678 ; CHECK-NEXT:    vmv1r.v v11, v8
8679 ; CHECK-NEXT:    vmv1r.v v12, v8
8680 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8681 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9, v0.t
8682 ; CHECK-NEXT:    ret
8683 entry:
8684   tail call void @llvm.riscv.vsoxseg3.mask.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
8685   ret void
8688 declare void @llvm.riscv.vsoxseg3.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, i32)
8689 declare void @llvm.riscv.vsoxseg3.mask.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
8691 define void @test_vsoxseg3_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
8692 ; CHECK-LABEL: test_vsoxseg3_nxv2f32_nxv2i8:
8693 ; CHECK:       # %bb.0: # %entry
8694 ; CHECK-NEXT:    vmv1r.v v10, v8
8695 ; CHECK-NEXT:    vmv1r.v v11, v8
8696 ; CHECK-NEXT:    vmv1r.v v12, v8
8697 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8698 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
8699 ; CHECK-NEXT:    ret
8700 entry:
8701   tail call void @llvm.riscv.vsoxseg3.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
8702   ret void
8705 define void @test_vsoxseg3_mask_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
8706 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2f32_nxv2i8:
8707 ; CHECK:       # %bb.0: # %entry
8708 ; CHECK-NEXT:    vmv1r.v v10, v8
8709 ; CHECK-NEXT:    vmv1r.v v11, v8
8710 ; CHECK-NEXT:    vmv1r.v v12, v8
8711 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8712 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
8713 ; CHECK-NEXT:    ret
8714 entry:
8715   tail call void @llvm.riscv.vsoxseg3.mask.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
8716   ret void
8719 declare void @llvm.riscv.vsoxseg3.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, i32)
8720 declare void @llvm.riscv.vsoxseg3.mask.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
8722 define void @test_vsoxseg3_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
8723 ; CHECK-LABEL: test_vsoxseg3_nxv2f32_nxv2i16:
8724 ; CHECK:       # %bb.0: # %entry
8725 ; CHECK-NEXT:    vmv1r.v v10, v8
8726 ; CHECK-NEXT:    vmv1r.v v11, v8
8727 ; CHECK-NEXT:    vmv1r.v v12, v8
8728 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8729 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
8730 ; CHECK-NEXT:    ret
8731 entry:
8732   tail call void @llvm.riscv.vsoxseg3.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
8733   ret void
8736 define void @test_vsoxseg3_mask_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
8737 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2f32_nxv2i16:
8738 ; CHECK:       # %bb.0: # %entry
8739 ; CHECK-NEXT:    vmv1r.v v10, v8
8740 ; CHECK-NEXT:    vmv1r.v v11, v8
8741 ; CHECK-NEXT:    vmv1r.v v12, v8
8742 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8743 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
8744 ; CHECK-NEXT:    ret
8745 entry:
8746   tail call void @llvm.riscv.vsoxseg3.mask.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
8747   ret void
8750 declare void @llvm.riscv.vsoxseg4.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, i32)
8751 declare void @llvm.riscv.vsoxseg4.mask.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
8753 define void @test_vsoxseg4_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
8754 ; CHECK-LABEL: test_vsoxseg4_nxv2f32_nxv2i32:
8755 ; CHECK:       # %bb.0: # %entry
8756 ; CHECK-NEXT:    vmv1r.v v10, v8
8757 ; CHECK-NEXT:    vmv1r.v v11, v8
8758 ; CHECK-NEXT:    vmv1r.v v12, v8
8759 ; CHECK-NEXT:    vmv1r.v v13, v8
8760 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8761 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9
8762 ; CHECK-NEXT:    ret
8763 entry:
8764   tail call void @llvm.riscv.vsoxseg4.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
8765   ret void
8768 define void @test_vsoxseg4_mask_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
8769 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2f32_nxv2i32:
8770 ; CHECK:       # %bb.0: # %entry
8771 ; CHECK-NEXT:    vmv1r.v v10, v8
8772 ; CHECK-NEXT:    vmv1r.v v11, v8
8773 ; CHECK-NEXT:    vmv1r.v v12, v8
8774 ; CHECK-NEXT:    vmv1r.v v13, v8
8775 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8776 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9, v0.t
8777 ; CHECK-NEXT:    ret
8778 entry:
8779   tail call void @llvm.riscv.vsoxseg4.mask.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
8780   ret void
8783 declare void @llvm.riscv.vsoxseg4.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, i32)
8784 declare void @llvm.riscv.vsoxseg4.mask.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
8786 define void @test_vsoxseg4_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
8787 ; CHECK-LABEL: test_vsoxseg4_nxv2f32_nxv2i8:
8788 ; CHECK:       # %bb.0: # %entry
8789 ; CHECK-NEXT:    vmv1r.v v10, v8
8790 ; CHECK-NEXT:    vmv1r.v v11, v8
8791 ; CHECK-NEXT:    vmv1r.v v12, v8
8792 ; CHECK-NEXT:    vmv1r.v v13, v8
8793 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8794 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
8795 ; CHECK-NEXT:    ret
8796 entry:
8797   tail call void @llvm.riscv.vsoxseg4.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
8798   ret void
8801 define void @test_vsoxseg4_mask_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
8802 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2f32_nxv2i8:
8803 ; CHECK:       # %bb.0: # %entry
8804 ; CHECK-NEXT:    vmv1r.v v10, v8
8805 ; CHECK-NEXT:    vmv1r.v v11, v8
8806 ; CHECK-NEXT:    vmv1r.v v12, v8
8807 ; CHECK-NEXT:    vmv1r.v v13, v8
8808 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8809 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
8810 ; CHECK-NEXT:    ret
8811 entry:
8812   tail call void @llvm.riscv.vsoxseg4.mask.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
8813   ret void
8816 declare void @llvm.riscv.vsoxseg4.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, i32)
8817 declare void @llvm.riscv.vsoxseg4.mask.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
8819 define void @test_vsoxseg4_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
8820 ; CHECK-LABEL: test_vsoxseg4_nxv2f32_nxv2i16:
8821 ; CHECK:       # %bb.0: # %entry
8822 ; CHECK-NEXT:    vmv1r.v v10, v8
8823 ; CHECK-NEXT:    vmv1r.v v11, v8
8824 ; CHECK-NEXT:    vmv1r.v v12, v8
8825 ; CHECK-NEXT:    vmv1r.v v13, v8
8826 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8827 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
8828 ; CHECK-NEXT:    ret
8829 entry:
8830   tail call void @llvm.riscv.vsoxseg4.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
8831   ret void
8834 define void @test_vsoxseg4_mask_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
8835 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2f32_nxv2i16:
8836 ; CHECK:       # %bb.0: # %entry
8837 ; CHECK-NEXT:    vmv1r.v v10, v8
8838 ; CHECK-NEXT:    vmv1r.v v11, v8
8839 ; CHECK-NEXT:    vmv1r.v v12, v8
8840 ; CHECK-NEXT:    vmv1r.v v13, v8
8841 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8842 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
8843 ; CHECK-NEXT:    ret
8844 entry:
8845   tail call void @llvm.riscv.vsoxseg4.mask.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
8846   ret void
8849 declare void @llvm.riscv.vsoxseg5.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, i32)
8850 declare void @llvm.riscv.vsoxseg5.mask.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
8852 define void @test_vsoxseg5_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
8853 ; CHECK-LABEL: test_vsoxseg5_nxv2f32_nxv2i32:
8854 ; CHECK:       # %bb.0: # %entry
8855 ; CHECK-NEXT:    vmv1r.v v10, v8
8856 ; CHECK-NEXT:    vmv1r.v v11, v8
8857 ; CHECK-NEXT:    vmv1r.v v12, v8
8858 ; CHECK-NEXT:    vmv1r.v v13, v8
8859 ; CHECK-NEXT:    vmv1r.v v14, v8
8860 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8861 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9
8862 ; CHECK-NEXT:    ret
8863 entry:
8864   tail call void @llvm.riscv.vsoxseg5.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
8865   ret void
8868 define void @test_vsoxseg5_mask_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
8869 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2f32_nxv2i32:
8870 ; CHECK:       # %bb.0: # %entry
8871 ; CHECK-NEXT:    vmv1r.v v10, v8
8872 ; CHECK-NEXT:    vmv1r.v v11, v8
8873 ; CHECK-NEXT:    vmv1r.v v12, v8
8874 ; CHECK-NEXT:    vmv1r.v v13, v8
8875 ; CHECK-NEXT:    vmv1r.v v14, v8
8876 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8877 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9, v0.t
8878 ; CHECK-NEXT:    ret
8879 entry:
8880   tail call void @llvm.riscv.vsoxseg5.mask.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
8881   ret void
8884 declare void @llvm.riscv.vsoxseg5.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, i32)
8885 declare void @llvm.riscv.vsoxseg5.mask.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
8887 define void @test_vsoxseg5_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
8888 ; CHECK-LABEL: test_vsoxseg5_nxv2f32_nxv2i8:
8889 ; CHECK:       # %bb.0: # %entry
8890 ; CHECK-NEXT:    vmv1r.v v10, v8
8891 ; CHECK-NEXT:    vmv1r.v v11, v8
8892 ; CHECK-NEXT:    vmv1r.v v12, v8
8893 ; CHECK-NEXT:    vmv1r.v v13, v8
8894 ; CHECK-NEXT:    vmv1r.v v14, v8
8895 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8896 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
8897 ; CHECK-NEXT:    ret
8898 entry:
8899   tail call void @llvm.riscv.vsoxseg5.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
8900   ret void
8903 define void @test_vsoxseg5_mask_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
8904 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2f32_nxv2i8:
8905 ; CHECK:       # %bb.0: # %entry
8906 ; CHECK-NEXT:    vmv1r.v v10, v8
8907 ; CHECK-NEXT:    vmv1r.v v11, v8
8908 ; CHECK-NEXT:    vmv1r.v v12, v8
8909 ; CHECK-NEXT:    vmv1r.v v13, v8
8910 ; CHECK-NEXT:    vmv1r.v v14, v8
8911 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8912 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
8913 ; CHECK-NEXT:    ret
8914 entry:
8915   tail call void @llvm.riscv.vsoxseg5.mask.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
8916   ret void
8919 declare void @llvm.riscv.vsoxseg5.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, i32)
8920 declare void @llvm.riscv.vsoxseg5.mask.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
8922 define void @test_vsoxseg5_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
8923 ; CHECK-LABEL: test_vsoxseg5_nxv2f32_nxv2i16:
8924 ; CHECK:       # %bb.0: # %entry
8925 ; CHECK-NEXT:    vmv1r.v v10, v8
8926 ; CHECK-NEXT:    vmv1r.v v11, v8
8927 ; CHECK-NEXT:    vmv1r.v v12, v8
8928 ; CHECK-NEXT:    vmv1r.v v13, v8
8929 ; CHECK-NEXT:    vmv1r.v v14, v8
8930 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8931 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
8932 ; CHECK-NEXT:    ret
8933 entry:
8934   tail call void @llvm.riscv.vsoxseg5.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
8935   ret void
8938 define void @test_vsoxseg5_mask_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
8939 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2f32_nxv2i16:
8940 ; CHECK:       # %bb.0: # %entry
8941 ; CHECK-NEXT:    vmv1r.v v10, v8
8942 ; CHECK-NEXT:    vmv1r.v v11, v8
8943 ; CHECK-NEXT:    vmv1r.v v12, v8
8944 ; CHECK-NEXT:    vmv1r.v v13, v8
8945 ; CHECK-NEXT:    vmv1r.v v14, v8
8946 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8947 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
8948 ; CHECK-NEXT:    ret
8949 entry:
8950   tail call void @llvm.riscv.vsoxseg5.mask.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
8951   ret void
8954 declare void @llvm.riscv.vsoxseg6.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, i32)
8955 declare void @llvm.riscv.vsoxseg6.mask.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
8957 define void @test_vsoxseg6_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
8958 ; CHECK-LABEL: test_vsoxseg6_nxv2f32_nxv2i32:
8959 ; CHECK:       # %bb.0: # %entry
8960 ; CHECK-NEXT:    vmv1r.v v10, v8
8961 ; CHECK-NEXT:    vmv1r.v v11, v8
8962 ; CHECK-NEXT:    vmv1r.v v12, v8
8963 ; CHECK-NEXT:    vmv1r.v v13, v8
8964 ; CHECK-NEXT:    vmv1r.v v14, v8
8965 ; CHECK-NEXT:    vmv1r.v v15, v8
8966 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8967 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9
8968 ; CHECK-NEXT:    ret
8969 entry:
8970   tail call void @llvm.riscv.vsoxseg6.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
8971   ret void
8974 define void @test_vsoxseg6_mask_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
8975 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2f32_nxv2i32:
8976 ; CHECK:       # %bb.0: # %entry
8977 ; CHECK-NEXT:    vmv1r.v v10, v8
8978 ; CHECK-NEXT:    vmv1r.v v11, v8
8979 ; CHECK-NEXT:    vmv1r.v v12, v8
8980 ; CHECK-NEXT:    vmv1r.v v13, v8
8981 ; CHECK-NEXT:    vmv1r.v v14, v8
8982 ; CHECK-NEXT:    vmv1r.v v15, v8
8983 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
8984 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9, v0.t
8985 ; CHECK-NEXT:    ret
8986 entry:
8987   tail call void @llvm.riscv.vsoxseg6.mask.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
8988   ret void
8991 declare void @llvm.riscv.vsoxseg6.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, i32)
8992 declare void @llvm.riscv.vsoxseg6.mask.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
8994 define void @test_vsoxseg6_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
8995 ; CHECK-LABEL: test_vsoxseg6_nxv2f32_nxv2i8:
8996 ; CHECK:       # %bb.0: # %entry
8997 ; CHECK-NEXT:    vmv1r.v v10, v8
8998 ; CHECK-NEXT:    vmv1r.v v11, v8
8999 ; CHECK-NEXT:    vmv1r.v v12, v8
9000 ; CHECK-NEXT:    vmv1r.v v13, v8
9001 ; CHECK-NEXT:    vmv1r.v v14, v8
9002 ; CHECK-NEXT:    vmv1r.v v15, v8
9003 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9004 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
9005 ; CHECK-NEXT:    ret
9006 entry:
9007   tail call void @llvm.riscv.vsoxseg6.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
9008   ret void
9011 define void @test_vsoxseg6_mask_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
9012 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2f32_nxv2i8:
9013 ; CHECK:       # %bb.0: # %entry
9014 ; CHECK-NEXT:    vmv1r.v v10, v8
9015 ; CHECK-NEXT:    vmv1r.v v11, v8
9016 ; CHECK-NEXT:    vmv1r.v v12, v8
9017 ; CHECK-NEXT:    vmv1r.v v13, v8
9018 ; CHECK-NEXT:    vmv1r.v v14, v8
9019 ; CHECK-NEXT:    vmv1r.v v15, v8
9020 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9021 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
9022 ; CHECK-NEXT:    ret
9023 entry:
9024   tail call void @llvm.riscv.vsoxseg6.mask.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
9025   ret void
9028 declare void @llvm.riscv.vsoxseg6.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, i32)
9029 declare void @llvm.riscv.vsoxseg6.mask.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
9031 define void @test_vsoxseg6_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
9032 ; CHECK-LABEL: test_vsoxseg6_nxv2f32_nxv2i16:
9033 ; CHECK:       # %bb.0: # %entry
9034 ; CHECK-NEXT:    vmv1r.v v10, v8
9035 ; CHECK-NEXT:    vmv1r.v v11, v8
9036 ; CHECK-NEXT:    vmv1r.v v12, v8
9037 ; CHECK-NEXT:    vmv1r.v v13, v8
9038 ; CHECK-NEXT:    vmv1r.v v14, v8
9039 ; CHECK-NEXT:    vmv1r.v v15, v8
9040 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9041 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
9042 ; CHECK-NEXT:    ret
9043 entry:
9044   tail call void @llvm.riscv.vsoxseg6.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
9045   ret void
9048 define void @test_vsoxseg6_mask_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
9049 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2f32_nxv2i16:
9050 ; CHECK:       # %bb.0: # %entry
9051 ; CHECK-NEXT:    vmv1r.v v10, v8
9052 ; CHECK-NEXT:    vmv1r.v v11, v8
9053 ; CHECK-NEXT:    vmv1r.v v12, v8
9054 ; CHECK-NEXT:    vmv1r.v v13, v8
9055 ; CHECK-NEXT:    vmv1r.v v14, v8
9056 ; CHECK-NEXT:    vmv1r.v v15, v8
9057 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9058 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
9059 ; CHECK-NEXT:    ret
9060 entry:
9061   tail call void @llvm.riscv.vsoxseg6.mask.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
9062   ret void
9065 declare void @llvm.riscv.vsoxseg7.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, i32)
9066 declare void @llvm.riscv.vsoxseg7.mask.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
9068 define void @test_vsoxseg7_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
9069 ; CHECK-LABEL: test_vsoxseg7_nxv2f32_nxv2i32:
9070 ; CHECK:       # %bb.0: # %entry
9071 ; CHECK-NEXT:    vmv1r.v v10, v8
9072 ; CHECK-NEXT:    vmv1r.v v11, v8
9073 ; CHECK-NEXT:    vmv1r.v v12, v8
9074 ; CHECK-NEXT:    vmv1r.v v13, v8
9075 ; CHECK-NEXT:    vmv1r.v v14, v8
9076 ; CHECK-NEXT:    vmv1r.v v15, v8
9077 ; CHECK-NEXT:    vmv1r.v v16, v8
9078 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9079 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9
9080 ; CHECK-NEXT:    ret
9081 entry:
9082   tail call void @llvm.riscv.vsoxseg7.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
9083   ret void
9086 define void @test_vsoxseg7_mask_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
9087 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2f32_nxv2i32:
9088 ; CHECK:       # %bb.0: # %entry
9089 ; CHECK-NEXT:    vmv1r.v v10, v8
9090 ; CHECK-NEXT:    vmv1r.v v11, v8
9091 ; CHECK-NEXT:    vmv1r.v v12, v8
9092 ; CHECK-NEXT:    vmv1r.v v13, v8
9093 ; CHECK-NEXT:    vmv1r.v v14, v8
9094 ; CHECK-NEXT:    vmv1r.v v15, v8
9095 ; CHECK-NEXT:    vmv1r.v v16, v8
9096 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9097 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9, v0.t
9098 ; CHECK-NEXT:    ret
9099 entry:
9100   tail call void @llvm.riscv.vsoxseg7.mask.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
9101   ret void
9104 declare void @llvm.riscv.vsoxseg7.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, i32)
9105 declare void @llvm.riscv.vsoxseg7.mask.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
9107 define void @test_vsoxseg7_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
9108 ; CHECK-LABEL: test_vsoxseg7_nxv2f32_nxv2i8:
9109 ; CHECK:       # %bb.0: # %entry
9110 ; CHECK-NEXT:    vmv1r.v v10, v8
9111 ; CHECK-NEXT:    vmv1r.v v11, v8
9112 ; CHECK-NEXT:    vmv1r.v v12, v8
9113 ; CHECK-NEXT:    vmv1r.v v13, v8
9114 ; CHECK-NEXT:    vmv1r.v v14, v8
9115 ; CHECK-NEXT:    vmv1r.v v15, v8
9116 ; CHECK-NEXT:    vmv1r.v v16, v8
9117 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9118 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
9119 ; CHECK-NEXT:    ret
9120 entry:
9121   tail call void @llvm.riscv.vsoxseg7.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
9122   ret void
9125 define void @test_vsoxseg7_mask_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
9126 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2f32_nxv2i8:
9127 ; CHECK:       # %bb.0: # %entry
9128 ; CHECK-NEXT:    vmv1r.v v10, v8
9129 ; CHECK-NEXT:    vmv1r.v v11, v8
9130 ; CHECK-NEXT:    vmv1r.v v12, v8
9131 ; CHECK-NEXT:    vmv1r.v v13, v8
9132 ; CHECK-NEXT:    vmv1r.v v14, v8
9133 ; CHECK-NEXT:    vmv1r.v v15, v8
9134 ; CHECK-NEXT:    vmv1r.v v16, v8
9135 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9136 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
9137 ; CHECK-NEXT:    ret
9138 entry:
9139   tail call void @llvm.riscv.vsoxseg7.mask.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
9140   ret void
9143 declare void @llvm.riscv.vsoxseg7.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, i32)
9144 declare void @llvm.riscv.vsoxseg7.mask.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
9146 define void @test_vsoxseg7_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
9147 ; CHECK-LABEL: test_vsoxseg7_nxv2f32_nxv2i16:
9148 ; CHECK:       # %bb.0: # %entry
9149 ; CHECK-NEXT:    vmv1r.v v10, v8
9150 ; CHECK-NEXT:    vmv1r.v v11, v8
9151 ; CHECK-NEXT:    vmv1r.v v12, v8
9152 ; CHECK-NEXT:    vmv1r.v v13, v8
9153 ; CHECK-NEXT:    vmv1r.v v14, v8
9154 ; CHECK-NEXT:    vmv1r.v v15, v8
9155 ; CHECK-NEXT:    vmv1r.v v16, v8
9156 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9157 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
9158 ; CHECK-NEXT:    ret
9159 entry:
9160   tail call void @llvm.riscv.vsoxseg7.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
9161   ret void
9164 define void @test_vsoxseg7_mask_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
9165 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2f32_nxv2i16:
9166 ; CHECK:       # %bb.0: # %entry
9167 ; CHECK-NEXT:    vmv1r.v v10, v8
9168 ; CHECK-NEXT:    vmv1r.v v11, v8
9169 ; CHECK-NEXT:    vmv1r.v v12, v8
9170 ; CHECK-NEXT:    vmv1r.v v13, v8
9171 ; CHECK-NEXT:    vmv1r.v v14, v8
9172 ; CHECK-NEXT:    vmv1r.v v15, v8
9173 ; CHECK-NEXT:    vmv1r.v v16, v8
9174 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9175 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
9176 ; CHECK-NEXT:    ret
9177 entry:
9178   tail call void @llvm.riscv.vsoxseg7.mask.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
9179   ret void
9182 declare void @llvm.riscv.vsoxseg8.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, i32)
9183 declare void @llvm.riscv.vsoxseg8.mask.nxv2f32.nxv2i32(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
9185 define void @test_vsoxseg8_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
9186 ; CHECK-LABEL: test_vsoxseg8_nxv2f32_nxv2i32:
9187 ; CHECK:       # %bb.0: # %entry
9188 ; CHECK-NEXT:    vmv1r.v v10, v8
9189 ; CHECK-NEXT:    vmv1r.v v11, v8
9190 ; CHECK-NEXT:    vmv1r.v v12, v8
9191 ; CHECK-NEXT:    vmv1r.v v13, v8
9192 ; CHECK-NEXT:    vmv1r.v v14, v8
9193 ; CHECK-NEXT:    vmv1r.v v15, v8
9194 ; CHECK-NEXT:    vmv1r.v v16, v8
9195 ; CHECK-NEXT:    vmv1r.v v17, v8
9196 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9197 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9
9198 ; CHECK-NEXT:    ret
9199 entry:
9200   tail call void @llvm.riscv.vsoxseg8.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
9201   ret void
9204 define void @test_vsoxseg8_mask_nxv2f32_nxv2i32(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
9205 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2f32_nxv2i32:
9206 ; CHECK:       # %bb.0: # %entry
9207 ; CHECK-NEXT:    vmv1r.v v10, v8
9208 ; CHECK-NEXT:    vmv1r.v v11, v8
9209 ; CHECK-NEXT:    vmv1r.v v12, v8
9210 ; CHECK-NEXT:    vmv1r.v v13, v8
9211 ; CHECK-NEXT:    vmv1r.v v14, v8
9212 ; CHECK-NEXT:    vmv1r.v v15, v8
9213 ; CHECK-NEXT:    vmv1r.v v16, v8
9214 ; CHECK-NEXT:    vmv1r.v v17, v8
9215 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9216 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9, v0.t
9217 ; CHECK-NEXT:    ret
9218 entry:
9219   tail call void @llvm.riscv.vsoxseg8.mask.nxv2f32.nxv2i32(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
9220   ret void
9223 declare void @llvm.riscv.vsoxseg8.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, i32)
9224 declare void @llvm.riscv.vsoxseg8.mask.nxv2f32.nxv2i8(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
9226 define void @test_vsoxseg8_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
9227 ; CHECK-LABEL: test_vsoxseg8_nxv2f32_nxv2i8:
9228 ; CHECK:       # %bb.0: # %entry
9229 ; CHECK-NEXT:    vmv1r.v v10, v8
9230 ; CHECK-NEXT:    vmv1r.v v11, v8
9231 ; CHECK-NEXT:    vmv1r.v v12, v8
9232 ; CHECK-NEXT:    vmv1r.v v13, v8
9233 ; CHECK-NEXT:    vmv1r.v v14, v8
9234 ; CHECK-NEXT:    vmv1r.v v15, v8
9235 ; CHECK-NEXT:    vmv1r.v v16, v8
9236 ; CHECK-NEXT:    vmv1r.v v17, v8
9237 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9238 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
9239 ; CHECK-NEXT:    ret
9240 entry:
9241   tail call void @llvm.riscv.vsoxseg8.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
9242   ret void
9245 define void @test_vsoxseg8_mask_nxv2f32_nxv2i8(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
9246 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2f32_nxv2i8:
9247 ; CHECK:       # %bb.0: # %entry
9248 ; CHECK-NEXT:    vmv1r.v v10, v8
9249 ; CHECK-NEXT:    vmv1r.v v11, v8
9250 ; CHECK-NEXT:    vmv1r.v v12, v8
9251 ; CHECK-NEXT:    vmv1r.v v13, v8
9252 ; CHECK-NEXT:    vmv1r.v v14, v8
9253 ; CHECK-NEXT:    vmv1r.v v15, v8
9254 ; CHECK-NEXT:    vmv1r.v v16, v8
9255 ; CHECK-NEXT:    vmv1r.v v17, v8
9256 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9257 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
9258 ; CHECK-NEXT:    ret
9259 entry:
9260   tail call void @llvm.riscv.vsoxseg8.mask.nxv2f32.nxv2i8(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
9261   ret void
9264 declare void @llvm.riscv.vsoxseg8.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, i32)
9265 declare void @llvm.riscv.vsoxseg8.mask.nxv2f32.nxv2i16(<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>,<vscale x 2 x float>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
9267 define void @test_vsoxseg8_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
9268 ; CHECK-LABEL: test_vsoxseg8_nxv2f32_nxv2i16:
9269 ; CHECK:       # %bb.0: # %entry
9270 ; CHECK-NEXT:    vmv1r.v v10, v8
9271 ; CHECK-NEXT:    vmv1r.v v11, v8
9272 ; CHECK-NEXT:    vmv1r.v v12, v8
9273 ; CHECK-NEXT:    vmv1r.v v13, v8
9274 ; CHECK-NEXT:    vmv1r.v v14, v8
9275 ; CHECK-NEXT:    vmv1r.v v15, v8
9276 ; CHECK-NEXT:    vmv1r.v v16, v8
9277 ; CHECK-NEXT:    vmv1r.v v17, v8
9278 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9279 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
9280 ; CHECK-NEXT:    ret
9281 entry:
9282   tail call void @llvm.riscv.vsoxseg8.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
9283   ret void
9286 define void @test_vsoxseg8_mask_nxv2f32_nxv2i16(<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
9287 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2f32_nxv2i16:
9288 ; CHECK:       # %bb.0: # %entry
9289 ; CHECK-NEXT:    vmv1r.v v10, v8
9290 ; CHECK-NEXT:    vmv1r.v v11, v8
9291 ; CHECK-NEXT:    vmv1r.v v12, v8
9292 ; CHECK-NEXT:    vmv1r.v v13, v8
9293 ; CHECK-NEXT:    vmv1r.v v14, v8
9294 ; CHECK-NEXT:    vmv1r.v v15, v8
9295 ; CHECK-NEXT:    vmv1r.v v16, v8
9296 ; CHECK-NEXT:    vmv1r.v v17, v8
9297 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
9298 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
9299 ; CHECK-NEXT:    ret
9300 entry:
9301   tail call void @llvm.riscv.vsoxseg8.mask.nxv2f32.nxv2i16(<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val,<vscale x 2 x float> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
9302   ret void
9305 declare void @llvm.riscv.vsoxseg2.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, i32)
9306 declare void @llvm.riscv.vsoxseg2.mask.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
9308 define void @test_vsoxseg2_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
9309 ; CHECK-LABEL: test_vsoxseg2_nxv1f16_nxv1i8:
9310 ; CHECK:       # %bb.0: # %entry
9311 ; CHECK-NEXT:    vmv1r.v v10, v9
9312 ; CHECK-NEXT:    vmv1r.v v9, v8
9313 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9314 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
9315 ; CHECK-NEXT:    ret
9316 entry:
9317   tail call void @llvm.riscv.vsoxseg2.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
9318   ret void
9321 define void @test_vsoxseg2_mask_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9322 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1f16_nxv1i8:
9323 ; CHECK:       # %bb.0: # %entry
9324 ; CHECK-NEXT:    vmv1r.v v10, v9
9325 ; CHECK-NEXT:    vmv1r.v v9, v8
9326 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9327 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
9328 ; CHECK-NEXT:    ret
9329 entry:
9330   tail call void @llvm.riscv.vsoxseg2.mask.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
9331   ret void
9334 declare void @llvm.riscv.vsoxseg2.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, i32)
9335 declare void @llvm.riscv.vsoxseg2.mask.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
9337 define void @test_vsoxseg2_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
9338 ; CHECK-LABEL: test_vsoxseg2_nxv1f16_nxv1i32:
9339 ; CHECK:       # %bb.0: # %entry
9340 ; CHECK-NEXT:    vmv1r.v v10, v9
9341 ; CHECK-NEXT:    vmv1r.v v9, v8
9342 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9343 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
9344 ; CHECK-NEXT:    ret
9345 entry:
9346   tail call void @llvm.riscv.vsoxseg2.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
9347   ret void
9350 define void @test_vsoxseg2_mask_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9351 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1f16_nxv1i32:
9352 ; CHECK:       # %bb.0: # %entry
9353 ; CHECK-NEXT:    vmv1r.v v10, v9
9354 ; CHECK-NEXT:    vmv1r.v v9, v8
9355 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9356 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
9357 ; CHECK-NEXT:    ret
9358 entry:
9359   tail call void @llvm.riscv.vsoxseg2.mask.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
9360   ret void
9363 declare void @llvm.riscv.vsoxseg2.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, i32)
9364 declare void @llvm.riscv.vsoxseg2.mask.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
9366 define void @test_vsoxseg2_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
9367 ; CHECK-LABEL: test_vsoxseg2_nxv1f16_nxv1i16:
9368 ; CHECK:       # %bb.0: # %entry
9369 ; CHECK-NEXT:    vmv1r.v v10, v9
9370 ; CHECK-NEXT:    vmv1r.v v9, v8
9371 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9372 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
9373 ; CHECK-NEXT:    ret
9374 entry:
9375   tail call void @llvm.riscv.vsoxseg2.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
9376   ret void
9379 define void @test_vsoxseg2_mask_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9380 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1f16_nxv1i16:
9381 ; CHECK:       # %bb.0: # %entry
9382 ; CHECK-NEXT:    vmv1r.v v10, v9
9383 ; CHECK-NEXT:    vmv1r.v v9, v8
9384 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9385 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
9386 ; CHECK-NEXT:    ret
9387 entry:
9388   tail call void @llvm.riscv.vsoxseg2.mask.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
9389   ret void
9392 declare void @llvm.riscv.vsoxseg3.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, i32)
9393 declare void @llvm.riscv.vsoxseg3.mask.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
9395 define void @test_vsoxseg3_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
9396 ; CHECK-LABEL: test_vsoxseg3_nxv1f16_nxv1i8:
9397 ; CHECK:       # %bb.0: # %entry
9398 ; CHECK-NEXT:    vmv1r.v v10, v8
9399 ; CHECK-NEXT:    vmv1r.v v11, v8
9400 ; CHECK-NEXT:    vmv1r.v v12, v8
9401 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9402 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
9403 ; CHECK-NEXT:    ret
9404 entry:
9405   tail call void @llvm.riscv.vsoxseg3.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
9406   ret void
9409 define void @test_vsoxseg3_mask_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9410 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1f16_nxv1i8:
9411 ; CHECK:       # %bb.0: # %entry
9412 ; CHECK-NEXT:    vmv1r.v v10, v8
9413 ; CHECK-NEXT:    vmv1r.v v11, v8
9414 ; CHECK-NEXT:    vmv1r.v v12, v8
9415 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9416 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
9417 ; CHECK-NEXT:    ret
9418 entry:
9419   tail call void @llvm.riscv.vsoxseg3.mask.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
9420   ret void
9423 declare void @llvm.riscv.vsoxseg3.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, i32)
9424 declare void @llvm.riscv.vsoxseg3.mask.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
9426 define void @test_vsoxseg3_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
9427 ; CHECK-LABEL: test_vsoxseg3_nxv1f16_nxv1i32:
9428 ; CHECK:       # %bb.0: # %entry
9429 ; CHECK-NEXT:    vmv1r.v v10, v8
9430 ; CHECK-NEXT:    vmv1r.v v11, v8
9431 ; CHECK-NEXT:    vmv1r.v v12, v8
9432 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9433 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9
9434 ; CHECK-NEXT:    ret
9435 entry:
9436   tail call void @llvm.riscv.vsoxseg3.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
9437   ret void
9440 define void @test_vsoxseg3_mask_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9441 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1f16_nxv1i32:
9442 ; CHECK:       # %bb.0: # %entry
9443 ; CHECK-NEXT:    vmv1r.v v10, v8
9444 ; CHECK-NEXT:    vmv1r.v v11, v8
9445 ; CHECK-NEXT:    vmv1r.v v12, v8
9446 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9447 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9, v0.t
9448 ; CHECK-NEXT:    ret
9449 entry:
9450   tail call void @llvm.riscv.vsoxseg3.mask.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
9451   ret void
9454 declare void @llvm.riscv.vsoxseg3.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, i32)
9455 declare void @llvm.riscv.vsoxseg3.mask.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
9457 define void @test_vsoxseg3_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
9458 ; CHECK-LABEL: test_vsoxseg3_nxv1f16_nxv1i16:
9459 ; CHECK:       # %bb.0: # %entry
9460 ; CHECK-NEXT:    vmv1r.v v10, v8
9461 ; CHECK-NEXT:    vmv1r.v v11, v8
9462 ; CHECK-NEXT:    vmv1r.v v12, v8
9463 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9464 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
9465 ; CHECK-NEXT:    ret
9466 entry:
9467   tail call void @llvm.riscv.vsoxseg3.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
9468   ret void
9471 define void @test_vsoxseg3_mask_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9472 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1f16_nxv1i16:
9473 ; CHECK:       # %bb.0: # %entry
9474 ; CHECK-NEXT:    vmv1r.v v10, v8
9475 ; CHECK-NEXT:    vmv1r.v v11, v8
9476 ; CHECK-NEXT:    vmv1r.v v12, v8
9477 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9478 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
9479 ; CHECK-NEXT:    ret
9480 entry:
9481   tail call void @llvm.riscv.vsoxseg3.mask.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
9482   ret void
9485 declare void @llvm.riscv.vsoxseg4.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, i32)
9486 declare void @llvm.riscv.vsoxseg4.mask.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
9488 define void @test_vsoxseg4_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
9489 ; CHECK-LABEL: test_vsoxseg4_nxv1f16_nxv1i8:
9490 ; CHECK:       # %bb.0: # %entry
9491 ; CHECK-NEXT:    vmv1r.v v10, v8
9492 ; CHECK-NEXT:    vmv1r.v v11, v8
9493 ; CHECK-NEXT:    vmv1r.v v12, v8
9494 ; CHECK-NEXT:    vmv1r.v v13, v8
9495 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9496 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
9497 ; CHECK-NEXT:    ret
9498 entry:
9499   tail call void @llvm.riscv.vsoxseg4.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
9500   ret void
9503 define void @test_vsoxseg4_mask_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9504 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1f16_nxv1i8:
9505 ; CHECK:       # %bb.0: # %entry
9506 ; CHECK-NEXT:    vmv1r.v v10, v8
9507 ; CHECK-NEXT:    vmv1r.v v11, v8
9508 ; CHECK-NEXT:    vmv1r.v v12, v8
9509 ; CHECK-NEXT:    vmv1r.v v13, v8
9510 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9511 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
9512 ; CHECK-NEXT:    ret
9513 entry:
9514   tail call void @llvm.riscv.vsoxseg4.mask.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
9515   ret void
9518 declare void @llvm.riscv.vsoxseg4.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, i32)
9519 declare void @llvm.riscv.vsoxseg4.mask.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
9521 define void @test_vsoxseg4_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
9522 ; CHECK-LABEL: test_vsoxseg4_nxv1f16_nxv1i32:
9523 ; CHECK:       # %bb.0: # %entry
9524 ; CHECK-NEXT:    vmv1r.v v10, v8
9525 ; CHECK-NEXT:    vmv1r.v v11, v8
9526 ; CHECK-NEXT:    vmv1r.v v12, v8
9527 ; CHECK-NEXT:    vmv1r.v v13, v8
9528 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9529 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9
9530 ; CHECK-NEXT:    ret
9531 entry:
9532   tail call void @llvm.riscv.vsoxseg4.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
9533   ret void
9536 define void @test_vsoxseg4_mask_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9537 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1f16_nxv1i32:
9538 ; CHECK:       # %bb.0: # %entry
9539 ; CHECK-NEXT:    vmv1r.v v10, v8
9540 ; CHECK-NEXT:    vmv1r.v v11, v8
9541 ; CHECK-NEXT:    vmv1r.v v12, v8
9542 ; CHECK-NEXT:    vmv1r.v v13, v8
9543 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9544 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9, v0.t
9545 ; CHECK-NEXT:    ret
9546 entry:
9547   tail call void @llvm.riscv.vsoxseg4.mask.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
9548   ret void
9551 declare void @llvm.riscv.vsoxseg4.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, i32)
9552 declare void @llvm.riscv.vsoxseg4.mask.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
9554 define void @test_vsoxseg4_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
9555 ; CHECK-LABEL: test_vsoxseg4_nxv1f16_nxv1i16:
9556 ; CHECK:       # %bb.0: # %entry
9557 ; CHECK-NEXT:    vmv1r.v v10, v8
9558 ; CHECK-NEXT:    vmv1r.v v11, v8
9559 ; CHECK-NEXT:    vmv1r.v v12, v8
9560 ; CHECK-NEXT:    vmv1r.v v13, v8
9561 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9562 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
9563 ; CHECK-NEXT:    ret
9564 entry:
9565   tail call void @llvm.riscv.vsoxseg4.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
9566   ret void
9569 define void @test_vsoxseg4_mask_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9570 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1f16_nxv1i16:
9571 ; CHECK:       # %bb.0: # %entry
9572 ; CHECK-NEXT:    vmv1r.v v10, v8
9573 ; CHECK-NEXT:    vmv1r.v v11, v8
9574 ; CHECK-NEXT:    vmv1r.v v12, v8
9575 ; CHECK-NEXT:    vmv1r.v v13, v8
9576 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9577 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
9578 ; CHECK-NEXT:    ret
9579 entry:
9580   tail call void @llvm.riscv.vsoxseg4.mask.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
9581   ret void
9584 declare void @llvm.riscv.vsoxseg5.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, i32)
9585 declare void @llvm.riscv.vsoxseg5.mask.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
9587 define void @test_vsoxseg5_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
9588 ; CHECK-LABEL: test_vsoxseg5_nxv1f16_nxv1i8:
9589 ; CHECK:       # %bb.0: # %entry
9590 ; CHECK-NEXT:    vmv1r.v v10, v8
9591 ; CHECK-NEXT:    vmv1r.v v11, v8
9592 ; CHECK-NEXT:    vmv1r.v v12, v8
9593 ; CHECK-NEXT:    vmv1r.v v13, v8
9594 ; CHECK-NEXT:    vmv1r.v v14, v8
9595 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9596 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
9597 ; CHECK-NEXT:    ret
9598 entry:
9599   tail call void @llvm.riscv.vsoxseg5.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
9600   ret void
9603 define void @test_vsoxseg5_mask_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9604 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1f16_nxv1i8:
9605 ; CHECK:       # %bb.0: # %entry
9606 ; CHECK-NEXT:    vmv1r.v v10, v8
9607 ; CHECK-NEXT:    vmv1r.v v11, v8
9608 ; CHECK-NEXT:    vmv1r.v v12, v8
9609 ; CHECK-NEXT:    vmv1r.v v13, v8
9610 ; CHECK-NEXT:    vmv1r.v v14, v8
9611 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9612 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
9613 ; CHECK-NEXT:    ret
9614 entry:
9615   tail call void @llvm.riscv.vsoxseg5.mask.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
9616   ret void
9619 declare void @llvm.riscv.vsoxseg5.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, i32)
9620 declare void @llvm.riscv.vsoxseg5.mask.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
9622 define void @test_vsoxseg5_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
9623 ; CHECK-LABEL: test_vsoxseg5_nxv1f16_nxv1i32:
9624 ; CHECK:       # %bb.0: # %entry
9625 ; CHECK-NEXT:    vmv1r.v v10, v8
9626 ; CHECK-NEXT:    vmv1r.v v11, v8
9627 ; CHECK-NEXT:    vmv1r.v v12, v8
9628 ; CHECK-NEXT:    vmv1r.v v13, v8
9629 ; CHECK-NEXT:    vmv1r.v v14, v8
9630 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9631 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9
9632 ; CHECK-NEXT:    ret
9633 entry:
9634   tail call void @llvm.riscv.vsoxseg5.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
9635   ret void
9638 define void @test_vsoxseg5_mask_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9639 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1f16_nxv1i32:
9640 ; CHECK:       # %bb.0: # %entry
9641 ; CHECK-NEXT:    vmv1r.v v10, v8
9642 ; CHECK-NEXT:    vmv1r.v v11, v8
9643 ; CHECK-NEXT:    vmv1r.v v12, v8
9644 ; CHECK-NEXT:    vmv1r.v v13, v8
9645 ; CHECK-NEXT:    vmv1r.v v14, v8
9646 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9647 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9, v0.t
9648 ; CHECK-NEXT:    ret
9649 entry:
9650   tail call void @llvm.riscv.vsoxseg5.mask.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
9651   ret void
9654 declare void @llvm.riscv.vsoxseg5.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, i32)
9655 declare void @llvm.riscv.vsoxseg5.mask.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
9657 define void @test_vsoxseg5_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
9658 ; CHECK-LABEL: test_vsoxseg5_nxv1f16_nxv1i16:
9659 ; CHECK:       # %bb.0: # %entry
9660 ; CHECK-NEXT:    vmv1r.v v10, v8
9661 ; CHECK-NEXT:    vmv1r.v v11, v8
9662 ; CHECK-NEXT:    vmv1r.v v12, v8
9663 ; CHECK-NEXT:    vmv1r.v v13, v8
9664 ; CHECK-NEXT:    vmv1r.v v14, v8
9665 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9666 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
9667 ; CHECK-NEXT:    ret
9668 entry:
9669   tail call void @llvm.riscv.vsoxseg5.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
9670   ret void
9673 define void @test_vsoxseg5_mask_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9674 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1f16_nxv1i16:
9675 ; CHECK:       # %bb.0: # %entry
9676 ; CHECK-NEXT:    vmv1r.v v10, v8
9677 ; CHECK-NEXT:    vmv1r.v v11, v8
9678 ; CHECK-NEXT:    vmv1r.v v12, v8
9679 ; CHECK-NEXT:    vmv1r.v v13, v8
9680 ; CHECK-NEXT:    vmv1r.v v14, v8
9681 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9682 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
9683 ; CHECK-NEXT:    ret
9684 entry:
9685   tail call void @llvm.riscv.vsoxseg5.mask.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
9686   ret void
9689 declare void @llvm.riscv.vsoxseg6.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, i32)
9690 declare void @llvm.riscv.vsoxseg6.mask.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
9692 define void @test_vsoxseg6_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
9693 ; CHECK-LABEL: test_vsoxseg6_nxv1f16_nxv1i8:
9694 ; CHECK:       # %bb.0: # %entry
9695 ; CHECK-NEXT:    vmv1r.v v10, v8
9696 ; CHECK-NEXT:    vmv1r.v v11, v8
9697 ; CHECK-NEXT:    vmv1r.v v12, v8
9698 ; CHECK-NEXT:    vmv1r.v v13, v8
9699 ; CHECK-NEXT:    vmv1r.v v14, v8
9700 ; CHECK-NEXT:    vmv1r.v v15, v8
9701 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9702 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
9703 ; CHECK-NEXT:    ret
9704 entry:
9705   tail call void @llvm.riscv.vsoxseg6.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
9706   ret void
9709 define void @test_vsoxseg6_mask_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9710 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1f16_nxv1i8:
9711 ; CHECK:       # %bb.0: # %entry
9712 ; CHECK-NEXT:    vmv1r.v v10, v8
9713 ; CHECK-NEXT:    vmv1r.v v11, v8
9714 ; CHECK-NEXT:    vmv1r.v v12, v8
9715 ; CHECK-NEXT:    vmv1r.v v13, v8
9716 ; CHECK-NEXT:    vmv1r.v v14, v8
9717 ; CHECK-NEXT:    vmv1r.v v15, v8
9718 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9719 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
9720 ; CHECK-NEXT:    ret
9721 entry:
9722   tail call void @llvm.riscv.vsoxseg6.mask.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
9723   ret void
9726 declare void @llvm.riscv.vsoxseg6.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, i32)
9727 declare void @llvm.riscv.vsoxseg6.mask.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
9729 define void @test_vsoxseg6_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
9730 ; CHECK-LABEL: test_vsoxseg6_nxv1f16_nxv1i32:
9731 ; CHECK:       # %bb.0: # %entry
9732 ; CHECK-NEXT:    vmv1r.v v10, v8
9733 ; CHECK-NEXT:    vmv1r.v v11, v8
9734 ; CHECK-NEXT:    vmv1r.v v12, v8
9735 ; CHECK-NEXT:    vmv1r.v v13, v8
9736 ; CHECK-NEXT:    vmv1r.v v14, v8
9737 ; CHECK-NEXT:    vmv1r.v v15, v8
9738 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9739 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9
9740 ; CHECK-NEXT:    ret
9741 entry:
9742   tail call void @llvm.riscv.vsoxseg6.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
9743   ret void
9746 define void @test_vsoxseg6_mask_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9747 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1f16_nxv1i32:
9748 ; CHECK:       # %bb.0: # %entry
9749 ; CHECK-NEXT:    vmv1r.v v10, v8
9750 ; CHECK-NEXT:    vmv1r.v v11, v8
9751 ; CHECK-NEXT:    vmv1r.v v12, v8
9752 ; CHECK-NEXT:    vmv1r.v v13, v8
9753 ; CHECK-NEXT:    vmv1r.v v14, v8
9754 ; CHECK-NEXT:    vmv1r.v v15, v8
9755 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9756 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9, v0.t
9757 ; CHECK-NEXT:    ret
9758 entry:
9759   tail call void @llvm.riscv.vsoxseg6.mask.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
9760   ret void
9763 declare void @llvm.riscv.vsoxseg6.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, i32)
9764 declare void @llvm.riscv.vsoxseg6.mask.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
9766 define void @test_vsoxseg6_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
9767 ; CHECK-LABEL: test_vsoxseg6_nxv1f16_nxv1i16:
9768 ; CHECK:       # %bb.0: # %entry
9769 ; CHECK-NEXT:    vmv1r.v v10, v8
9770 ; CHECK-NEXT:    vmv1r.v v11, v8
9771 ; CHECK-NEXT:    vmv1r.v v12, v8
9772 ; CHECK-NEXT:    vmv1r.v v13, v8
9773 ; CHECK-NEXT:    vmv1r.v v14, v8
9774 ; CHECK-NEXT:    vmv1r.v v15, v8
9775 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9776 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
9777 ; CHECK-NEXT:    ret
9778 entry:
9779   tail call void @llvm.riscv.vsoxseg6.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
9780   ret void
9783 define void @test_vsoxseg6_mask_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9784 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1f16_nxv1i16:
9785 ; CHECK:       # %bb.0: # %entry
9786 ; CHECK-NEXT:    vmv1r.v v10, v8
9787 ; CHECK-NEXT:    vmv1r.v v11, v8
9788 ; CHECK-NEXT:    vmv1r.v v12, v8
9789 ; CHECK-NEXT:    vmv1r.v v13, v8
9790 ; CHECK-NEXT:    vmv1r.v v14, v8
9791 ; CHECK-NEXT:    vmv1r.v v15, v8
9792 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9793 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
9794 ; CHECK-NEXT:    ret
9795 entry:
9796   tail call void @llvm.riscv.vsoxseg6.mask.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
9797   ret void
9800 declare void @llvm.riscv.vsoxseg7.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, i32)
9801 declare void @llvm.riscv.vsoxseg7.mask.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
9803 define void @test_vsoxseg7_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
9804 ; CHECK-LABEL: test_vsoxseg7_nxv1f16_nxv1i8:
9805 ; CHECK:       # %bb.0: # %entry
9806 ; CHECK-NEXT:    vmv1r.v v10, v8
9807 ; CHECK-NEXT:    vmv1r.v v11, v8
9808 ; CHECK-NEXT:    vmv1r.v v12, v8
9809 ; CHECK-NEXT:    vmv1r.v v13, v8
9810 ; CHECK-NEXT:    vmv1r.v v14, v8
9811 ; CHECK-NEXT:    vmv1r.v v15, v8
9812 ; CHECK-NEXT:    vmv1r.v v16, v8
9813 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9814 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
9815 ; CHECK-NEXT:    ret
9816 entry:
9817   tail call void @llvm.riscv.vsoxseg7.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
9818   ret void
9821 define void @test_vsoxseg7_mask_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9822 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1f16_nxv1i8:
9823 ; CHECK:       # %bb.0: # %entry
9824 ; CHECK-NEXT:    vmv1r.v v10, v8
9825 ; CHECK-NEXT:    vmv1r.v v11, v8
9826 ; CHECK-NEXT:    vmv1r.v v12, v8
9827 ; CHECK-NEXT:    vmv1r.v v13, v8
9828 ; CHECK-NEXT:    vmv1r.v v14, v8
9829 ; CHECK-NEXT:    vmv1r.v v15, v8
9830 ; CHECK-NEXT:    vmv1r.v v16, v8
9831 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9832 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
9833 ; CHECK-NEXT:    ret
9834 entry:
9835   tail call void @llvm.riscv.vsoxseg7.mask.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
9836   ret void
9839 declare void @llvm.riscv.vsoxseg7.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, i32)
9840 declare void @llvm.riscv.vsoxseg7.mask.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
9842 define void @test_vsoxseg7_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
9843 ; CHECK-LABEL: test_vsoxseg7_nxv1f16_nxv1i32:
9844 ; CHECK:       # %bb.0: # %entry
9845 ; CHECK-NEXT:    vmv1r.v v10, v8
9846 ; CHECK-NEXT:    vmv1r.v v11, v8
9847 ; CHECK-NEXT:    vmv1r.v v12, v8
9848 ; CHECK-NEXT:    vmv1r.v v13, v8
9849 ; CHECK-NEXT:    vmv1r.v v14, v8
9850 ; CHECK-NEXT:    vmv1r.v v15, v8
9851 ; CHECK-NEXT:    vmv1r.v v16, v8
9852 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9853 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9
9854 ; CHECK-NEXT:    ret
9855 entry:
9856   tail call void @llvm.riscv.vsoxseg7.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
9857   ret void
9860 define void @test_vsoxseg7_mask_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9861 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1f16_nxv1i32:
9862 ; CHECK:       # %bb.0: # %entry
9863 ; CHECK-NEXT:    vmv1r.v v10, v8
9864 ; CHECK-NEXT:    vmv1r.v v11, v8
9865 ; CHECK-NEXT:    vmv1r.v v12, v8
9866 ; CHECK-NEXT:    vmv1r.v v13, v8
9867 ; CHECK-NEXT:    vmv1r.v v14, v8
9868 ; CHECK-NEXT:    vmv1r.v v15, v8
9869 ; CHECK-NEXT:    vmv1r.v v16, v8
9870 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9871 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9, v0.t
9872 ; CHECK-NEXT:    ret
9873 entry:
9874   tail call void @llvm.riscv.vsoxseg7.mask.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
9875   ret void
9878 declare void @llvm.riscv.vsoxseg7.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, i32)
9879 declare void @llvm.riscv.vsoxseg7.mask.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
9881 define void @test_vsoxseg7_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
9882 ; CHECK-LABEL: test_vsoxseg7_nxv1f16_nxv1i16:
9883 ; CHECK:       # %bb.0: # %entry
9884 ; CHECK-NEXT:    vmv1r.v v10, v8
9885 ; CHECK-NEXT:    vmv1r.v v11, v8
9886 ; CHECK-NEXT:    vmv1r.v v12, v8
9887 ; CHECK-NEXT:    vmv1r.v v13, v8
9888 ; CHECK-NEXT:    vmv1r.v v14, v8
9889 ; CHECK-NEXT:    vmv1r.v v15, v8
9890 ; CHECK-NEXT:    vmv1r.v v16, v8
9891 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9892 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
9893 ; CHECK-NEXT:    ret
9894 entry:
9895   tail call void @llvm.riscv.vsoxseg7.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
9896   ret void
9899 define void @test_vsoxseg7_mask_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9900 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1f16_nxv1i16:
9901 ; CHECK:       # %bb.0: # %entry
9902 ; CHECK-NEXT:    vmv1r.v v10, v8
9903 ; CHECK-NEXT:    vmv1r.v v11, v8
9904 ; CHECK-NEXT:    vmv1r.v v12, v8
9905 ; CHECK-NEXT:    vmv1r.v v13, v8
9906 ; CHECK-NEXT:    vmv1r.v v14, v8
9907 ; CHECK-NEXT:    vmv1r.v v15, v8
9908 ; CHECK-NEXT:    vmv1r.v v16, v8
9909 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9910 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
9911 ; CHECK-NEXT:    ret
9912 entry:
9913   tail call void @llvm.riscv.vsoxseg7.mask.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
9914   ret void
9917 declare void @llvm.riscv.vsoxseg8.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, i32)
9918 declare void @llvm.riscv.vsoxseg8.mask.nxv1f16.nxv1i8(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
9920 define void @test_vsoxseg8_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
9921 ; CHECK-LABEL: test_vsoxseg8_nxv1f16_nxv1i8:
9922 ; CHECK:       # %bb.0: # %entry
9923 ; CHECK-NEXT:    vmv1r.v v10, v8
9924 ; CHECK-NEXT:    vmv1r.v v11, v8
9925 ; CHECK-NEXT:    vmv1r.v v12, v8
9926 ; CHECK-NEXT:    vmv1r.v v13, v8
9927 ; CHECK-NEXT:    vmv1r.v v14, v8
9928 ; CHECK-NEXT:    vmv1r.v v15, v8
9929 ; CHECK-NEXT:    vmv1r.v v16, v8
9930 ; CHECK-NEXT:    vmv1r.v v17, v8
9931 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9932 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
9933 ; CHECK-NEXT:    ret
9934 entry:
9935   tail call void @llvm.riscv.vsoxseg8.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
9936   ret void
9939 define void @test_vsoxseg8_mask_nxv1f16_nxv1i8(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9940 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1f16_nxv1i8:
9941 ; CHECK:       # %bb.0: # %entry
9942 ; CHECK-NEXT:    vmv1r.v v10, v8
9943 ; CHECK-NEXT:    vmv1r.v v11, v8
9944 ; CHECK-NEXT:    vmv1r.v v12, v8
9945 ; CHECK-NEXT:    vmv1r.v v13, v8
9946 ; CHECK-NEXT:    vmv1r.v v14, v8
9947 ; CHECK-NEXT:    vmv1r.v v15, v8
9948 ; CHECK-NEXT:    vmv1r.v v16, v8
9949 ; CHECK-NEXT:    vmv1r.v v17, v8
9950 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9951 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
9952 ; CHECK-NEXT:    ret
9953 entry:
9954   tail call void @llvm.riscv.vsoxseg8.mask.nxv1f16.nxv1i8(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
9955   ret void
9958 declare void @llvm.riscv.vsoxseg8.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, i32)
9959 declare void @llvm.riscv.vsoxseg8.mask.nxv1f16.nxv1i32(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
9961 define void @test_vsoxseg8_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
9962 ; CHECK-LABEL: test_vsoxseg8_nxv1f16_nxv1i32:
9963 ; CHECK:       # %bb.0: # %entry
9964 ; CHECK-NEXT:    vmv1r.v v10, v8
9965 ; CHECK-NEXT:    vmv1r.v v11, v8
9966 ; CHECK-NEXT:    vmv1r.v v12, v8
9967 ; CHECK-NEXT:    vmv1r.v v13, v8
9968 ; CHECK-NEXT:    vmv1r.v v14, v8
9969 ; CHECK-NEXT:    vmv1r.v v15, v8
9970 ; CHECK-NEXT:    vmv1r.v v16, v8
9971 ; CHECK-NEXT:    vmv1r.v v17, v8
9972 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9973 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9
9974 ; CHECK-NEXT:    ret
9975 entry:
9976   tail call void @llvm.riscv.vsoxseg8.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
9977   ret void
9980 define void @test_vsoxseg8_mask_nxv1f16_nxv1i32(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
9981 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1f16_nxv1i32:
9982 ; CHECK:       # %bb.0: # %entry
9983 ; CHECK-NEXT:    vmv1r.v v10, v8
9984 ; CHECK-NEXT:    vmv1r.v v11, v8
9985 ; CHECK-NEXT:    vmv1r.v v12, v8
9986 ; CHECK-NEXT:    vmv1r.v v13, v8
9987 ; CHECK-NEXT:    vmv1r.v v14, v8
9988 ; CHECK-NEXT:    vmv1r.v v15, v8
9989 ; CHECK-NEXT:    vmv1r.v v16, v8
9990 ; CHECK-NEXT:    vmv1r.v v17, v8
9991 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
9992 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9, v0.t
9993 ; CHECK-NEXT:    ret
9994 entry:
9995   tail call void @llvm.riscv.vsoxseg8.mask.nxv1f16.nxv1i32(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
9996   ret void
9999 declare void @llvm.riscv.vsoxseg8.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, i32)
10000 declare void @llvm.riscv.vsoxseg8.mask.nxv1f16.nxv1i16(<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>,<vscale x 1 x half>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
10002 define void @test_vsoxseg8_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
10003 ; CHECK-LABEL: test_vsoxseg8_nxv1f16_nxv1i16:
10004 ; CHECK:       # %bb.0: # %entry
10005 ; CHECK-NEXT:    vmv1r.v v10, v8
10006 ; CHECK-NEXT:    vmv1r.v v11, v8
10007 ; CHECK-NEXT:    vmv1r.v v12, v8
10008 ; CHECK-NEXT:    vmv1r.v v13, v8
10009 ; CHECK-NEXT:    vmv1r.v v14, v8
10010 ; CHECK-NEXT:    vmv1r.v v15, v8
10011 ; CHECK-NEXT:    vmv1r.v v16, v8
10012 ; CHECK-NEXT:    vmv1r.v v17, v8
10013 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
10014 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
10015 ; CHECK-NEXT:    ret
10016 entry:
10017   tail call void @llvm.riscv.vsoxseg8.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
10018   ret void
10021 define void @test_vsoxseg8_mask_nxv1f16_nxv1i16(<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10022 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1f16_nxv1i16:
10023 ; CHECK:       # %bb.0: # %entry
10024 ; CHECK-NEXT:    vmv1r.v v10, v8
10025 ; CHECK-NEXT:    vmv1r.v v11, v8
10026 ; CHECK-NEXT:    vmv1r.v v12, v8
10027 ; CHECK-NEXT:    vmv1r.v v13, v8
10028 ; CHECK-NEXT:    vmv1r.v v14, v8
10029 ; CHECK-NEXT:    vmv1r.v v15, v8
10030 ; CHECK-NEXT:    vmv1r.v v16, v8
10031 ; CHECK-NEXT:    vmv1r.v v17, v8
10032 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
10033 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
10034 ; CHECK-NEXT:    ret
10035 entry:
10036   tail call void @llvm.riscv.vsoxseg8.mask.nxv1f16.nxv1i16(<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val,<vscale x 1 x half> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
10037   ret void
10040 declare void @llvm.riscv.vsoxseg2.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, i32)
10041 declare void @llvm.riscv.vsoxseg2.mask.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
10043 define void @test_vsoxseg2_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
10044 ; CHECK-LABEL: test_vsoxseg2_nxv1f32_nxv1i8:
10045 ; CHECK:       # %bb.0: # %entry
10046 ; CHECK-NEXT:    vmv1r.v v10, v9
10047 ; CHECK-NEXT:    vmv1r.v v9, v8
10048 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10049 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
10050 ; CHECK-NEXT:    ret
10051 entry:
10052   tail call void @llvm.riscv.vsoxseg2.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
10053   ret void
10056 define void @test_vsoxseg2_mask_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10057 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1f32_nxv1i8:
10058 ; CHECK:       # %bb.0: # %entry
10059 ; CHECK-NEXT:    vmv1r.v v10, v9
10060 ; CHECK-NEXT:    vmv1r.v v9, v8
10061 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10062 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
10063 ; CHECK-NEXT:    ret
10064 entry:
10065   tail call void @llvm.riscv.vsoxseg2.mask.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
10066   ret void
10069 declare void @llvm.riscv.vsoxseg2.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, i32)
10070 declare void @llvm.riscv.vsoxseg2.mask.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
10072 define void @test_vsoxseg2_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
10073 ; CHECK-LABEL: test_vsoxseg2_nxv1f32_nxv1i32:
10074 ; CHECK:       # %bb.0: # %entry
10075 ; CHECK-NEXT:    vmv1r.v v10, v9
10076 ; CHECK-NEXT:    vmv1r.v v9, v8
10077 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10078 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
10079 ; CHECK-NEXT:    ret
10080 entry:
10081   tail call void @llvm.riscv.vsoxseg2.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
10082   ret void
10085 define void @test_vsoxseg2_mask_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10086 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1f32_nxv1i32:
10087 ; CHECK:       # %bb.0: # %entry
10088 ; CHECK-NEXT:    vmv1r.v v10, v9
10089 ; CHECK-NEXT:    vmv1r.v v9, v8
10090 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10091 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
10092 ; CHECK-NEXT:    ret
10093 entry:
10094   tail call void @llvm.riscv.vsoxseg2.mask.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
10095   ret void
10098 declare void @llvm.riscv.vsoxseg2.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, i32)
10099 declare void @llvm.riscv.vsoxseg2.mask.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
10101 define void @test_vsoxseg2_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
10102 ; CHECK-LABEL: test_vsoxseg2_nxv1f32_nxv1i16:
10103 ; CHECK:       # %bb.0: # %entry
10104 ; CHECK-NEXT:    vmv1r.v v10, v9
10105 ; CHECK-NEXT:    vmv1r.v v9, v8
10106 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10107 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
10108 ; CHECK-NEXT:    ret
10109 entry:
10110   tail call void @llvm.riscv.vsoxseg2.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
10111   ret void
10114 define void @test_vsoxseg2_mask_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10115 ; CHECK-LABEL: test_vsoxseg2_mask_nxv1f32_nxv1i16:
10116 ; CHECK:       # %bb.0: # %entry
10117 ; CHECK-NEXT:    vmv1r.v v10, v9
10118 ; CHECK-NEXT:    vmv1r.v v9, v8
10119 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10120 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
10121 ; CHECK-NEXT:    ret
10122 entry:
10123   tail call void @llvm.riscv.vsoxseg2.mask.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
10124   ret void
10127 declare void @llvm.riscv.vsoxseg3.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, i32)
10128 declare void @llvm.riscv.vsoxseg3.mask.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
10130 define void @test_vsoxseg3_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
10131 ; CHECK-LABEL: test_vsoxseg3_nxv1f32_nxv1i8:
10132 ; CHECK:       # %bb.0: # %entry
10133 ; CHECK-NEXT:    vmv1r.v v10, v8
10134 ; CHECK-NEXT:    vmv1r.v v11, v8
10135 ; CHECK-NEXT:    vmv1r.v v12, v8
10136 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10137 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
10138 ; CHECK-NEXT:    ret
10139 entry:
10140   tail call void @llvm.riscv.vsoxseg3.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
10141   ret void
10144 define void @test_vsoxseg3_mask_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10145 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1f32_nxv1i8:
10146 ; CHECK:       # %bb.0: # %entry
10147 ; CHECK-NEXT:    vmv1r.v v10, v8
10148 ; CHECK-NEXT:    vmv1r.v v11, v8
10149 ; CHECK-NEXT:    vmv1r.v v12, v8
10150 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10151 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
10152 ; CHECK-NEXT:    ret
10153 entry:
10154   tail call void @llvm.riscv.vsoxseg3.mask.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
10155   ret void
10158 declare void @llvm.riscv.vsoxseg3.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, i32)
10159 declare void @llvm.riscv.vsoxseg3.mask.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
10161 define void @test_vsoxseg3_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
10162 ; CHECK-LABEL: test_vsoxseg3_nxv1f32_nxv1i32:
10163 ; CHECK:       # %bb.0: # %entry
10164 ; CHECK-NEXT:    vmv1r.v v10, v8
10165 ; CHECK-NEXT:    vmv1r.v v11, v8
10166 ; CHECK-NEXT:    vmv1r.v v12, v8
10167 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10168 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9
10169 ; CHECK-NEXT:    ret
10170 entry:
10171   tail call void @llvm.riscv.vsoxseg3.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
10172   ret void
10175 define void @test_vsoxseg3_mask_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10176 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1f32_nxv1i32:
10177 ; CHECK:       # %bb.0: # %entry
10178 ; CHECK-NEXT:    vmv1r.v v10, v8
10179 ; CHECK-NEXT:    vmv1r.v v11, v8
10180 ; CHECK-NEXT:    vmv1r.v v12, v8
10181 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10182 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9, v0.t
10183 ; CHECK-NEXT:    ret
10184 entry:
10185   tail call void @llvm.riscv.vsoxseg3.mask.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
10186   ret void
10189 declare void @llvm.riscv.vsoxseg3.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, i32)
10190 declare void @llvm.riscv.vsoxseg3.mask.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
10192 define void @test_vsoxseg3_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
10193 ; CHECK-LABEL: test_vsoxseg3_nxv1f32_nxv1i16:
10194 ; CHECK:       # %bb.0: # %entry
10195 ; CHECK-NEXT:    vmv1r.v v10, v8
10196 ; CHECK-NEXT:    vmv1r.v v11, v8
10197 ; CHECK-NEXT:    vmv1r.v v12, v8
10198 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10199 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
10200 ; CHECK-NEXT:    ret
10201 entry:
10202   tail call void @llvm.riscv.vsoxseg3.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
10203   ret void
10206 define void @test_vsoxseg3_mask_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10207 ; CHECK-LABEL: test_vsoxseg3_mask_nxv1f32_nxv1i16:
10208 ; CHECK:       # %bb.0: # %entry
10209 ; CHECK-NEXT:    vmv1r.v v10, v8
10210 ; CHECK-NEXT:    vmv1r.v v11, v8
10211 ; CHECK-NEXT:    vmv1r.v v12, v8
10212 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10213 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
10214 ; CHECK-NEXT:    ret
10215 entry:
10216   tail call void @llvm.riscv.vsoxseg3.mask.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
10217   ret void
10220 declare void @llvm.riscv.vsoxseg4.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, i32)
10221 declare void @llvm.riscv.vsoxseg4.mask.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
10223 define void @test_vsoxseg4_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
10224 ; CHECK-LABEL: test_vsoxseg4_nxv1f32_nxv1i8:
10225 ; CHECK:       # %bb.0: # %entry
10226 ; CHECK-NEXT:    vmv1r.v v10, v8
10227 ; CHECK-NEXT:    vmv1r.v v11, v8
10228 ; CHECK-NEXT:    vmv1r.v v12, v8
10229 ; CHECK-NEXT:    vmv1r.v v13, v8
10230 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10231 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
10232 ; CHECK-NEXT:    ret
10233 entry:
10234   tail call void @llvm.riscv.vsoxseg4.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
10235   ret void
10238 define void @test_vsoxseg4_mask_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10239 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1f32_nxv1i8:
10240 ; CHECK:       # %bb.0: # %entry
10241 ; CHECK-NEXT:    vmv1r.v v10, v8
10242 ; CHECK-NEXT:    vmv1r.v v11, v8
10243 ; CHECK-NEXT:    vmv1r.v v12, v8
10244 ; CHECK-NEXT:    vmv1r.v v13, v8
10245 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10246 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
10247 ; CHECK-NEXT:    ret
10248 entry:
10249   tail call void @llvm.riscv.vsoxseg4.mask.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
10250   ret void
10253 declare void @llvm.riscv.vsoxseg4.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, i32)
10254 declare void @llvm.riscv.vsoxseg4.mask.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
10256 define void @test_vsoxseg4_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
10257 ; CHECK-LABEL: test_vsoxseg4_nxv1f32_nxv1i32:
10258 ; CHECK:       # %bb.0: # %entry
10259 ; CHECK-NEXT:    vmv1r.v v10, v8
10260 ; CHECK-NEXT:    vmv1r.v v11, v8
10261 ; CHECK-NEXT:    vmv1r.v v12, v8
10262 ; CHECK-NEXT:    vmv1r.v v13, v8
10263 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10264 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9
10265 ; CHECK-NEXT:    ret
10266 entry:
10267   tail call void @llvm.riscv.vsoxseg4.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
10268   ret void
10271 define void @test_vsoxseg4_mask_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10272 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1f32_nxv1i32:
10273 ; CHECK:       # %bb.0: # %entry
10274 ; CHECK-NEXT:    vmv1r.v v10, v8
10275 ; CHECK-NEXT:    vmv1r.v v11, v8
10276 ; CHECK-NEXT:    vmv1r.v v12, v8
10277 ; CHECK-NEXT:    vmv1r.v v13, v8
10278 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10279 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9, v0.t
10280 ; CHECK-NEXT:    ret
10281 entry:
10282   tail call void @llvm.riscv.vsoxseg4.mask.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
10283   ret void
10286 declare void @llvm.riscv.vsoxseg4.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, i32)
10287 declare void @llvm.riscv.vsoxseg4.mask.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
10289 define void @test_vsoxseg4_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
10290 ; CHECK-LABEL: test_vsoxseg4_nxv1f32_nxv1i16:
10291 ; CHECK:       # %bb.0: # %entry
10292 ; CHECK-NEXT:    vmv1r.v v10, v8
10293 ; CHECK-NEXT:    vmv1r.v v11, v8
10294 ; CHECK-NEXT:    vmv1r.v v12, v8
10295 ; CHECK-NEXT:    vmv1r.v v13, v8
10296 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10297 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
10298 ; CHECK-NEXT:    ret
10299 entry:
10300   tail call void @llvm.riscv.vsoxseg4.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
10301   ret void
10304 define void @test_vsoxseg4_mask_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10305 ; CHECK-LABEL: test_vsoxseg4_mask_nxv1f32_nxv1i16:
10306 ; CHECK:       # %bb.0: # %entry
10307 ; CHECK-NEXT:    vmv1r.v v10, v8
10308 ; CHECK-NEXT:    vmv1r.v v11, v8
10309 ; CHECK-NEXT:    vmv1r.v v12, v8
10310 ; CHECK-NEXT:    vmv1r.v v13, v8
10311 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10312 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
10313 ; CHECK-NEXT:    ret
10314 entry:
10315   tail call void @llvm.riscv.vsoxseg4.mask.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
10316   ret void
10319 declare void @llvm.riscv.vsoxseg5.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, i32)
10320 declare void @llvm.riscv.vsoxseg5.mask.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
10322 define void @test_vsoxseg5_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
10323 ; CHECK-LABEL: test_vsoxseg5_nxv1f32_nxv1i8:
10324 ; CHECK:       # %bb.0: # %entry
10325 ; CHECK-NEXT:    vmv1r.v v10, v8
10326 ; CHECK-NEXT:    vmv1r.v v11, v8
10327 ; CHECK-NEXT:    vmv1r.v v12, v8
10328 ; CHECK-NEXT:    vmv1r.v v13, v8
10329 ; CHECK-NEXT:    vmv1r.v v14, v8
10330 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10331 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
10332 ; CHECK-NEXT:    ret
10333 entry:
10334   tail call void @llvm.riscv.vsoxseg5.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
10335   ret void
10338 define void @test_vsoxseg5_mask_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10339 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1f32_nxv1i8:
10340 ; CHECK:       # %bb.0: # %entry
10341 ; CHECK-NEXT:    vmv1r.v v10, v8
10342 ; CHECK-NEXT:    vmv1r.v v11, v8
10343 ; CHECK-NEXT:    vmv1r.v v12, v8
10344 ; CHECK-NEXT:    vmv1r.v v13, v8
10345 ; CHECK-NEXT:    vmv1r.v v14, v8
10346 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10347 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
10348 ; CHECK-NEXT:    ret
10349 entry:
10350   tail call void @llvm.riscv.vsoxseg5.mask.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
10351   ret void
10354 declare void @llvm.riscv.vsoxseg5.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, i32)
10355 declare void @llvm.riscv.vsoxseg5.mask.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
10357 define void @test_vsoxseg5_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
10358 ; CHECK-LABEL: test_vsoxseg5_nxv1f32_nxv1i32:
10359 ; CHECK:       # %bb.0: # %entry
10360 ; CHECK-NEXT:    vmv1r.v v10, v8
10361 ; CHECK-NEXT:    vmv1r.v v11, v8
10362 ; CHECK-NEXT:    vmv1r.v v12, v8
10363 ; CHECK-NEXT:    vmv1r.v v13, v8
10364 ; CHECK-NEXT:    vmv1r.v v14, v8
10365 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10366 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9
10367 ; CHECK-NEXT:    ret
10368 entry:
10369   tail call void @llvm.riscv.vsoxseg5.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
10370   ret void
10373 define void @test_vsoxseg5_mask_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10374 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1f32_nxv1i32:
10375 ; CHECK:       # %bb.0: # %entry
10376 ; CHECK-NEXT:    vmv1r.v v10, v8
10377 ; CHECK-NEXT:    vmv1r.v v11, v8
10378 ; CHECK-NEXT:    vmv1r.v v12, v8
10379 ; CHECK-NEXT:    vmv1r.v v13, v8
10380 ; CHECK-NEXT:    vmv1r.v v14, v8
10381 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10382 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9, v0.t
10383 ; CHECK-NEXT:    ret
10384 entry:
10385   tail call void @llvm.riscv.vsoxseg5.mask.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
10386   ret void
10389 declare void @llvm.riscv.vsoxseg5.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, i32)
10390 declare void @llvm.riscv.vsoxseg5.mask.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
10392 define void @test_vsoxseg5_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
10393 ; CHECK-LABEL: test_vsoxseg5_nxv1f32_nxv1i16:
10394 ; CHECK:       # %bb.0: # %entry
10395 ; CHECK-NEXT:    vmv1r.v v10, v8
10396 ; CHECK-NEXT:    vmv1r.v v11, v8
10397 ; CHECK-NEXT:    vmv1r.v v12, v8
10398 ; CHECK-NEXT:    vmv1r.v v13, v8
10399 ; CHECK-NEXT:    vmv1r.v v14, v8
10400 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10401 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
10402 ; CHECK-NEXT:    ret
10403 entry:
10404   tail call void @llvm.riscv.vsoxseg5.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
10405   ret void
10408 define void @test_vsoxseg5_mask_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10409 ; CHECK-LABEL: test_vsoxseg5_mask_nxv1f32_nxv1i16:
10410 ; CHECK:       # %bb.0: # %entry
10411 ; CHECK-NEXT:    vmv1r.v v10, v8
10412 ; CHECK-NEXT:    vmv1r.v v11, v8
10413 ; CHECK-NEXT:    vmv1r.v v12, v8
10414 ; CHECK-NEXT:    vmv1r.v v13, v8
10415 ; CHECK-NEXT:    vmv1r.v v14, v8
10416 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10417 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
10418 ; CHECK-NEXT:    ret
10419 entry:
10420   tail call void @llvm.riscv.vsoxseg5.mask.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
10421   ret void
10424 declare void @llvm.riscv.vsoxseg6.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, i32)
10425 declare void @llvm.riscv.vsoxseg6.mask.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
10427 define void @test_vsoxseg6_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
10428 ; CHECK-LABEL: test_vsoxseg6_nxv1f32_nxv1i8:
10429 ; CHECK:       # %bb.0: # %entry
10430 ; CHECK-NEXT:    vmv1r.v v10, v8
10431 ; CHECK-NEXT:    vmv1r.v v11, v8
10432 ; CHECK-NEXT:    vmv1r.v v12, v8
10433 ; CHECK-NEXT:    vmv1r.v v13, v8
10434 ; CHECK-NEXT:    vmv1r.v v14, v8
10435 ; CHECK-NEXT:    vmv1r.v v15, v8
10436 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10437 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
10438 ; CHECK-NEXT:    ret
10439 entry:
10440   tail call void @llvm.riscv.vsoxseg6.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
10441   ret void
10444 define void @test_vsoxseg6_mask_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10445 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1f32_nxv1i8:
10446 ; CHECK:       # %bb.0: # %entry
10447 ; CHECK-NEXT:    vmv1r.v v10, v8
10448 ; CHECK-NEXT:    vmv1r.v v11, v8
10449 ; CHECK-NEXT:    vmv1r.v v12, v8
10450 ; CHECK-NEXT:    vmv1r.v v13, v8
10451 ; CHECK-NEXT:    vmv1r.v v14, v8
10452 ; CHECK-NEXT:    vmv1r.v v15, v8
10453 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10454 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
10455 ; CHECK-NEXT:    ret
10456 entry:
10457   tail call void @llvm.riscv.vsoxseg6.mask.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
10458   ret void
10461 declare void @llvm.riscv.vsoxseg6.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, i32)
10462 declare void @llvm.riscv.vsoxseg6.mask.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
10464 define void @test_vsoxseg6_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
10465 ; CHECK-LABEL: test_vsoxseg6_nxv1f32_nxv1i32:
10466 ; CHECK:       # %bb.0: # %entry
10467 ; CHECK-NEXT:    vmv1r.v v10, v8
10468 ; CHECK-NEXT:    vmv1r.v v11, v8
10469 ; CHECK-NEXT:    vmv1r.v v12, v8
10470 ; CHECK-NEXT:    vmv1r.v v13, v8
10471 ; CHECK-NEXT:    vmv1r.v v14, v8
10472 ; CHECK-NEXT:    vmv1r.v v15, v8
10473 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10474 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9
10475 ; CHECK-NEXT:    ret
10476 entry:
10477   tail call void @llvm.riscv.vsoxseg6.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
10478   ret void
10481 define void @test_vsoxseg6_mask_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10482 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1f32_nxv1i32:
10483 ; CHECK:       # %bb.0: # %entry
10484 ; CHECK-NEXT:    vmv1r.v v10, v8
10485 ; CHECK-NEXT:    vmv1r.v v11, v8
10486 ; CHECK-NEXT:    vmv1r.v v12, v8
10487 ; CHECK-NEXT:    vmv1r.v v13, v8
10488 ; CHECK-NEXT:    vmv1r.v v14, v8
10489 ; CHECK-NEXT:    vmv1r.v v15, v8
10490 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10491 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9, v0.t
10492 ; CHECK-NEXT:    ret
10493 entry:
10494   tail call void @llvm.riscv.vsoxseg6.mask.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
10495   ret void
10498 declare void @llvm.riscv.vsoxseg6.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, i32)
10499 declare void @llvm.riscv.vsoxseg6.mask.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
10501 define void @test_vsoxseg6_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
10502 ; CHECK-LABEL: test_vsoxseg6_nxv1f32_nxv1i16:
10503 ; CHECK:       # %bb.0: # %entry
10504 ; CHECK-NEXT:    vmv1r.v v10, v8
10505 ; CHECK-NEXT:    vmv1r.v v11, v8
10506 ; CHECK-NEXT:    vmv1r.v v12, v8
10507 ; CHECK-NEXT:    vmv1r.v v13, v8
10508 ; CHECK-NEXT:    vmv1r.v v14, v8
10509 ; CHECK-NEXT:    vmv1r.v v15, v8
10510 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10511 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
10512 ; CHECK-NEXT:    ret
10513 entry:
10514   tail call void @llvm.riscv.vsoxseg6.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
10515   ret void
10518 define void @test_vsoxseg6_mask_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10519 ; CHECK-LABEL: test_vsoxseg6_mask_nxv1f32_nxv1i16:
10520 ; CHECK:       # %bb.0: # %entry
10521 ; CHECK-NEXT:    vmv1r.v v10, v8
10522 ; CHECK-NEXT:    vmv1r.v v11, v8
10523 ; CHECK-NEXT:    vmv1r.v v12, v8
10524 ; CHECK-NEXT:    vmv1r.v v13, v8
10525 ; CHECK-NEXT:    vmv1r.v v14, v8
10526 ; CHECK-NEXT:    vmv1r.v v15, v8
10527 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10528 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
10529 ; CHECK-NEXT:    ret
10530 entry:
10531   tail call void @llvm.riscv.vsoxseg6.mask.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
10532   ret void
10535 declare void @llvm.riscv.vsoxseg7.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, i32)
10536 declare void @llvm.riscv.vsoxseg7.mask.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
10538 define void @test_vsoxseg7_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
10539 ; CHECK-LABEL: test_vsoxseg7_nxv1f32_nxv1i8:
10540 ; CHECK:       # %bb.0: # %entry
10541 ; CHECK-NEXT:    vmv1r.v v10, v8
10542 ; CHECK-NEXT:    vmv1r.v v11, v8
10543 ; CHECK-NEXT:    vmv1r.v v12, v8
10544 ; CHECK-NEXT:    vmv1r.v v13, v8
10545 ; CHECK-NEXT:    vmv1r.v v14, v8
10546 ; CHECK-NEXT:    vmv1r.v v15, v8
10547 ; CHECK-NEXT:    vmv1r.v v16, v8
10548 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10549 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
10550 ; CHECK-NEXT:    ret
10551 entry:
10552   tail call void @llvm.riscv.vsoxseg7.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
10553   ret void
10556 define void @test_vsoxseg7_mask_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10557 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1f32_nxv1i8:
10558 ; CHECK:       # %bb.0: # %entry
10559 ; CHECK-NEXT:    vmv1r.v v10, v8
10560 ; CHECK-NEXT:    vmv1r.v v11, v8
10561 ; CHECK-NEXT:    vmv1r.v v12, v8
10562 ; CHECK-NEXT:    vmv1r.v v13, v8
10563 ; CHECK-NEXT:    vmv1r.v v14, v8
10564 ; CHECK-NEXT:    vmv1r.v v15, v8
10565 ; CHECK-NEXT:    vmv1r.v v16, v8
10566 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10567 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
10568 ; CHECK-NEXT:    ret
10569 entry:
10570   tail call void @llvm.riscv.vsoxseg7.mask.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
10571   ret void
10574 declare void @llvm.riscv.vsoxseg7.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, i32)
10575 declare void @llvm.riscv.vsoxseg7.mask.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
10577 define void @test_vsoxseg7_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
10578 ; CHECK-LABEL: test_vsoxseg7_nxv1f32_nxv1i32:
10579 ; CHECK:       # %bb.0: # %entry
10580 ; CHECK-NEXT:    vmv1r.v v10, v8
10581 ; CHECK-NEXT:    vmv1r.v v11, v8
10582 ; CHECK-NEXT:    vmv1r.v v12, v8
10583 ; CHECK-NEXT:    vmv1r.v v13, v8
10584 ; CHECK-NEXT:    vmv1r.v v14, v8
10585 ; CHECK-NEXT:    vmv1r.v v15, v8
10586 ; CHECK-NEXT:    vmv1r.v v16, v8
10587 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10588 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9
10589 ; CHECK-NEXT:    ret
10590 entry:
10591   tail call void @llvm.riscv.vsoxseg7.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
10592   ret void
10595 define void @test_vsoxseg7_mask_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10596 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1f32_nxv1i32:
10597 ; CHECK:       # %bb.0: # %entry
10598 ; CHECK-NEXT:    vmv1r.v v10, v8
10599 ; CHECK-NEXT:    vmv1r.v v11, v8
10600 ; CHECK-NEXT:    vmv1r.v v12, v8
10601 ; CHECK-NEXT:    vmv1r.v v13, v8
10602 ; CHECK-NEXT:    vmv1r.v v14, v8
10603 ; CHECK-NEXT:    vmv1r.v v15, v8
10604 ; CHECK-NEXT:    vmv1r.v v16, v8
10605 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10606 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9, v0.t
10607 ; CHECK-NEXT:    ret
10608 entry:
10609   tail call void @llvm.riscv.vsoxseg7.mask.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
10610   ret void
10613 declare void @llvm.riscv.vsoxseg7.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, i32)
10614 declare void @llvm.riscv.vsoxseg7.mask.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
10616 define void @test_vsoxseg7_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
10617 ; CHECK-LABEL: test_vsoxseg7_nxv1f32_nxv1i16:
10618 ; CHECK:       # %bb.0: # %entry
10619 ; CHECK-NEXT:    vmv1r.v v10, v8
10620 ; CHECK-NEXT:    vmv1r.v v11, v8
10621 ; CHECK-NEXT:    vmv1r.v v12, v8
10622 ; CHECK-NEXT:    vmv1r.v v13, v8
10623 ; CHECK-NEXT:    vmv1r.v v14, v8
10624 ; CHECK-NEXT:    vmv1r.v v15, v8
10625 ; CHECK-NEXT:    vmv1r.v v16, v8
10626 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10627 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
10628 ; CHECK-NEXT:    ret
10629 entry:
10630   tail call void @llvm.riscv.vsoxseg7.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
10631   ret void
10634 define void @test_vsoxseg7_mask_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10635 ; CHECK-LABEL: test_vsoxseg7_mask_nxv1f32_nxv1i16:
10636 ; CHECK:       # %bb.0: # %entry
10637 ; CHECK-NEXT:    vmv1r.v v10, v8
10638 ; CHECK-NEXT:    vmv1r.v v11, v8
10639 ; CHECK-NEXT:    vmv1r.v v12, v8
10640 ; CHECK-NEXT:    vmv1r.v v13, v8
10641 ; CHECK-NEXT:    vmv1r.v v14, v8
10642 ; CHECK-NEXT:    vmv1r.v v15, v8
10643 ; CHECK-NEXT:    vmv1r.v v16, v8
10644 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10645 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
10646 ; CHECK-NEXT:    ret
10647 entry:
10648   tail call void @llvm.riscv.vsoxseg7.mask.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
10649   ret void
10652 declare void @llvm.riscv.vsoxseg8.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, i32)
10653 declare void @llvm.riscv.vsoxseg8.mask.nxv1f32.nxv1i8(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
10655 define void @test_vsoxseg8_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl) {
10656 ; CHECK-LABEL: test_vsoxseg8_nxv1f32_nxv1i8:
10657 ; CHECK:       # %bb.0: # %entry
10658 ; CHECK-NEXT:    vmv1r.v v10, v8
10659 ; CHECK-NEXT:    vmv1r.v v11, v8
10660 ; CHECK-NEXT:    vmv1r.v v12, v8
10661 ; CHECK-NEXT:    vmv1r.v v13, v8
10662 ; CHECK-NEXT:    vmv1r.v v14, v8
10663 ; CHECK-NEXT:    vmv1r.v v15, v8
10664 ; CHECK-NEXT:    vmv1r.v v16, v8
10665 ; CHECK-NEXT:    vmv1r.v v17, v8
10666 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10667 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
10668 ; CHECK-NEXT:    ret
10669 entry:
10670   tail call void @llvm.riscv.vsoxseg8.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, i32 %vl)
10671   ret void
10674 define void @test_vsoxseg8_mask_nxv1f32_nxv1i8(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10675 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1f32_nxv1i8:
10676 ; CHECK:       # %bb.0: # %entry
10677 ; CHECK-NEXT:    vmv1r.v v10, v8
10678 ; CHECK-NEXT:    vmv1r.v v11, v8
10679 ; CHECK-NEXT:    vmv1r.v v12, v8
10680 ; CHECK-NEXT:    vmv1r.v v13, v8
10681 ; CHECK-NEXT:    vmv1r.v v14, v8
10682 ; CHECK-NEXT:    vmv1r.v v15, v8
10683 ; CHECK-NEXT:    vmv1r.v v16, v8
10684 ; CHECK-NEXT:    vmv1r.v v17, v8
10685 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10686 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
10687 ; CHECK-NEXT:    ret
10688 entry:
10689   tail call void @llvm.riscv.vsoxseg8.mask.nxv1f32.nxv1i8(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i8> %index, <vscale x 1 x i1> %mask, i32 %vl)
10690   ret void
10693 declare void @llvm.riscv.vsoxseg8.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, i32)
10694 declare void @llvm.riscv.vsoxseg8.mask.nxv1f32.nxv1i32(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
10696 define void @test_vsoxseg8_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl) {
10697 ; CHECK-LABEL: test_vsoxseg8_nxv1f32_nxv1i32:
10698 ; CHECK:       # %bb.0: # %entry
10699 ; CHECK-NEXT:    vmv1r.v v10, v8
10700 ; CHECK-NEXT:    vmv1r.v v11, v8
10701 ; CHECK-NEXT:    vmv1r.v v12, v8
10702 ; CHECK-NEXT:    vmv1r.v v13, v8
10703 ; CHECK-NEXT:    vmv1r.v v14, v8
10704 ; CHECK-NEXT:    vmv1r.v v15, v8
10705 ; CHECK-NEXT:    vmv1r.v v16, v8
10706 ; CHECK-NEXT:    vmv1r.v v17, v8
10707 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10708 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9
10709 ; CHECK-NEXT:    ret
10710 entry:
10711   tail call void @llvm.riscv.vsoxseg8.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, i32 %vl)
10712   ret void
10715 define void @test_vsoxseg8_mask_nxv1f32_nxv1i32(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10716 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1f32_nxv1i32:
10717 ; CHECK:       # %bb.0: # %entry
10718 ; CHECK-NEXT:    vmv1r.v v10, v8
10719 ; CHECK-NEXT:    vmv1r.v v11, v8
10720 ; CHECK-NEXT:    vmv1r.v v12, v8
10721 ; CHECK-NEXT:    vmv1r.v v13, v8
10722 ; CHECK-NEXT:    vmv1r.v v14, v8
10723 ; CHECK-NEXT:    vmv1r.v v15, v8
10724 ; CHECK-NEXT:    vmv1r.v v16, v8
10725 ; CHECK-NEXT:    vmv1r.v v17, v8
10726 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10727 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9, v0.t
10728 ; CHECK-NEXT:    ret
10729 entry:
10730   tail call void @llvm.riscv.vsoxseg8.mask.nxv1f32.nxv1i32(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i32> %index, <vscale x 1 x i1> %mask, i32 %vl)
10731   ret void
10734 declare void @llvm.riscv.vsoxseg8.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, i32)
10735 declare void @llvm.riscv.vsoxseg8.mask.nxv1f32.nxv1i16(<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>,<vscale x 1 x float>, ptr, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
10737 define void @test_vsoxseg8_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl) {
10738 ; CHECK-LABEL: test_vsoxseg8_nxv1f32_nxv1i16:
10739 ; CHECK:       # %bb.0: # %entry
10740 ; CHECK-NEXT:    vmv1r.v v10, v8
10741 ; CHECK-NEXT:    vmv1r.v v11, v8
10742 ; CHECK-NEXT:    vmv1r.v v12, v8
10743 ; CHECK-NEXT:    vmv1r.v v13, v8
10744 ; CHECK-NEXT:    vmv1r.v v14, v8
10745 ; CHECK-NEXT:    vmv1r.v v15, v8
10746 ; CHECK-NEXT:    vmv1r.v v16, v8
10747 ; CHECK-NEXT:    vmv1r.v v17, v8
10748 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10749 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
10750 ; CHECK-NEXT:    ret
10751 entry:
10752   tail call void @llvm.riscv.vsoxseg8.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, i32 %vl)
10753   ret void
10756 define void @test_vsoxseg8_mask_nxv1f32_nxv1i16(<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl) {
10757 ; CHECK-LABEL: test_vsoxseg8_mask_nxv1f32_nxv1i16:
10758 ; CHECK:       # %bb.0: # %entry
10759 ; CHECK-NEXT:    vmv1r.v v10, v8
10760 ; CHECK-NEXT:    vmv1r.v v11, v8
10761 ; CHECK-NEXT:    vmv1r.v v12, v8
10762 ; CHECK-NEXT:    vmv1r.v v13, v8
10763 ; CHECK-NEXT:    vmv1r.v v14, v8
10764 ; CHECK-NEXT:    vmv1r.v v15, v8
10765 ; CHECK-NEXT:    vmv1r.v v16, v8
10766 ; CHECK-NEXT:    vmv1r.v v17, v8
10767 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
10768 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
10769 ; CHECK-NEXT:    ret
10770 entry:
10771   tail call void @llvm.riscv.vsoxseg8.mask.nxv1f32.nxv1i16(<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val,<vscale x 1 x float> %val, ptr %base, <vscale x 1 x i16> %index, <vscale x 1 x i1> %mask, i32 %vl)
10772   ret void
10775 declare void @llvm.riscv.vsoxseg2.nxv8f16.nxv8i16(<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i16>, i32)
10776 declare void @llvm.riscv.vsoxseg2.mask.nxv8f16.nxv8i16(<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
10778 define void @test_vsoxseg2_nxv8f16_nxv8i16(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
10779 ; CHECK-LABEL: test_vsoxseg2_nxv8f16_nxv8i16:
10780 ; CHECK:       # %bb.0: # %entry
10781 ; CHECK-NEXT:    vmv2r.v v12, v10
10782 ; CHECK-NEXT:    vmv2r.v v10, v8
10783 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10784 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v12
10785 ; CHECK-NEXT:    ret
10786 entry:
10787   tail call void @llvm.riscv.vsoxseg2.nxv8f16.nxv8i16(<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
10788   ret void
10791 define void @test_vsoxseg2_mask_nxv8f16_nxv8i16(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
10792 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8f16_nxv8i16:
10793 ; CHECK:       # %bb.0: # %entry
10794 ; CHECK-NEXT:    vmv2r.v v12, v10
10795 ; CHECK-NEXT:    vmv2r.v v10, v8
10796 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10797 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v12, v0.t
10798 ; CHECK-NEXT:    ret
10799 entry:
10800   tail call void @llvm.riscv.vsoxseg2.mask.nxv8f16.nxv8i16(<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
10801   ret void
10804 declare void @llvm.riscv.vsoxseg2.nxv8f16.nxv8i8(<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i8>, i32)
10805 declare void @llvm.riscv.vsoxseg2.mask.nxv8f16.nxv8i8(<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
10807 define void @test_vsoxseg2_nxv8f16_nxv8i8(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
10808 ; CHECK-LABEL: test_vsoxseg2_nxv8f16_nxv8i8:
10809 ; CHECK:       # %bb.0: # %entry
10810 ; CHECK-NEXT:    vmv1r.v v12, v10
10811 ; CHECK-NEXT:    vmv2r.v v10, v8
10812 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10813 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v12
10814 ; CHECK-NEXT:    ret
10815 entry:
10816   tail call void @llvm.riscv.vsoxseg2.nxv8f16.nxv8i8(<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
10817   ret void
10820 define void @test_vsoxseg2_mask_nxv8f16_nxv8i8(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
10821 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8f16_nxv8i8:
10822 ; CHECK:       # %bb.0: # %entry
10823 ; CHECK-NEXT:    vmv1r.v v12, v10
10824 ; CHECK-NEXT:    vmv2r.v v10, v8
10825 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10826 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v12, v0.t
10827 ; CHECK-NEXT:    ret
10828 entry:
10829   tail call void @llvm.riscv.vsoxseg2.mask.nxv8f16.nxv8i8(<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
10830   ret void
10833 declare void @llvm.riscv.vsoxseg2.nxv8f16.nxv8i32(<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i32>, i32)
10834 declare void @llvm.riscv.vsoxseg2.mask.nxv8f16.nxv8i32(<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
10836 define void @test_vsoxseg2_nxv8f16_nxv8i32(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
10837 ; CHECK-LABEL: test_vsoxseg2_nxv8f16_nxv8i32:
10838 ; CHECK:       # %bb.0: # %entry
10839 ; CHECK-NEXT:    vmv2r.v v10, v8
10840 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10841 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v12
10842 ; CHECK-NEXT:    ret
10843 entry:
10844   tail call void @llvm.riscv.vsoxseg2.nxv8f16.nxv8i32(<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
10845   ret void
10848 define void @test_vsoxseg2_mask_nxv8f16_nxv8i32(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
10849 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8f16_nxv8i32:
10850 ; CHECK:       # %bb.0: # %entry
10851 ; CHECK-NEXT:    vmv2r.v v10, v8
10852 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10853 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v12, v0.t
10854 ; CHECK-NEXT:    ret
10855 entry:
10856   tail call void @llvm.riscv.vsoxseg2.mask.nxv8f16.nxv8i32(<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
10857   ret void
10860 declare void @llvm.riscv.vsoxseg3.nxv8f16.nxv8i16(<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i16>, i32)
10861 declare void @llvm.riscv.vsoxseg3.mask.nxv8f16.nxv8i16(<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
10863 define void @test_vsoxseg3_nxv8f16_nxv8i16(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
10864 ; CHECK-LABEL: test_vsoxseg3_nxv8f16_nxv8i16:
10865 ; CHECK:       # %bb.0: # %entry
10866 ; CHECK-NEXT:    vmv2r.v v12, v8
10867 ; CHECK-NEXT:    vmv2r.v v14, v8
10868 ; CHECK-NEXT:    vmv2r.v v16, v8
10869 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10870 ; CHECK-NEXT:    vsoxseg3ei16.v v12, (a0), v10
10871 ; CHECK-NEXT:    ret
10872 entry:
10873   tail call void @llvm.riscv.vsoxseg3.nxv8f16.nxv8i16(<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
10874   ret void
10877 define void @test_vsoxseg3_mask_nxv8f16_nxv8i16(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
10878 ; CHECK-LABEL: test_vsoxseg3_mask_nxv8f16_nxv8i16:
10879 ; CHECK:       # %bb.0: # %entry
10880 ; CHECK-NEXT:    vmv2r.v v12, v8
10881 ; CHECK-NEXT:    vmv2r.v v14, v8
10882 ; CHECK-NEXT:    vmv2r.v v16, v8
10883 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10884 ; CHECK-NEXT:    vsoxseg3ei16.v v12, (a0), v10, v0.t
10885 ; CHECK-NEXT:    ret
10886 entry:
10887   tail call void @llvm.riscv.vsoxseg3.mask.nxv8f16.nxv8i16(<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
10888   ret void
10891 declare void @llvm.riscv.vsoxseg3.nxv8f16.nxv8i8(<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i8>, i32)
10892 declare void @llvm.riscv.vsoxseg3.mask.nxv8f16.nxv8i8(<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
10894 define void @test_vsoxseg3_nxv8f16_nxv8i8(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
10895 ; CHECK-LABEL: test_vsoxseg3_nxv8f16_nxv8i8:
10896 ; CHECK:       # %bb.0: # %entry
10897 ; CHECK-NEXT:    vmv2r.v v12, v8
10898 ; CHECK-NEXT:    vmv2r.v v14, v8
10899 ; CHECK-NEXT:    vmv2r.v v16, v8
10900 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10901 ; CHECK-NEXT:    vsoxseg3ei8.v v12, (a0), v10
10902 ; CHECK-NEXT:    ret
10903 entry:
10904   tail call void @llvm.riscv.vsoxseg3.nxv8f16.nxv8i8(<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
10905   ret void
10908 define void @test_vsoxseg3_mask_nxv8f16_nxv8i8(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
10909 ; CHECK-LABEL: test_vsoxseg3_mask_nxv8f16_nxv8i8:
10910 ; CHECK:       # %bb.0: # %entry
10911 ; CHECK-NEXT:    vmv2r.v v12, v8
10912 ; CHECK-NEXT:    vmv2r.v v14, v8
10913 ; CHECK-NEXT:    vmv2r.v v16, v8
10914 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10915 ; CHECK-NEXT:    vsoxseg3ei8.v v12, (a0), v10, v0.t
10916 ; CHECK-NEXT:    ret
10917 entry:
10918   tail call void @llvm.riscv.vsoxseg3.mask.nxv8f16.nxv8i8(<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
10919   ret void
10922 declare void @llvm.riscv.vsoxseg3.nxv8f16.nxv8i32(<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i32>, i32)
10923 declare void @llvm.riscv.vsoxseg3.mask.nxv8f16.nxv8i32(<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
10925 define void @test_vsoxseg3_nxv8f16_nxv8i32(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
10926 ; CHECK-LABEL: test_vsoxseg3_nxv8f16_nxv8i32:
10927 ; CHECK:       # %bb.0: # %entry
10928 ; CHECK-NEXT:    vmv2r.v v10, v8
10929 ; CHECK-NEXT:    vmv4r.v v16, v12
10930 ; CHECK-NEXT:    vmv2r.v v12, v8
10931 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10932 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v16
10933 ; CHECK-NEXT:    ret
10934 entry:
10935   tail call void @llvm.riscv.vsoxseg3.nxv8f16.nxv8i32(<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
10936   ret void
10939 define void @test_vsoxseg3_mask_nxv8f16_nxv8i32(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
10940 ; CHECK-LABEL: test_vsoxseg3_mask_nxv8f16_nxv8i32:
10941 ; CHECK:       # %bb.0: # %entry
10942 ; CHECK-NEXT:    vmv2r.v v10, v8
10943 ; CHECK-NEXT:    vmv4r.v v16, v12
10944 ; CHECK-NEXT:    vmv2r.v v12, v8
10945 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10946 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v16, v0.t
10947 ; CHECK-NEXT:    ret
10948 entry:
10949   tail call void @llvm.riscv.vsoxseg3.mask.nxv8f16.nxv8i32(<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
10950   ret void
10953 declare void @llvm.riscv.vsoxseg4.nxv8f16.nxv8i16(<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i16>, i32)
10954 declare void @llvm.riscv.vsoxseg4.mask.nxv8f16.nxv8i16(<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
10956 define void @test_vsoxseg4_nxv8f16_nxv8i16(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
10957 ; CHECK-LABEL: test_vsoxseg4_nxv8f16_nxv8i16:
10958 ; CHECK:       # %bb.0: # %entry
10959 ; CHECK-NEXT:    vmv2r.v v12, v8
10960 ; CHECK-NEXT:    vmv2r.v v14, v8
10961 ; CHECK-NEXT:    vmv2r.v v16, v8
10962 ; CHECK-NEXT:    vmv2r.v v18, v8
10963 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10964 ; CHECK-NEXT:    vsoxseg4ei16.v v12, (a0), v10
10965 ; CHECK-NEXT:    ret
10966 entry:
10967   tail call void @llvm.riscv.vsoxseg4.nxv8f16.nxv8i16(<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
10968   ret void
10971 define void @test_vsoxseg4_mask_nxv8f16_nxv8i16(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
10972 ; CHECK-LABEL: test_vsoxseg4_mask_nxv8f16_nxv8i16:
10973 ; CHECK:       # %bb.0: # %entry
10974 ; CHECK-NEXT:    vmv2r.v v12, v8
10975 ; CHECK-NEXT:    vmv2r.v v14, v8
10976 ; CHECK-NEXT:    vmv2r.v v16, v8
10977 ; CHECK-NEXT:    vmv2r.v v18, v8
10978 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10979 ; CHECK-NEXT:    vsoxseg4ei16.v v12, (a0), v10, v0.t
10980 ; CHECK-NEXT:    ret
10981 entry:
10982   tail call void @llvm.riscv.vsoxseg4.mask.nxv8f16.nxv8i16(<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
10983   ret void
10986 declare void @llvm.riscv.vsoxseg4.nxv8f16.nxv8i8(<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i8>, i32)
10987 declare void @llvm.riscv.vsoxseg4.mask.nxv8f16.nxv8i8(<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
10989 define void @test_vsoxseg4_nxv8f16_nxv8i8(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
10990 ; CHECK-LABEL: test_vsoxseg4_nxv8f16_nxv8i8:
10991 ; CHECK:       # %bb.0: # %entry
10992 ; CHECK-NEXT:    vmv2r.v v12, v8
10993 ; CHECK-NEXT:    vmv2r.v v14, v8
10994 ; CHECK-NEXT:    vmv2r.v v16, v8
10995 ; CHECK-NEXT:    vmv2r.v v18, v8
10996 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
10997 ; CHECK-NEXT:    vsoxseg4ei8.v v12, (a0), v10
10998 ; CHECK-NEXT:    ret
10999 entry:
11000   tail call void @llvm.riscv.vsoxseg4.nxv8f16.nxv8i8(<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
11001   ret void
11004 define void @test_vsoxseg4_mask_nxv8f16_nxv8i8(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
11005 ; CHECK-LABEL: test_vsoxseg4_mask_nxv8f16_nxv8i8:
11006 ; CHECK:       # %bb.0: # %entry
11007 ; CHECK-NEXT:    vmv2r.v v12, v8
11008 ; CHECK-NEXT:    vmv2r.v v14, v8
11009 ; CHECK-NEXT:    vmv2r.v v16, v8
11010 ; CHECK-NEXT:    vmv2r.v v18, v8
11011 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
11012 ; CHECK-NEXT:    vsoxseg4ei8.v v12, (a0), v10, v0.t
11013 ; CHECK-NEXT:    ret
11014 entry:
11015   tail call void @llvm.riscv.vsoxseg4.mask.nxv8f16.nxv8i8(<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
11016   ret void
11019 declare void @llvm.riscv.vsoxseg4.nxv8f16.nxv8i32(<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i32>, i32)
11020 declare void @llvm.riscv.vsoxseg4.mask.nxv8f16.nxv8i32(<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>,<vscale x 8 x half>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
11022 define void @test_vsoxseg4_nxv8f16_nxv8i32(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
11023 ; CHECK-LABEL: test_vsoxseg4_nxv8f16_nxv8i32:
11024 ; CHECK:       # %bb.0: # %entry
11025 ; CHECK-NEXT:    vmv2r.v v16, v8
11026 ; CHECK-NEXT:    vmv2r.v v18, v8
11027 ; CHECK-NEXT:    vmv2r.v v20, v8
11028 ; CHECK-NEXT:    vmv2r.v v22, v8
11029 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
11030 ; CHECK-NEXT:    vsoxseg4ei32.v v16, (a0), v12
11031 ; CHECK-NEXT:    ret
11032 entry:
11033   tail call void @llvm.riscv.vsoxseg4.nxv8f16.nxv8i32(<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
11034   ret void
11037 define void @test_vsoxseg4_mask_nxv8f16_nxv8i32(<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
11038 ; CHECK-LABEL: test_vsoxseg4_mask_nxv8f16_nxv8i32:
11039 ; CHECK:       # %bb.0: # %entry
11040 ; CHECK-NEXT:    vmv2r.v v16, v8
11041 ; CHECK-NEXT:    vmv2r.v v18, v8
11042 ; CHECK-NEXT:    vmv2r.v v20, v8
11043 ; CHECK-NEXT:    vmv2r.v v22, v8
11044 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
11045 ; CHECK-NEXT:    vsoxseg4ei32.v v16, (a0), v12, v0.t
11046 ; CHECK-NEXT:    ret
11047 entry:
11048   tail call void @llvm.riscv.vsoxseg4.mask.nxv8f16.nxv8i32(<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val,<vscale x 8 x half> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
11049   ret void
11052 declare void @llvm.riscv.vsoxseg2.nxv8f32.nxv8i16(<vscale x 8 x float>,<vscale x 8 x float>, ptr, <vscale x 8 x i16>, i32)
11053 declare void @llvm.riscv.vsoxseg2.mask.nxv8f32.nxv8i16(<vscale x 8 x float>,<vscale x 8 x float>, ptr, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
11055 define void @test_vsoxseg2_nxv8f32_nxv8i16(<vscale x 8 x float> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl) {
11056 ; CHECK-LABEL: test_vsoxseg2_nxv8f32_nxv8i16:
11057 ; CHECK:       # %bb.0: # %entry
11058 ; CHECK-NEXT:    vmv2r.v v16, v12
11059 ; CHECK-NEXT:    vmv4r.v v12, v8
11060 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
11061 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v16
11062 ; CHECK-NEXT:    ret
11063 entry:
11064   tail call void @llvm.riscv.vsoxseg2.nxv8f32.nxv8i16(<vscale x 8 x float> %val,<vscale x 8 x float> %val, ptr %base, <vscale x 8 x i16> %index, i32 %vl)
11065   ret void
11068 define void @test_vsoxseg2_mask_nxv8f32_nxv8i16(<vscale x 8 x float> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl) {
11069 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8f32_nxv8i16:
11070 ; CHECK:       # %bb.0: # %entry
11071 ; CHECK-NEXT:    vmv2r.v v16, v12
11072 ; CHECK-NEXT:    vmv4r.v v12, v8
11073 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
11074 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v16, v0.t
11075 ; CHECK-NEXT:    ret
11076 entry:
11077   tail call void @llvm.riscv.vsoxseg2.mask.nxv8f32.nxv8i16(<vscale x 8 x float> %val,<vscale x 8 x float> %val, ptr %base, <vscale x 8 x i16> %index, <vscale x 8 x i1> %mask, i32 %vl)
11078   ret void
11081 declare void @llvm.riscv.vsoxseg2.nxv8f32.nxv8i8(<vscale x 8 x float>,<vscale x 8 x float>, ptr, <vscale x 8 x i8>, i32)
11082 declare void @llvm.riscv.vsoxseg2.mask.nxv8f32.nxv8i8(<vscale x 8 x float>,<vscale x 8 x float>, ptr, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
11084 define void @test_vsoxseg2_nxv8f32_nxv8i8(<vscale x 8 x float> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl) {
11085 ; CHECK-LABEL: test_vsoxseg2_nxv8f32_nxv8i8:
11086 ; CHECK:       # %bb.0: # %entry
11087 ; CHECK-NEXT:    vmv1r.v v16, v12
11088 ; CHECK-NEXT:    vmv4r.v v12, v8
11089 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
11090 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v16
11091 ; CHECK-NEXT:    ret
11092 entry:
11093   tail call void @llvm.riscv.vsoxseg2.nxv8f32.nxv8i8(<vscale x 8 x float> %val,<vscale x 8 x float> %val, ptr %base, <vscale x 8 x i8> %index, i32 %vl)
11094   ret void
11097 define void @test_vsoxseg2_mask_nxv8f32_nxv8i8(<vscale x 8 x float> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl) {
11098 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8f32_nxv8i8:
11099 ; CHECK:       # %bb.0: # %entry
11100 ; CHECK-NEXT:    vmv1r.v v16, v12
11101 ; CHECK-NEXT:    vmv4r.v v12, v8
11102 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
11103 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v16, v0.t
11104 ; CHECK-NEXT:    ret
11105 entry:
11106   tail call void @llvm.riscv.vsoxseg2.mask.nxv8f32.nxv8i8(<vscale x 8 x float> %val,<vscale x 8 x float> %val, ptr %base, <vscale x 8 x i8> %index, <vscale x 8 x i1> %mask, i32 %vl)
11107   ret void
11110 declare void @llvm.riscv.vsoxseg2.nxv8f32.nxv8i32(<vscale x 8 x float>,<vscale x 8 x float>, ptr, <vscale x 8 x i32>, i32)
11111 declare void @llvm.riscv.vsoxseg2.mask.nxv8f32.nxv8i32(<vscale x 8 x float>,<vscale x 8 x float>, ptr, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
11113 define void @test_vsoxseg2_nxv8f32_nxv8i32(<vscale x 8 x float> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl) {
11114 ; CHECK-LABEL: test_vsoxseg2_nxv8f32_nxv8i32:
11115 ; CHECK:       # %bb.0: # %entry
11116 ; CHECK-NEXT:    vmv4r.v v16, v12
11117 ; CHECK-NEXT:    vmv4r.v v12, v8
11118 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
11119 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v16
11120 ; CHECK-NEXT:    ret
11121 entry:
11122   tail call void @llvm.riscv.vsoxseg2.nxv8f32.nxv8i32(<vscale x 8 x float> %val,<vscale x 8 x float> %val, ptr %base, <vscale x 8 x i32> %index, i32 %vl)
11123   ret void
11126 define void @test_vsoxseg2_mask_nxv8f32_nxv8i32(<vscale x 8 x float> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl) {
11127 ; CHECK-LABEL: test_vsoxseg2_mask_nxv8f32_nxv8i32:
11128 ; CHECK:       # %bb.0: # %entry
11129 ; CHECK-NEXT:    vmv4r.v v16, v12
11130 ; CHECK-NEXT:    vmv4r.v v12, v8
11131 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
11132 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v16, v0.t
11133 ; CHECK-NEXT:    ret
11134 entry:
11135   tail call void @llvm.riscv.vsoxseg2.mask.nxv8f32.nxv8i32(<vscale x 8 x float> %val,<vscale x 8 x float> %val, ptr %base, <vscale x 8 x i32> %index, <vscale x 8 x i1> %mask, i32 %vl)
11136   ret void
11139 declare void @llvm.riscv.vsoxseg2.nxv2f64.nxv2i32(<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i32>, i32)
11140 declare void @llvm.riscv.vsoxseg2.mask.nxv2f64.nxv2i32(<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
11142 define void @test_vsoxseg2_nxv2f64_nxv2i32(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
11143 ; CHECK-LABEL: test_vsoxseg2_nxv2f64_nxv2i32:
11144 ; CHECK:       # %bb.0: # %entry
11145 ; CHECK-NEXT:    vmv1r.v v12, v10
11146 ; CHECK-NEXT:    vmv2r.v v10, v8
11147 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11148 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v12
11149 ; CHECK-NEXT:    ret
11150 entry:
11151   tail call void @llvm.riscv.vsoxseg2.nxv2f64.nxv2i32(<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
11152   ret void
11155 define void @test_vsoxseg2_mask_nxv2f64_nxv2i32(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
11156 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2f64_nxv2i32:
11157 ; CHECK:       # %bb.0: # %entry
11158 ; CHECK-NEXT:    vmv1r.v v12, v10
11159 ; CHECK-NEXT:    vmv2r.v v10, v8
11160 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11161 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v12, v0.t
11162 ; CHECK-NEXT:    ret
11163 entry:
11164   tail call void @llvm.riscv.vsoxseg2.mask.nxv2f64.nxv2i32(<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
11165   ret void
11168 declare void @llvm.riscv.vsoxseg2.nxv2f64.nxv2i8(<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i8>, i32)
11169 declare void @llvm.riscv.vsoxseg2.mask.nxv2f64.nxv2i8(<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
11171 define void @test_vsoxseg2_nxv2f64_nxv2i8(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
11172 ; CHECK-LABEL: test_vsoxseg2_nxv2f64_nxv2i8:
11173 ; CHECK:       # %bb.0: # %entry
11174 ; CHECK-NEXT:    vmv1r.v v12, v10
11175 ; CHECK-NEXT:    vmv2r.v v10, v8
11176 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11177 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v12
11178 ; CHECK-NEXT:    ret
11179 entry:
11180   tail call void @llvm.riscv.vsoxseg2.nxv2f64.nxv2i8(<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
11181   ret void
11184 define void @test_vsoxseg2_mask_nxv2f64_nxv2i8(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
11185 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2f64_nxv2i8:
11186 ; CHECK:       # %bb.0: # %entry
11187 ; CHECK-NEXT:    vmv1r.v v12, v10
11188 ; CHECK-NEXT:    vmv2r.v v10, v8
11189 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11190 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v12, v0.t
11191 ; CHECK-NEXT:    ret
11192 entry:
11193   tail call void @llvm.riscv.vsoxseg2.mask.nxv2f64.nxv2i8(<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
11194   ret void
11197 declare void @llvm.riscv.vsoxseg2.nxv2f64.nxv2i16(<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i16>, i32)
11198 declare void @llvm.riscv.vsoxseg2.mask.nxv2f64.nxv2i16(<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
11200 define void @test_vsoxseg2_nxv2f64_nxv2i16(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
11201 ; CHECK-LABEL: test_vsoxseg2_nxv2f64_nxv2i16:
11202 ; CHECK:       # %bb.0: # %entry
11203 ; CHECK-NEXT:    vmv1r.v v12, v10
11204 ; CHECK-NEXT:    vmv2r.v v10, v8
11205 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11206 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v12
11207 ; CHECK-NEXT:    ret
11208 entry:
11209   tail call void @llvm.riscv.vsoxseg2.nxv2f64.nxv2i16(<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
11210   ret void
11213 define void @test_vsoxseg2_mask_nxv2f64_nxv2i16(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
11214 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2f64_nxv2i16:
11215 ; CHECK:       # %bb.0: # %entry
11216 ; CHECK-NEXT:    vmv1r.v v12, v10
11217 ; CHECK-NEXT:    vmv2r.v v10, v8
11218 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11219 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v12, v0.t
11220 ; CHECK-NEXT:    ret
11221 entry:
11222   tail call void @llvm.riscv.vsoxseg2.mask.nxv2f64.nxv2i16(<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
11223   ret void
11226 declare void @llvm.riscv.vsoxseg3.nxv2f64.nxv2i32(<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i32>, i32)
11227 declare void @llvm.riscv.vsoxseg3.mask.nxv2f64.nxv2i32(<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
11229 define void @test_vsoxseg3_nxv2f64_nxv2i32(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
11230 ; CHECK-LABEL: test_vsoxseg3_nxv2f64_nxv2i32:
11231 ; CHECK:       # %bb.0: # %entry
11232 ; CHECK-NEXT:    vmv2r.v v12, v8
11233 ; CHECK-NEXT:    vmv2r.v v14, v8
11234 ; CHECK-NEXT:    vmv2r.v v16, v8
11235 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11236 ; CHECK-NEXT:    vsoxseg3ei32.v v12, (a0), v10
11237 ; CHECK-NEXT:    ret
11238 entry:
11239   tail call void @llvm.riscv.vsoxseg3.nxv2f64.nxv2i32(<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
11240   ret void
11243 define void @test_vsoxseg3_mask_nxv2f64_nxv2i32(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
11244 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2f64_nxv2i32:
11245 ; CHECK:       # %bb.0: # %entry
11246 ; CHECK-NEXT:    vmv2r.v v12, v8
11247 ; CHECK-NEXT:    vmv2r.v v14, v8
11248 ; CHECK-NEXT:    vmv2r.v v16, v8
11249 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11250 ; CHECK-NEXT:    vsoxseg3ei32.v v12, (a0), v10, v0.t
11251 ; CHECK-NEXT:    ret
11252 entry:
11253   tail call void @llvm.riscv.vsoxseg3.mask.nxv2f64.nxv2i32(<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
11254   ret void
11257 declare void @llvm.riscv.vsoxseg3.nxv2f64.nxv2i8(<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i8>, i32)
11258 declare void @llvm.riscv.vsoxseg3.mask.nxv2f64.nxv2i8(<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
11260 define void @test_vsoxseg3_nxv2f64_nxv2i8(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
11261 ; CHECK-LABEL: test_vsoxseg3_nxv2f64_nxv2i8:
11262 ; CHECK:       # %bb.0: # %entry
11263 ; CHECK-NEXT:    vmv2r.v v12, v8
11264 ; CHECK-NEXT:    vmv2r.v v14, v8
11265 ; CHECK-NEXT:    vmv2r.v v16, v8
11266 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11267 ; CHECK-NEXT:    vsoxseg3ei8.v v12, (a0), v10
11268 ; CHECK-NEXT:    ret
11269 entry:
11270   tail call void @llvm.riscv.vsoxseg3.nxv2f64.nxv2i8(<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
11271   ret void
11274 define void @test_vsoxseg3_mask_nxv2f64_nxv2i8(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
11275 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2f64_nxv2i8:
11276 ; CHECK:       # %bb.0: # %entry
11277 ; CHECK-NEXT:    vmv2r.v v12, v8
11278 ; CHECK-NEXT:    vmv2r.v v14, v8
11279 ; CHECK-NEXT:    vmv2r.v v16, v8
11280 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11281 ; CHECK-NEXT:    vsoxseg3ei8.v v12, (a0), v10, v0.t
11282 ; CHECK-NEXT:    ret
11283 entry:
11284   tail call void @llvm.riscv.vsoxseg3.mask.nxv2f64.nxv2i8(<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
11285   ret void
11288 declare void @llvm.riscv.vsoxseg3.nxv2f64.nxv2i16(<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i16>, i32)
11289 declare void @llvm.riscv.vsoxseg3.mask.nxv2f64.nxv2i16(<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
11291 define void @test_vsoxseg3_nxv2f64_nxv2i16(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
11292 ; CHECK-LABEL: test_vsoxseg3_nxv2f64_nxv2i16:
11293 ; CHECK:       # %bb.0: # %entry
11294 ; CHECK-NEXT:    vmv2r.v v12, v8
11295 ; CHECK-NEXT:    vmv2r.v v14, v8
11296 ; CHECK-NEXT:    vmv2r.v v16, v8
11297 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11298 ; CHECK-NEXT:    vsoxseg3ei16.v v12, (a0), v10
11299 ; CHECK-NEXT:    ret
11300 entry:
11301   tail call void @llvm.riscv.vsoxseg3.nxv2f64.nxv2i16(<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
11302   ret void
11305 define void @test_vsoxseg3_mask_nxv2f64_nxv2i16(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
11306 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2f64_nxv2i16:
11307 ; CHECK:       # %bb.0: # %entry
11308 ; CHECK-NEXT:    vmv2r.v v12, v8
11309 ; CHECK-NEXT:    vmv2r.v v14, v8
11310 ; CHECK-NEXT:    vmv2r.v v16, v8
11311 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11312 ; CHECK-NEXT:    vsoxseg3ei16.v v12, (a0), v10, v0.t
11313 ; CHECK-NEXT:    ret
11314 entry:
11315   tail call void @llvm.riscv.vsoxseg3.mask.nxv2f64.nxv2i16(<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
11316   ret void
11319 declare void @llvm.riscv.vsoxseg4.nxv2f64.nxv2i32(<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i32>, i32)
11320 declare void @llvm.riscv.vsoxseg4.mask.nxv2f64.nxv2i32(<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
11322 define void @test_vsoxseg4_nxv2f64_nxv2i32(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
11323 ; CHECK-LABEL: test_vsoxseg4_nxv2f64_nxv2i32:
11324 ; CHECK:       # %bb.0: # %entry
11325 ; CHECK-NEXT:    vmv2r.v v12, v8
11326 ; CHECK-NEXT:    vmv2r.v v14, v8
11327 ; CHECK-NEXT:    vmv2r.v v16, v8
11328 ; CHECK-NEXT:    vmv2r.v v18, v8
11329 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11330 ; CHECK-NEXT:    vsoxseg4ei32.v v12, (a0), v10
11331 ; CHECK-NEXT:    ret
11332 entry:
11333   tail call void @llvm.riscv.vsoxseg4.nxv2f64.nxv2i32(<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
11334   ret void
11337 define void @test_vsoxseg4_mask_nxv2f64_nxv2i32(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
11338 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2f64_nxv2i32:
11339 ; CHECK:       # %bb.0: # %entry
11340 ; CHECK-NEXT:    vmv2r.v v12, v8
11341 ; CHECK-NEXT:    vmv2r.v v14, v8
11342 ; CHECK-NEXT:    vmv2r.v v16, v8
11343 ; CHECK-NEXT:    vmv2r.v v18, v8
11344 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11345 ; CHECK-NEXT:    vsoxseg4ei32.v v12, (a0), v10, v0.t
11346 ; CHECK-NEXT:    ret
11347 entry:
11348   tail call void @llvm.riscv.vsoxseg4.mask.nxv2f64.nxv2i32(<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
11349   ret void
11352 declare void @llvm.riscv.vsoxseg4.nxv2f64.nxv2i8(<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i8>, i32)
11353 declare void @llvm.riscv.vsoxseg4.mask.nxv2f64.nxv2i8(<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
11355 define void @test_vsoxseg4_nxv2f64_nxv2i8(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
11356 ; CHECK-LABEL: test_vsoxseg4_nxv2f64_nxv2i8:
11357 ; CHECK:       # %bb.0: # %entry
11358 ; CHECK-NEXT:    vmv2r.v v12, v8
11359 ; CHECK-NEXT:    vmv2r.v v14, v8
11360 ; CHECK-NEXT:    vmv2r.v v16, v8
11361 ; CHECK-NEXT:    vmv2r.v v18, v8
11362 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11363 ; CHECK-NEXT:    vsoxseg4ei8.v v12, (a0), v10
11364 ; CHECK-NEXT:    ret
11365 entry:
11366   tail call void @llvm.riscv.vsoxseg4.nxv2f64.nxv2i8(<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
11367   ret void
11370 define void @test_vsoxseg4_mask_nxv2f64_nxv2i8(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
11371 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2f64_nxv2i8:
11372 ; CHECK:       # %bb.0: # %entry
11373 ; CHECK-NEXT:    vmv2r.v v12, v8
11374 ; CHECK-NEXT:    vmv2r.v v14, v8
11375 ; CHECK-NEXT:    vmv2r.v v16, v8
11376 ; CHECK-NEXT:    vmv2r.v v18, v8
11377 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11378 ; CHECK-NEXT:    vsoxseg4ei8.v v12, (a0), v10, v0.t
11379 ; CHECK-NEXT:    ret
11380 entry:
11381   tail call void @llvm.riscv.vsoxseg4.mask.nxv2f64.nxv2i8(<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
11382   ret void
11385 declare void @llvm.riscv.vsoxseg4.nxv2f64.nxv2i16(<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i16>, i32)
11386 declare void @llvm.riscv.vsoxseg4.mask.nxv2f64.nxv2i16(<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>,<vscale x 2 x double>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
11388 define void @test_vsoxseg4_nxv2f64_nxv2i16(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
11389 ; CHECK-LABEL: test_vsoxseg4_nxv2f64_nxv2i16:
11390 ; CHECK:       # %bb.0: # %entry
11391 ; CHECK-NEXT:    vmv2r.v v12, v8
11392 ; CHECK-NEXT:    vmv2r.v v14, v8
11393 ; CHECK-NEXT:    vmv2r.v v16, v8
11394 ; CHECK-NEXT:    vmv2r.v v18, v8
11395 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11396 ; CHECK-NEXT:    vsoxseg4ei16.v v12, (a0), v10
11397 ; CHECK-NEXT:    ret
11398 entry:
11399   tail call void @llvm.riscv.vsoxseg4.nxv2f64.nxv2i16(<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
11400   ret void
11403 define void @test_vsoxseg4_mask_nxv2f64_nxv2i16(<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
11404 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2f64_nxv2i16:
11405 ; CHECK:       # %bb.0: # %entry
11406 ; CHECK-NEXT:    vmv2r.v v12, v8
11407 ; CHECK-NEXT:    vmv2r.v v14, v8
11408 ; CHECK-NEXT:    vmv2r.v v16, v8
11409 ; CHECK-NEXT:    vmv2r.v v18, v8
11410 ; CHECK-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
11411 ; CHECK-NEXT:    vsoxseg4ei16.v v12, (a0), v10, v0.t
11412 ; CHECK-NEXT:    ret
11413 entry:
11414   tail call void @llvm.riscv.vsoxseg4.mask.nxv2f64.nxv2i16(<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val,<vscale x 2 x double> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
11415   ret void
11418 declare void @llvm.riscv.vsoxseg2.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, i32)
11419 declare void @llvm.riscv.vsoxseg2.mask.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
11421 define void @test_vsoxseg2_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
11422 ; CHECK-LABEL: test_vsoxseg2_nxv4f16_nxv4i16:
11423 ; CHECK:       # %bb.0: # %entry
11424 ; CHECK-NEXT:    vmv1r.v v10, v9
11425 ; CHECK-NEXT:    vmv1r.v v9, v8
11426 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11427 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
11428 ; CHECK-NEXT:    ret
11429 entry:
11430   tail call void @llvm.riscv.vsoxseg2.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
11431   ret void
11434 define void @test_vsoxseg2_mask_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11435 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4f16_nxv4i16:
11436 ; CHECK:       # %bb.0: # %entry
11437 ; CHECK-NEXT:    vmv1r.v v10, v9
11438 ; CHECK-NEXT:    vmv1r.v v9, v8
11439 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11440 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
11441 ; CHECK-NEXT:    ret
11442 entry:
11443   tail call void @llvm.riscv.vsoxseg2.mask.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
11444   ret void
11447 declare void @llvm.riscv.vsoxseg2.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, i32)
11448 declare void @llvm.riscv.vsoxseg2.mask.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
11450 define void @test_vsoxseg2_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
11451 ; CHECK-LABEL: test_vsoxseg2_nxv4f16_nxv4i8:
11452 ; CHECK:       # %bb.0: # %entry
11453 ; CHECK-NEXT:    vmv1r.v v10, v9
11454 ; CHECK-NEXT:    vmv1r.v v9, v8
11455 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11456 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
11457 ; CHECK-NEXT:    ret
11458 entry:
11459   tail call void @llvm.riscv.vsoxseg2.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
11460   ret void
11463 define void @test_vsoxseg2_mask_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11464 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4f16_nxv4i8:
11465 ; CHECK:       # %bb.0: # %entry
11466 ; CHECK-NEXT:    vmv1r.v v10, v9
11467 ; CHECK-NEXT:    vmv1r.v v9, v8
11468 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11469 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
11470 ; CHECK-NEXT:    ret
11471 entry:
11472   tail call void @llvm.riscv.vsoxseg2.mask.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
11473   ret void
11476 declare void @llvm.riscv.vsoxseg2.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, i32)
11477 declare void @llvm.riscv.vsoxseg2.mask.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
11479 define void @test_vsoxseg2_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
11480 ; CHECK-LABEL: test_vsoxseg2_nxv4f16_nxv4i32:
11481 ; CHECK:       # %bb.0: # %entry
11482 ; CHECK-NEXT:    vmv1r.v v9, v8
11483 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11484 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
11485 ; CHECK-NEXT:    ret
11486 entry:
11487   tail call void @llvm.riscv.vsoxseg2.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
11488   ret void
11491 define void @test_vsoxseg2_mask_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11492 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4f16_nxv4i32:
11493 ; CHECK:       # %bb.0: # %entry
11494 ; CHECK-NEXT:    vmv1r.v v9, v8
11495 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11496 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
11497 ; CHECK-NEXT:    ret
11498 entry:
11499   tail call void @llvm.riscv.vsoxseg2.mask.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
11500   ret void
11503 declare void @llvm.riscv.vsoxseg3.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, i32)
11504 declare void @llvm.riscv.vsoxseg3.mask.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
11506 define void @test_vsoxseg3_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
11507 ; CHECK-LABEL: test_vsoxseg3_nxv4f16_nxv4i16:
11508 ; CHECK:       # %bb.0: # %entry
11509 ; CHECK-NEXT:    vmv1r.v v10, v8
11510 ; CHECK-NEXT:    vmv1r.v v11, v8
11511 ; CHECK-NEXT:    vmv1r.v v12, v8
11512 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11513 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
11514 ; CHECK-NEXT:    ret
11515 entry:
11516   tail call void @llvm.riscv.vsoxseg3.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
11517   ret void
11520 define void @test_vsoxseg3_mask_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11521 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4f16_nxv4i16:
11522 ; CHECK:       # %bb.0: # %entry
11523 ; CHECK-NEXT:    vmv1r.v v10, v8
11524 ; CHECK-NEXT:    vmv1r.v v11, v8
11525 ; CHECK-NEXT:    vmv1r.v v12, v8
11526 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11527 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
11528 ; CHECK-NEXT:    ret
11529 entry:
11530   tail call void @llvm.riscv.vsoxseg3.mask.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
11531   ret void
11534 declare void @llvm.riscv.vsoxseg3.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, i32)
11535 declare void @llvm.riscv.vsoxseg3.mask.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
11537 define void @test_vsoxseg3_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
11538 ; CHECK-LABEL: test_vsoxseg3_nxv4f16_nxv4i8:
11539 ; CHECK:       # %bb.0: # %entry
11540 ; CHECK-NEXT:    vmv1r.v v10, v8
11541 ; CHECK-NEXT:    vmv1r.v v11, v8
11542 ; CHECK-NEXT:    vmv1r.v v12, v8
11543 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11544 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
11545 ; CHECK-NEXT:    ret
11546 entry:
11547   tail call void @llvm.riscv.vsoxseg3.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
11548   ret void
11551 define void @test_vsoxseg3_mask_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11552 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4f16_nxv4i8:
11553 ; CHECK:       # %bb.0: # %entry
11554 ; CHECK-NEXT:    vmv1r.v v10, v8
11555 ; CHECK-NEXT:    vmv1r.v v11, v8
11556 ; CHECK-NEXT:    vmv1r.v v12, v8
11557 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11558 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
11559 ; CHECK-NEXT:    ret
11560 entry:
11561   tail call void @llvm.riscv.vsoxseg3.mask.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
11562   ret void
11565 declare void @llvm.riscv.vsoxseg3.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, i32)
11566 declare void @llvm.riscv.vsoxseg3.mask.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
11568 define void @test_vsoxseg3_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
11569 ; CHECK-LABEL: test_vsoxseg3_nxv4f16_nxv4i32:
11570 ; CHECK:       # %bb.0: # %entry
11571 ; CHECK-NEXT:    vmv1r.v v9, v8
11572 ; CHECK-NEXT:    vmv2r.v v12, v10
11573 ; CHECK-NEXT:    vmv1r.v v10, v8
11574 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11575 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v12
11576 ; CHECK-NEXT:    ret
11577 entry:
11578   tail call void @llvm.riscv.vsoxseg3.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
11579   ret void
11582 define void @test_vsoxseg3_mask_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11583 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4f16_nxv4i32:
11584 ; CHECK:       # %bb.0: # %entry
11585 ; CHECK-NEXT:    vmv1r.v v9, v8
11586 ; CHECK-NEXT:    vmv2r.v v12, v10
11587 ; CHECK-NEXT:    vmv1r.v v10, v8
11588 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11589 ; CHECK-NEXT:    vsoxseg3ei32.v v8, (a0), v12, v0.t
11590 ; CHECK-NEXT:    ret
11591 entry:
11592   tail call void @llvm.riscv.vsoxseg3.mask.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
11593   ret void
11596 declare void @llvm.riscv.vsoxseg4.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, i32)
11597 declare void @llvm.riscv.vsoxseg4.mask.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
11599 define void @test_vsoxseg4_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
11600 ; CHECK-LABEL: test_vsoxseg4_nxv4f16_nxv4i16:
11601 ; CHECK:       # %bb.0: # %entry
11602 ; CHECK-NEXT:    vmv1r.v v10, v8
11603 ; CHECK-NEXT:    vmv1r.v v11, v8
11604 ; CHECK-NEXT:    vmv1r.v v12, v8
11605 ; CHECK-NEXT:    vmv1r.v v13, v8
11606 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11607 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
11608 ; CHECK-NEXT:    ret
11609 entry:
11610   tail call void @llvm.riscv.vsoxseg4.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
11611   ret void
11614 define void @test_vsoxseg4_mask_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11615 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4f16_nxv4i16:
11616 ; CHECK:       # %bb.0: # %entry
11617 ; CHECK-NEXT:    vmv1r.v v10, v8
11618 ; CHECK-NEXT:    vmv1r.v v11, v8
11619 ; CHECK-NEXT:    vmv1r.v v12, v8
11620 ; CHECK-NEXT:    vmv1r.v v13, v8
11621 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11622 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
11623 ; CHECK-NEXT:    ret
11624 entry:
11625   tail call void @llvm.riscv.vsoxseg4.mask.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
11626   ret void
11629 declare void @llvm.riscv.vsoxseg4.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, i32)
11630 declare void @llvm.riscv.vsoxseg4.mask.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
11632 define void @test_vsoxseg4_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
11633 ; CHECK-LABEL: test_vsoxseg4_nxv4f16_nxv4i8:
11634 ; CHECK:       # %bb.0: # %entry
11635 ; CHECK-NEXT:    vmv1r.v v10, v8
11636 ; CHECK-NEXT:    vmv1r.v v11, v8
11637 ; CHECK-NEXT:    vmv1r.v v12, v8
11638 ; CHECK-NEXT:    vmv1r.v v13, v8
11639 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11640 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
11641 ; CHECK-NEXT:    ret
11642 entry:
11643   tail call void @llvm.riscv.vsoxseg4.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
11644   ret void
11647 define void @test_vsoxseg4_mask_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11648 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4f16_nxv4i8:
11649 ; CHECK:       # %bb.0: # %entry
11650 ; CHECK-NEXT:    vmv1r.v v10, v8
11651 ; CHECK-NEXT:    vmv1r.v v11, v8
11652 ; CHECK-NEXT:    vmv1r.v v12, v8
11653 ; CHECK-NEXT:    vmv1r.v v13, v8
11654 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11655 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
11656 ; CHECK-NEXT:    ret
11657 entry:
11658   tail call void @llvm.riscv.vsoxseg4.mask.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
11659   ret void
11662 declare void @llvm.riscv.vsoxseg4.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, i32)
11663 declare void @llvm.riscv.vsoxseg4.mask.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
11665 define void @test_vsoxseg4_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
11666 ; CHECK-LABEL: test_vsoxseg4_nxv4f16_nxv4i32:
11667 ; CHECK:       # %bb.0: # %entry
11668 ; CHECK-NEXT:    vmv1r.v v12, v8
11669 ; CHECK-NEXT:    vmv1r.v v13, v8
11670 ; CHECK-NEXT:    vmv1r.v v14, v8
11671 ; CHECK-NEXT:    vmv1r.v v15, v8
11672 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11673 ; CHECK-NEXT:    vsoxseg4ei32.v v12, (a0), v10
11674 ; CHECK-NEXT:    ret
11675 entry:
11676   tail call void @llvm.riscv.vsoxseg4.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
11677   ret void
11680 define void @test_vsoxseg4_mask_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11681 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4f16_nxv4i32:
11682 ; CHECK:       # %bb.0: # %entry
11683 ; CHECK-NEXT:    vmv1r.v v12, v8
11684 ; CHECK-NEXT:    vmv1r.v v13, v8
11685 ; CHECK-NEXT:    vmv1r.v v14, v8
11686 ; CHECK-NEXT:    vmv1r.v v15, v8
11687 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11688 ; CHECK-NEXT:    vsoxseg4ei32.v v12, (a0), v10, v0.t
11689 ; CHECK-NEXT:    ret
11690 entry:
11691   tail call void @llvm.riscv.vsoxseg4.mask.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
11692   ret void
11695 declare void @llvm.riscv.vsoxseg5.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, i32)
11696 declare void @llvm.riscv.vsoxseg5.mask.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
11698 define void @test_vsoxseg5_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
11699 ; CHECK-LABEL: test_vsoxseg5_nxv4f16_nxv4i16:
11700 ; CHECK:       # %bb.0: # %entry
11701 ; CHECK-NEXT:    vmv1r.v v10, v8
11702 ; CHECK-NEXT:    vmv1r.v v11, v8
11703 ; CHECK-NEXT:    vmv1r.v v12, v8
11704 ; CHECK-NEXT:    vmv1r.v v13, v8
11705 ; CHECK-NEXT:    vmv1r.v v14, v8
11706 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11707 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
11708 ; CHECK-NEXT:    ret
11709 entry:
11710   tail call void @llvm.riscv.vsoxseg5.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
11711   ret void
11714 define void @test_vsoxseg5_mask_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11715 ; CHECK-LABEL: test_vsoxseg5_mask_nxv4f16_nxv4i16:
11716 ; CHECK:       # %bb.0: # %entry
11717 ; CHECK-NEXT:    vmv1r.v v10, v8
11718 ; CHECK-NEXT:    vmv1r.v v11, v8
11719 ; CHECK-NEXT:    vmv1r.v v12, v8
11720 ; CHECK-NEXT:    vmv1r.v v13, v8
11721 ; CHECK-NEXT:    vmv1r.v v14, v8
11722 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11723 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
11724 ; CHECK-NEXT:    ret
11725 entry:
11726   tail call void @llvm.riscv.vsoxseg5.mask.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
11727   ret void
11730 declare void @llvm.riscv.vsoxseg5.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, i32)
11731 declare void @llvm.riscv.vsoxseg5.mask.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
11733 define void @test_vsoxseg5_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
11734 ; CHECK-LABEL: test_vsoxseg5_nxv4f16_nxv4i8:
11735 ; CHECK:       # %bb.0: # %entry
11736 ; CHECK-NEXT:    vmv1r.v v10, v8
11737 ; CHECK-NEXT:    vmv1r.v v11, v8
11738 ; CHECK-NEXT:    vmv1r.v v12, v8
11739 ; CHECK-NEXT:    vmv1r.v v13, v8
11740 ; CHECK-NEXT:    vmv1r.v v14, v8
11741 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11742 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
11743 ; CHECK-NEXT:    ret
11744 entry:
11745   tail call void @llvm.riscv.vsoxseg5.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
11746   ret void
11749 define void @test_vsoxseg5_mask_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11750 ; CHECK-LABEL: test_vsoxseg5_mask_nxv4f16_nxv4i8:
11751 ; CHECK:       # %bb.0: # %entry
11752 ; CHECK-NEXT:    vmv1r.v v10, v8
11753 ; CHECK-NEXT:    vmv1r.v v11, v8
11754 ; CHECK-NEXT:    vmv1r.v v12, v8
11755 ; CHECK-NEXT:    vmv1r.v v13, v8
11756 ; CHECK-NEXT:    vmv1r.v v14, v8
11757 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11758 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
11759 ; CHECK-NEXT:    ret
11760 entry:
11761   tail call void @llvm.riscv.vsoxseg5.mask.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
11762   ret void
11765 declare void @llvm.riscv.vsoxseg5.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, i32)
11766 declare void @llvm.riscv.vsoxseg5.mask.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
11768 define void @test_vsoxseg5_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
11769 ; CHECK-LABEL: test_vsoxseg5_nxv4f16_nxv4i32:
11770 ; CHECK:       # %bb.0: # %entry
11771 ; CHECK-NEXT:    vmv1r.v v12, v8
11772 ; CHECK-NEXT:    vmv1r.v v13, v8
11773 ; CHECK-NEXT:    vmv1r.v v14, v8
11774 ; CHECK-NEXT:    vmv1r.v v15, v8
11775 ; CHECK-NEXT:    vmv1r.v v16, v8
11776 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11777 ; CHECK-NEXT:    vsoxseg5ei32.v v12, (a0), v10
11778 ; CHECK-NEXT:    ret
11779 entry:
11780   tail call void @llvm.riscv.vsoxseg5.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
11781   ret void
11784 define void @test_vsoxseg5_mask_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11785 ; CHECK-LABEL: test_vsoxseg5_mask_nxv4f16_nxv4i32:
11786 ; CHECK:       # %bb.0: # %entry
11787 ; CHECK-NEXT:    vmv1r.v v12, v8
11788 ; CHECK-NEXT:    vmv1r.v v13, v8
11789 ; CHECK-NEXT:    vmv1r.v v14, v8
11790 ; CHECK-NEXT:    vmv1r.v v15, v8
11791 ; CHECK-NEXT:    vmv1r.v v16, v8
11792 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11793 ; CHECK-NEXT:    vsoxseg5ei32.v v12, (a0), v10, v0.t
11794 ; CHECK-NEXT:    ret
11795 entry:
11796   tail call void @llvm.riscv.vsoxseg5.mask.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
11797   ret void
11800 declare void @llvm.riscv.vsoxseg6.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, i32)
11801 declare void @llvm.riscv.vsoxseg6.mask.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
11803 define void @test_vsoxseg6_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
11804 ; CHECK-LABEL: test_vsoxseg6_nxv4f16_nxv4i16:
11805 ; CHECK:       # %bb.0: # %entry
11806 ; CHECK-NEXT:    vmv1r.v v10, v8
11807 ; CHECK-NEXT:    vmv1r.v v11, v8
11808 ; CHECK-NEXT:    vmv1r.v v12, v8
11809 ; CHECK-NEXT:    vmv1r.v v13, v8
11810 ; CHECK-NEXT:    vmv1r.v v14, v8
11811 ; CHECK-NEXT:    vmv1r.v v15, v8
11812 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11813 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
11814 ; CHECK-NEXT:    ret
11815 entry:
11816   tail call void @llvm.riscv.vsoxseg6.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
11817   ret void
11820 define void @test_vsoxseg6_mask_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11821 ; CHECK-LABEL: test_vsoxseg6_mask_nxv4f16_nxv4i16:
11822 ; CHECK:       # %bb.0: # %entry
11823 ; CHECK-NEXT:    vmv1r.v v10, v8
11824 ; CHECK-NEXT:    vmv1r.v v11, v8
11825 ; CHECK-NEXT:    vmv1r.v v12, v8
11826 ; CHECK-NEXT:    vmv1r.v v13, v8
11827 ; CHECK-NEXT:    vmv1r.v v14, v8
11828 ; CHECK-NEXT:    vmv1r.v v15, v8
11829 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11830 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
11831 ; CHECK-NEXT:    ret
11832 entry:
11833   tail call void @llvm.riscv.vsoxseg6.mask.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
11834   ret void
11837 declare void @llvm.riscv.vsoxseg6.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, i32)
11838 declare void @llvm.riscv.vsoxseg6.mask.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
11840 define void @test_vsoxseg6_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
11841 ; CHECK-LABEL: test_vsoxseg6_nxv4f16_nxv4i8:
11842 ; CHECK:       # %bb.0: # %entry
11843 ; CHECK-NEXT:    vmv1r.v v10, v8
11844 ; CHECK-NEXT:    vmv1r.v v11, v8
11845 ; CHECK-NEXT:    vmv1r.v v12, v8
11846 ; CHECK-NEXT:    vmv1r.v v13, v8
11847 ; CHECK-NEXT:    vmv1r.v v14, v8
11848 ; CHECK-NEXT:    vmv1r.v v15, v8
11849 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11850 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
11851 ; CHECK-NEXT:    ret
11852 entry:
11853   tail call void @llvm.riscv.vsoxseg6.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
11854   ret void
11857 define void @test_vsoxseg6_mask_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11858 ; CHECK-LABEL: test_vsoxseg6_mask_nxv4f16_nxv4i8:
11859 ; CHECK:       # %bb.0: # %entry
11860 ; CHECK-NEXT:    vmv1r.v v10, v8
11861 ; CHECK-NEXT:    vmv1r.v v11, v8
11862 ; CHECK-NEXT:    vmv1r.v v12, v8
11863 ; CHECK-NEXT:    vmv1r.v v13, v8
11864 ; CHECK-NEXT:    vmv1r.v v14, v8
11865 ; CHECK-NEXT:    vmv1r.v v15, v8
11866 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11867 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
11868 ; CHECK-NEXT:    ret
11869 entry:
11870   tail call void @llvm.riscv.vsoxseg6.mask.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
11871   ret void
11874 declare void @llvm.riscv.vsoxseg6.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, i32)
11875 declare void @llvm.riscv.vsoxseg6.mask.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
11877 define void @test_vsoxseg6_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
11878 ; CHECK-LABEL: test_vsoxseg6_nxv4f16_nxv4i32:
11879 ; CHECK:       # %bb.0: # %entry
11880 ; CHECK-NEXT:    vmv1r.v v12, v8
11881 ; CHECK-NEXT:    vmv1r.v v13, v8
11882 ; CHECK-NEXT:    vmv1r.v v14, v8
11883 ; CHECK-NEXT:    vmv1r.v v15, v8
11884 ; CHECK-NEXT:    vmv1r.v v16, v8
11885 ; CHECK-NEXT:    vmv1r.v v17, v8
11886 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11887 ; CHECK-NEXT:    vsoxseg6ei32.v v12, (a0), v10
11888 ; CHECK-NEXT:    ret
11889 entry:
11890   tail call void @llvm.riscv.vsoxseg6.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
11891   ret void
11894 define void @test_vsoxseg6_mask_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11895 ; CHECK-LABEL: test_vsoxseg6_mask_nxv4f16_nxv4i32:
11896 ; CHECK:       # %bb.0: # %entry
11897 ; CHECK-NEXT:    vmv1r.v v12, v8
11898 ; CHECK-NEXT:    vmv1r.v v13, v8
11899 ; CHECK-NEXT:    vmv1r.v v14, v8
11900 ; CHECK-NEXT:    vmv1r.v v15, v8
11901 ; CHECK-NEXT:    vmv1r.v v16, v8
11902 ; CHECK-NEXT:    vmv1r.v v17, v8
11903 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11904 ; CHECK-NEXT:    vsoxseg6ei32.v v12, (a0), v10, v0.t
11905 ; CHECK-NEXT:    ret
11906 entry:
11907   tail call void @llvm.riscv.vsoxseg6.mask.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
11908   ret void
11911 declare void @llvm.riscv.vsoxseg7.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, i32)
11912 declare void @llvm.riscv.vsoxseg7.mask.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
11914 define void @test_vsoxseg7_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
11915 ; CHECK-LABEL: test_vsoxseg7_nxv4f16_nxv4i16:
11916 ; CHECK:       # %bb.0: # %entry
11917 ; CHECK-NEXT:    vmv1r.v v10, v8
11918 ; CHECK-NEXT:    vmv1r.v v11, v8
11919 ; CHECK-NEXT:    vmv1r.v v12, v8
11920 ; CHECK-NEXT:    vmv1r.v v13, v8
11921 ; CHECK-NEXT:    vmv1r.v v14, v8
11922 ; CHECK-NEXT:    vmv1r.v v15, v8
11923 ; CHECK-NEXT:    vmv1r.v v16, v8
11924 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11925 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
11926 ; CHECK-NEXT:    ret
11927 entry:
11928   tail call void @llvm.riscv.vsoxseg7.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
11929   ret void
11932 define void @test_vsoxseg7_mask_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11933 ; CHECK-LABEL: test_vsoxseg7_mask_nxv4f16_nxv4i16:
11934 ; CHECK:       # %bb.0: # %entry
11935 ; CHECK-NEXT:    vmv1r.v v10, v8
11936 ; CHECK-NEXT:    vmv1r.v v11, v8
11937 ; CHECK-NEXT:    vmv1r.v v12, v8
11938 ; CHECK-NEXT:    vmv1r.v v13, v8
11939 ; CHECK-NEXT:    vmv1r.v v14, v8
11940 ; CHECK-NEXT:    vmv1r.v v15, v8
11941 ; CHECK-NEXT:    vmv1r.v v16, v8
11942 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11943 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
11944 ; CHECK-NEXT:    ret
11945 entry:
11946   tail call void @llvm.riscv.vsoxseg7.mask.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
11947   ret void
11950 declare void @llvm.riscv.vsoxseg7.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, i32)
11951 declare void @llvm.riscv.vsoxseg7.mask.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
11953 define void @test_vsoxseg7_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
11954 ; CHECK-LABEL: test_vsoxseg7_nxv4f16_nxv4i8:
11955 ; CHECK:       # %bb.0: # %entry
11956 ; CHECK-NEXT:    vmv1r.v v10, v8
11957 ; CHECK-NEXT:    vmv1r.v v11, v8
11958 ; CHECK-NEXT:    vmv1r.v v12, v8
11959 ; CHECK-NEXT:    vmv1r.v v13, v8
11960 ; CHECK-NEXT:    vmv1r.v v14, v8
11961 ; CHECK-NEXT:    vmv1r.v v15, v8
11962 ; CHECK-NEXT:    vmv1r.v v16, v8
11963 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11964 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
11965 ; CHECK-NEXT:    ret
11966 entry:
11967   tail call void @llvm.riscv.vsoxseg7.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
11968   ret void
11971 define void @test_vsoxseg7_mask_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
11972 ; CHECK-LABEL: test_vsoxseg7_mask_nxv4f16_nxv4i8:
11973 ; CHECK:       # %bb.0: # %entry
11974 ; CHECK-NEXT:    vmv1r.v v10, v8
11975 ; CHECK-NEXT:    vmv1r.v v11, v8
11976 ; CHECK-NEXT:    vmv1r.v v12, v8
11977 ; CHECK-NEXT:    vmv1r.v v13, v8
11978 ; CHECK-NEXT:    vmv1r.v v14, v8
11979 ; CHECK-NEXT:    vmv1r.v v15, v8
11980 ; CHECK-NEXT:    vmv1r.v v16, v8
11981 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
11982 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
11983 ; CHECK-NEXT:    ret
11984 entry:
11985   tail call void @llvm.riscv.vsoxseg7.mask.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
11986   ret void
11989 declare void @llvm.riscv.vsoxseg7.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, i32)
11990 declare void @llvm.riscv.vsoxseg7.mask.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
11992 define void @test_vsoxseg7_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
11993 ; CHECK-LABEL: test_vsoxseg7_nxv4f16_nxv4i32:
11994 ; CHECK:       # %bb.0: # %entry
11995 ; CHECK-NEXT:    vmv1r.v v12, v8
11996 ; CHECK-NEXT:    vmv1r.v v13, v8
11997 ; CHECK-NEXT:    vmv1r.v v14, v8
11998 ; CHECK-NEXT:    vmv1r.v v15, v8
11999 ; CHECK-NEXT:    vmv1r.v v16, v8
12000 ; CHECK-NEXT:    vmv1r.v v17, v8
12001 ; CHECK-NEXT:    vmv1r.v v18, v8
12002 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
12003 ; CHECK-NEXT:    vsoxseg7ei32.v v12, (a0), v10
12004 ; CHECK-NEXT:    ret
12005 entry:
12006   tail call void @llvm.riscv.vsoxseg7.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
12007   ret void
12010 define void @test_vsoxseg7_mask_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
12011 ; CHECK-LABEL: test_vsoxseg7_mask_nxv4f16_nxv4i32:
12012 ; CHECK:       # %bb.0: # %entry
12013 ; CHECK-NEXT:    vmv1r.v v12, v8
12014 ; CHECK-NEXT:    vmv1r.v v13, v8
12015 ; CHECK-NEXT:    vmv1r.v v14, v8
12016 ; CHECK-NEXT:    vmv1r.v v15, v8
12017 ; CHECK-NEXT:    vmv1r.v v16, v8
12018 ; CHECK-NEXT:    vmv1r.v v17, v8
12019 ; CHECK-NEXT:    vmv1r.v v18, v8
12020 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
12021 ; CHECK-NEXT:    vsoxseg7ei32.v v12, (a0), v10, v0.t
12022 ; CHECK-NEXT:    ret
12023 entry:
12024   tail call void @llvm.riscv.vsoxseg7.mask.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
12025   ret void
12028 declare void @llvm.riscv.vsoxseg8.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, i32)
12029 declare void @llvm.riscv.vsoxseg8.mask.nxv4f16.nxv4i16(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
12031 define void @test_vsoxseg8_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
12032 ; CHECK-LABEL: test_vsoxseg8_nxv4f16_nxv4i16:
12033 ; CHECK:       # %bb.0: # %entry
12034 ; CHECK-NEXT:    vmv1r.v v10, v8
12035 ; CHECK-NEXT:    vmv1r.v v11, v8
12036 ; CHECK-NEXT:    vmv1r.v v12, v8
12037 ; CHECK-NEXT:    vmv1r.v v13, v8
12038 ; CHECK-NEXT:    vmv1r.v v14, v8
12039 ; CHECK-NEXT:    vmv1r.v v15, v8
12040 ; CHECK-NEXT:    vmv1r.v v16, v8
12041 ; CHECK-NEXT:    vmv1r.v v17, v8
12042 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
12043 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
12044 ; CHECK-NEXT:    ret
12045 entry:
12046   tail call void @llvm.riscv.vsoxseg8.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
12047   ret void
12050 define void @test_vsoxseg8_mask_nxv4f16_nxv4i16(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
12051 ; CHECK-LABEL: test_vsoxseg8_mask_nxv4f16_nxv4i16:
12052 ; CHECK:       # %bb.0: # %entry
12053 ; CHECK-NEXT:    vmv1r.v v10, v8
12054 ; CHECK-NEXT:    vmv1r.v v11, v8
12055 ; CHECK-NEXT:    vmv1r.v v12, v8
12056 ; CHECK-NEXT:    vmv1r.v v13, v8
12057 ; CHECK-NEXT:    vmv1r.v v14, v8
12058 ; CHECK-NEXT:    vmv1r.v v15, v8
12059 ; CHECK-NEXT:    vmv1r.v v16, v8
12060 ; CHECK-NEXT:    vmv1r.v v17, v8
12061 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
12062 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
12063 ; CHECK-NEXT:    ret
12064 entry:
12065   tail call void @llvm.riscv.vsoxseg8.mask.nxv4f16.nxv4i16(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
12066   ret void
12069 declare void @llvm.riscv.vsoxseg8.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, i32)
12070 declare void @llvm.riscv.vsoxseg8.mask.nxv4f16.nxv4i8(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
12072 define void @test_vsoxseg8_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
12073 ; CHECK-LABEL: test_vsoxseg8_nxv4f16_nxv4i8:
12074 ; CHECK:       # %bb.0: # %entry
12075 ; CHECK-NEXT:    vmv1r.v v10, v8
12076 ; CHECK-NEXT:    vmv1r.v v11, v8
12077 ; CHECK-NEXT:    vmv1r.v v12, v8
12078 ; CHECK-NEXT:    vmv1r.v v13, v8
12079 ; CHECK-NEXT:    vmv1r.v v14, v8
12080 ; CHECK-NEXT:    vmv1r.v v15, v8
12081 ; CHECK-NEXT:    vmv1r.v v16, v8
12082 ; CHECK-NEXT:    vmv1r.v v17, v8
12083 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
12084 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
12085 ; CHECK-NEXT:    ret
12086 entry:
12087   tail call void @llvm.riscv.vsoxseg8.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
12088   ret void
12091 define void @test_vsoxseg8_mask_nxv4f16_nxv4i8(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
12092 ; CHECK-LABEL: test_vsoxseg8_mask_nxv4f16_nxv4i8:
12093 ; CHECK:       # %bb.0: # %entry
12094 ; CHECK-NEXT:    vmv1r.v v10, v8
12095 ; CHECK-NEXT:    vmv1r.v v11, v8
12096 ; CHECK-NEXT:    vmv1r.v v12, v8
12097 ; CHECK-NEXT:    vmv1r.v v13, v8
12098 ; CHECK-NEXT:    vmv1r.v v14, v8
12099 ; CHECK-NEXT:    vmv1r.v v15, v8
12100 ; CHECK-NEXT:    vmv1r.v v16, v8
12101 ; CHECK-NEXT:    vmv1r.v v17, v8
12102 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
12103 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
12104 ; CHECK-NEXT:    ret
12105 entry:
12106   tail call void @llvm.riscv.vsoxseg8.mask.nxv4f16.nxv4i8(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
12107   ret void
12110 declare void @llvm.riscv.vsoxseg8.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, i32)
12111 declare void @llvm.riscv.vsoxseg8.mask.nxv4f16.nxv4i32(<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>,<vscale x 4 x half>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
12113 define void @test_vsoxseg8_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
12114 ; CHECK-LABEL: test_vsoxseg8_nxv4f16_nxv4i32:
12115 ; CHECK:       # %bb.0: # %entry
12116 ; CHECK-NEXT:    vmv1r.v v12, v8
12117 ; CHECK-NEXT:    vmv1r.v v13, v8
12118 ; CHECK-NEXT:    vmv1r.v v14, v8
12119 ; CHECK-NEXT:    vmv1r.v v15, v8
12120 ; CHECK-NEXT:    vmv1r.v v16, v8
12121 ; CHECK-NEXT:    vmv1r.v v17, v8
12122 ; CHECK-NEXT:    vmv1r.v v18, v8
12123 ; CHECK-NEXT:    vmv1r.v v19, v8
12124 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
12125 ; CHECK-NEXT:    vsoxseg8ei32.v v12, (a0), v10
12126 ; CHECK-NEXT:    ret
12127 entry:
12128   tail call void @llvm.riscv.vsoxseg8.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
12129   ret void
12132 define void @test_vsoxseg8_mask_nxv4f16_nxv4i32(<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
12133 ; CHECK-LABEL: test_vsoxseg8_mask_nxv4f16_nxv4i32:
12134 ; CHECK:       # %bb.0: # %entry
12135 ; CHECK-NEXT:    vmv1r.v v12, v8
12136 ; CHECK-NEXT:    vmv1r.v v13, v8
12137 ; CHECK-NEXT:    vmv1r.v v14, v8
12138 ; CHECK-NEXT:    vmv1r.v v15, v8
12139 ; CHECK-NEXT:    vmv1r.v v16, v8
12140 ; CHECK-NEXT:    vmv1r.v v17, v8
12141 ; CHECK-NEXT:    vmv1r.v v18, v8
12142 ; CHECK-NEXT:    vmv1r.v v19, v8
12143 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
12144 ; CHECK-NEXT:    vsoxseg8ei32.v v12, (a0), v10, v0.t
12145 ; CHECK-NEXT:    ret
12146 entry:
12147   tail call void @llvm.riscv.vsoxseg8.mask.nxv4f16.nxv4i32(<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val,<vscale x 4 x half> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
12148   ret void
12151 declare void @llvm.riscv.vsoxseg2.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, i32)
12152 declare void @llvm.riscv.vsoxseg2.mask.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
12154 define void @test_vsoxseg2_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
12155 ; CHECK-LABEL: test_vsoxseg2_nxv2f16_nxv2i32:
12156 ; CHECK:       # %bb.0: # %entry
12157 ; CHECK-NEXT:    vmv1r.v v10, v9
12158 ; CHECK-NEXT:    vmv1r.v v9, v8
12159 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12160 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10
12161 ; CHECK-NEXT:    ret
12162 entry:
12163   tail call void @llvm.riscv.vsoxseg2.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
12164   ret void
12167 define void @test_vsoxseg2_mask_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12168 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2f16_nxv2i32:
12169 ; CHECK:       # %bb.0: # %entry
12170 ; CHECK-NEXT:    vmv1r.v v10, v9
12171 ; CHECK-NEXT:    vmv1r.v v9, v8
12172 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12173 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v10, v0.t
12174 ; CHECK-NEXT:    ret
12175 entry:
12176   tail call void @llvm.riscv.vsoxseg2.mask.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
12177   ret void
12180 declare void @llvm.riscv.vsoxseg2.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, i32)
12181 declare void @llvm.riscv.vsoxseg2.mask.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
12183 define void @test_vsoxseg2_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
12184 ; CHECK-LABEL: test_vsoxseg2_nxv2f16_nxv2i8:
12185 ; CHECK:       # %bb.0: # %entry
12186 ; CHECK-NEXT:    vmv1r.v v10, v9
12187 ; CHECK-NEXT:    vmv1r.v v9, v8
12188 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12189 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10
12190 ; CHECK-NEXT:    ret
12191 entry:
12192   tail call void @llvm.riscv.vsoxseg2.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
12193   ret void
12196 define void @test_vsoxseg2_mask_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12197 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2f16_nxv2i8:
12198 ; CHECK:       # %bb.0: # %entry
12199 ; CHECK-NEXT:    vmv1r.v v10, v9
12200 ; CHECK-NEXT:    vmv1r.v v9, v8
12201 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12202 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v10, v0.t
12203 ; CHECK-NEXT:    ret
12204 entry:
12205   tail call void @llvm.riscv.vsoxseg2.mask.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
12206   ret void
12209 declare void @llvm.riscv.vsoxseg2.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, i32)
12210 declare void @llvm.riscv.vsoxseg2.mask.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
12212 define void @test_vsoxseg2_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
12213 ; CHECK-LABEL: test_vsoxseg2_nxv2f16_nxv2i16:
12214 ; CHECK:       # %bb.0: # %entry
12215 ; CHECK-NEXT:    vmv1r.v v10, v9
12216 ; CHECK-NEXT:    vmv1r.v v9, v8
12217 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12218 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10
12219 ; CHECK-NEXT:    ret
12220 entry:
12221   tail call void @llvm.riscv.vsoxseg2.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
12222   ret void
12225 define void @test_vsoxseg2_mask_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12226 ; CHECK-LABEL: test_vsoxseg2_mask_nxv2f16_nxv2i16:
12227 ; CHECK:       # %bb.0: # %entry
12228 ; CHECK-NEXT:    vmv1r.v v10, v9
12229 ; CHECK-NEXT:    vmv1r.v v9, v8
12230 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12231 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v10, v0.t
12232 ; CHECK-NEXT:    ret
12233 entry:
12234   tail call void @llvm.riscv.vsoxseg2.mask.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
12235   ret void
12238 declare void @llvm.riscv.vsoxseg3.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, i32)
12239 declare void @llvm.riscv.vsoxseg3.mask.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
12241 define void @test_vsoxseg3_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
12242 ; CHECK-LABEL: test_vsoxseg3_nxv2f16_nxv2i32:
12243 ; CHECK:       # %bb.0: # %entry
12244 ; CHECK-NEXT:    vmv1r.v v10, v8
12245 ; CHECK-NEXT:    vmv1r.v v11, v8
12246 ; CHECK-NEXT:    vmv1r.v v12, v8
12247 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12248 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9
12249 ; CHECK-NEXT:    ret
12250 entry:
12251   tail call void @llvm.riscv.vsoxseg3.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
12252   ret void
12255 define void @test_vsoxseg3_mask_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12256 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2f16_nxv2i32:
12257 ; CHECK:       # %bb.0: # %entry
12258 ; CHECK-NEXT:    vmv1r.v v10, v8
12259 ; CHECK-NEXT:    vmv1r.v v11, v8
12260 ; CHECK-NEXT:    vmv1r.v v12, v8
12261 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12262 ; CHECK-NEXT:    vsoxseg3ei32.v v10, (a0), v9, v0.t
12263 ; CHECK-NEXT:    ret
12264 entry:
12265   tail call void @llvm.riscv.vsoxseg3.mask.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
12266   ret void
12269 declare void @llvm.riscv.vsoxseg3.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, i32)
12270 declare void @llvm.riscv.vsoxseg3.mask.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
12272 define void @test_vsoxseg3_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
12273 ; CHECK-LABEL: test_vsoxseg3_nxv2f16_nxv2i8:
12274 ; CHECK:       # %bb.0: # %entry
12275 ; CHECK-NEXT:    vmv1r.v v10, v8
12276 ; CHECK-NEXT:    vmv1r.v v11, v8
12277 ; CHECK-NEXT:    vmv1r.v v12, v8
12278 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12279 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9
12280 ; CHECK-NEXT:    ret
12281 entry:
12282   tail call void @llvm.riscv.vsoxseg3.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
12283   ret void
12286 define void @test_vsoxseg3_mask_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12287 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2f16_nxv2i8:
12288 ; CHECK:       # %bb.0: # %entry
12289 ; CHECK-NEXT:    vmv1r.v v10, v8
12290 ; CHECK-NEXT:    vmv1r.v v11, v8
12291 ; CHECK-NEXT:    vmv1r.v v12, v8
12292 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12293 ; CHECK-NEXT:    vsoxseg3ei8.v v10, (a0), v9, v0.t
12294 ; CHECK-NEXT:    ret
12295 entry:
12296   tail call void @llvm.riscv.vsoxseg3.mask.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
12297   ret void
12300 declare void @llvm.riscv.vsoxseg3.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, i32)
12301 declare void @llvm.riscv.vsoxseg3.mask.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
12303 define void @test_vsoxseg3_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
12304 ; CHECK-LABEL: test_vsoxseg3_nxv2f16_nxv2i16:
12305 ; CHECK:       # %bb.0: # %entry
12306 ; CHECK-NEXT:    vmv1r.v v10, v8
12307 ; CHECK-NEXT:    vmv1r.v v11, v8
12308 ; CHECK-NEXT:    vmv1r.v v12, v8
12309 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12310 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9
12311 ; CHECK-NEXT:    ret
12312 entry:
12313   tail call void @llvm.riscv.vsoxseg3.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
12314   ret void
12317 define void @test_vsoxseg3_mask_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12318 ; CHECK-LABEL: test_vsoxseg3_mask_nxv2f16_nxv2i16:
12319 ; CHECK:       # %bb.0: # %entry
12320 ; CHECK-NEXT:    vmv1r.v v10, v8
12321 ; CHECK-NEXT:    vmv1r.v v11, v8
12322 ; CHECK-NEXT:    vmv1r.v v12, v8
12323 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12324 ; CHECK-NEXT:    vsoxseg3ei16.v v10, (a0), v9, v0.t
12325 ; CHECK-NEXT:    ret
12326 entry:
12327   tail call void @llvm.riscv.vsoxseg3.mask.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
12328   ret void
12331 declare void @llvm.riscv.vsoxseg4.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, i32)
12332 declare void @llvm.riscv.vsoxseg4.mask.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
12334 define void @test_vsoxseg4_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
12335 ; CHECK-LABEL: test_vsoxseg4_nxv2f16_nxv2i32:
12336 ; CHECK:       # %bb.0: # %entry
12337 ; CHECK-NEXT:    vmv1r.v v10, v8
12338 ; CHECK-NEXT:    vmv1r.v v11, v8
12339 ; CHECK-NEXT:    vmv1r.v v12, v8
12340 ; CHECK-NEXT:    vmv1r.v v13, v8
12341 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12342 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9
12343 ; CHECK-NEXT:    ret
12344 entry:
12345   tail call void @llvm.riscv.vsoxseg4.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
12346   ret void
12349 define void @test_vsoxseg4_mask_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12350 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2f16_nxv2i32:
12351 ; CHECK:       # %bb.0: # %entry
12352 ; CHECK-NEXT:    vmv1r.v v10, v8
12353 ; CHECK-NEXT:    vmv1r.v v11, v8
12354 ; CHECK-NEXT:    vmv1r.v v12, v8
12355 ; CHECK-NEXT:    vmv1r.v v13, v8
12356 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12357 ; CHECK-NEXT:    vsoxseg4ei32.v v10, (a0), v9, v0.t
12358 ; CHECK-NEXT:    ret
12359 entry:
12360   tail call void @llvm.riscv.vsoxseg4.mask.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
12361   ret void
12364 declare void @llvm.riscv.vsoxseg4.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, i32)
12365 declare void @llvm.riscv.vsoxseg4.mask.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
12367 define void @test_vsoxseg4_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
12368 ; CHECK-LABEL: test_vsoxseg4_nxv2f16_nxv2i8:
12369 ; CHECK:       # %bb.0: # %entry
12370 ; CHECK-NEXT:    vmv1r.v v10, v8
12371 ; CHECK-NEXT:    vmv1r.v v11, v8
12372 ; CHECK-NEXT:    vmv1r.v v12, v8
12373 ; CHECK-NEXT:    vmv1r.v v13, v8
12374 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12375 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9
12376 ; CHECK-NEXT:    ret
12377 entry:
12378   tail call void @llvm.riscv.vsoxseg4.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
12379   ret void
12382 define void @test_vsoxseg4_mask_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12383 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2f16_nxv2i8:
12384 ; CHECK:       # %bb.0: # %entry
12385 ; CHECK-NEXT:    vmv1r.v v10, v8
12386 ; CHECK-NEXT:    vmv1r.v v11, v8
12387 ; CHECK-NEXT:    vmv1r.v v12, v8
12388 ; CHECK-NEXT:    vmv1r.v v13, v8
12389 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12390 ; CHECK-NEXT:    vsoxseg4ei8.v v10, (a0), v9, v0.t
12391 ; CHECK-NEXT:    ret
12392 entry:
12393   tail call void @llvm.riscv.vsoxseg4.mask.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
12394   ret void
12397 declare void @llvm.riscv.vsoxseg4.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, i32)
12398 declare void @llvm.riscv.vsoxseg4.mask.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
12400 define void @test_vsoxseg4_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
12401 ; CHECK-LABEL: test_vsoxseg4_nxv2f16_nxv2i16:
12402 ; CHECK:       # %bb.0: # %entry
12403 ; CHECK-NEXT:    vmv1r.v v10, v8
12404 ; CHECK-NEXT:    vmv1r.v v11, v8
12405 ; CHECK-NEXT:    vmv1r.v v12, v8
12406 ; CHECK-NEXT:    vmv1r.v v13, v8
12407 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12408 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9
12409 ; CHECK-NEXT:    ret
12410 entry:
12411   tail call void @llvm.riscv.vsoxseg4.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
12412   ret void
12415 define void @test_vsoxseg4_mask_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12416 ; CHECK-LABEL: test_vsoxseg4_mask_nxv2f16_nxv2i16:
12417 ; CHECK:       # %bb.0: # %entry
12418 ; CHECK-NEXT:    vmv1r.v v10, v8
12419 ; CHECK-NEXT:    vmv1r.v v11, v8
12420 ; CHECK-NEXT:    vmv1r.v v12, v8
12421 ; CHECK-NEXT:    vmv1r.v v13, v8
12422 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12423 ; CHECK-NEXT:    vsoxseg4ei16.v v10, (a0), v9, v0.t
12424 ; CHECK-NEXT:    ret
12425 entry:
12426   tail call void @llvm.riscv.vsoxseg4.mask.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
12427   ret void
12430 declare void @llvm.riscv.vsoxseg5.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, i32)
12431 declare void @llvm.riscv.vsoxseg5.mask.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
12433 define void @test_vsoxseg5_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
12434 ; CHECK-LABEL: test_vsoxseg5_nxv2f16_nxv2i32:
12435 ; CHECK:       # %bb.0: # %entry
12436 ; CHECK-NEXT:    vmv1r.v v10, v8
12437 ; CHECK-NEXT:    vmv1r.v v11, v8
12438 ; CHECK-NEXT:    vmv1r.v v12, v8
12439 ; CHECK-NEXT:    vmv1r.v v13, v8
12440 ; CHECK-NEXT:    vmv1r.v v14, v8
12441 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12442 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9
12443 ; CHECK-NEXT:    ret
12444 entry:
12445   tail call void @llvm.riscv.vsoxseg5.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
12446   ret void
12449 define void @test_vsoxseg5_mask_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12450 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2f16_nxv2i32:
12451 ; CHECK:       # %bb.0: # %entry
12452 ; CHECK-NEXT:    vmv1r.v v10, v8
12453 ; CHECK-NEXT:    vmv1r.v v11, v8
12454 ; CHECK-NEXT:    vmv1r.v v12, v8
12455 ; CHECK-NEXT:    vmv1r.v v13, v8
12456 ; CHECK-NEXT:    vmv1r.v v14, v8
12457 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12458 ; CHECK-NEXT:    vsoxseg5ei32.v v10, (a0), v9, v0.t
12459 ; CHECK-NEXT:    ret
12460 entry:
12461   tail call void @llvm.riscv.vsoxseg5.mask.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
12462   ret void
12465 declare void @llvm.riscv.vsoxseg5.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, i32)
12466 declare void @llvm.riscv.vsoxseg5.mask.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
12468 define void @test_vsoxseg5_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
12469 ; CHECK-LABEL: test_vsoxseg5_nxv2f16_nxv2i8:
12470 ; CHECK:       # %bb.0: # %entry
12471 ; CHECK-NEXT:    vmv1r.v v10, v8
12472 ; CHECK-NEXT:    vmv1r.v v11, v8
12473 ; CHECK-NEXT:    vmv1r.v v12, v8
12474 ; CHECK-NEXT:    vmv1r.v v13, v8
12475 ; CHECK-NEXT:    vmv1r.v v14, v8
12476 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12477 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9
12478 ; CHECK-NEXT:    ret
12479 entry:
12480   tail call void @llvm.riscv.vsoxseg5.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
12481   ret void
12484 define void @test_vsoxseg5_mask_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12485 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2f16_nxv2i8:
12486 ; CHECK:       # %bb.0: # %entry
12487 ; CHECK-NEXT:    vmv1r.v v10, v8
12488 ; CHECK-NEXT:    vmv1r.v v11, v8
12489 ; CHECK-NEXT:    vmv1r.v v12, v8
12490 ; CHECK-NEXT:    vmv1r.v v13, v8
12491 ; CHECK-NEXT:    vmv1r.v v14, v8
12492 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12493 ; CHECK-NEXT:    vsoxseg5ei8.v v10, (a0), v9, v0.t
12494 ; CHECK-NEXT:    ret
12495 entry:
12496   tail call void @llvm.riscv.vsoxseg5.mask.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
12497   ret void
12500 declare void @llvm.riscv.vsoxseg5.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, i32)
12501 declare void @llvm.riscv.vsoxseg5.mask.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
12503 define void @test_vsoxseg5_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
12504 ; CHECK-LABEL: test_vsoxseg5_nxv2f16_nxv2i16:
12505 ; CHECK:       # %bb.0: # %entry
12506 ; CHECK-NEXT:    vmv1r.v v10, v8
12507 ; CHECK-NEXT:    vmv1r.v v11, v8
12508 ; CHECK-NEXT:    vmv1r.v v12, v8
12509 ; CHECK-NEXT:    vmv1r.v v13, v8
12510 ; CHECK-NEXT:    vmv1r.v v14, v8
12511 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12512 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9
12513 ; CHECK-NEXT:    ret
12514 entry:
12515   tail call void @llvm.riscv.vsoxseg5.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
12516   ret void
12519 define void @test_vsoxseg5_mask_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12520 ; CHECK-LABEL: test_vsoxseg5_mask_nxv2f16_nxv2i16:
12521 ; CHECK:       # %bb.0: # %entry
12522 ; CHECK-NEXT:    vmv1r.v v10, v8
12523 ; CHECK-NEXT:    vmv1r.v v11, v8
12524 ; CHECK-NEXT:    vmv1r.v v12, v8
12525 ; CHECK-NEXT:    vmv1r.v v13, v8
12526 ; CHECK-NEXT:    vmv1r.v v14, v8
12527 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12528 ; CHECK-NEXT:    vsoxseg5ei16.v v10, (a0), v9, v0.t
12529 ; CHECK-NEXT:    ret
12530 entry:
12531   tail call void @llvm.riscv.vsoxseg5.mask.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
12532   ret void
12535 declare void @llvm.riscv.vsoxseg6.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, i32)
12536 declare void @llvm.riscv.vsoxseg6.mask.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
12538 define void @test_vsoxseg6_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
12539 ; CHECK-LABEL: test_vsoxseg6_nxv2f16_nxv2i32:
12540 ; CHECK:       # %bb.0: # %entry
12541 ; CHECK-NEXT:    vmv1r.v v10, v8
12542 ; CHECK-NEXT:    vmv1r.v v11, v8
12543 ; CHECK-NEXT:    vmv1r.v v12, v8
12544 ; CHECK-NEXT:    vmv1r.v v13, v8
12545 ; CHECK-NEXT:    vmv1r.v v14, v8
12546 ; CHECK-NEXT:    vmv1r.v v15, v8
12547 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12548 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9
12549 ; CHECK-NEXT:    ret
12550 entry:
12551   tail call void @llvm.riscv.vsoxseg6.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
12552   ret void
12555 define void @test_vsoxseg6_mask_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12556 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2f16_nxv2i32:
12557 ; CHECK:       # %bb.0: # %entry
12558 ; CHECK-NEXT:    vmv1r.v v10, v8
12559 ; CHECK-NEXT:    vmv1r.v v11, v8
12560 ; CHECK-NEXT:    vmv1r.v v12, v8
12561 ; CHECK-NEXT:    vmv1r.v v13, v8
12562 ; CHECK-NEXT:    vmv1r.v v14, v8
12563 ; CHECK-NEXT:    vmv1r.v v15, v8
12564 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12565 ; CHECK-NEXT:    vsoxseg6ei32.v v10, (a0), v9, v0.t
12566 ; CHECK-NEXT:    ret
12567 entry:
12568   tail call void @llvm.riscv.vsoxseg6.mask.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
12569   ret void
12572 declare void @llvm.riscv.vsoxseg6.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, i32)
12573 declare void @llvm.riscv.vsoxseg6.mask.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
12575 define void @test_vsoxseg6_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
12576 ; CHECK-LABEL: test_vsoxseg6_nxv2f16_nxv2i8:
12577 ; CHECK:       # %bb.0: # %entry
12578 ; CHECK-NEXT:    vmv1r.v v10, v8
12579 ; CHECK-NEXT:    vmv1r.v v11, v8
12580 ; CHECK-NEXT:    vmv1r.v v12, v8
12581 ; CHECK-NEXT:    vmv1r.v v13, v8
12582 ; CHECK-NEXT:    vmv1r.v v14, v8
12583 ; CHECK-NEXT:    vmv1r.v v15, v8
12584 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12585 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9
12586 ; CHECK-NEXT:    ret
12587 entry:
12588   tail call void @llvm.riscv.vsoxseg6.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
12589   ret void
12592 define void @test_vsoxseg6_mask_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12593 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2f16_nxv2i8:
12594 ; CHECK:       # %bb.0: # %entry
12595 ; CHECK-NEXT:    vmv1r.v v10, v8
12596 ; CHECK-NEXT:    vmv1r.v v11, v8
12597 ; CHECK-NEXT:    vmv1r.v v12, v8
12598 ; CHECK-NEXT:    vmv1r.v v13, v8
12599 ; CHECK-NEXT:    vmv1r.v v14, v8
12600 ; CHECK-NEXT:    vmv1r.v v15, v8
12601 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12602 ; CHECK-NEXT:    vsoxseg6ei8.v v10, (a0), v9, v0.t
12603 ; CHECK-NEXT:    ret
12604 entry:
12605   tail call void @llvm.riscv.vsoxseg6.mask.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
12606   ret void
12609 declare void @llvm.riscv.vsoxseg6.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, i32)
12610 declare void @llvm.riscv.vsoxseg6.mask.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
12612 define void @test_vsoxseg6_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
12613 ; CHECK-LABEL: test_vsoxseg6_nxv2f16_nxv2i16:
12614 ; CHECK:       # %bb.0: # %entry
12615 ; CHECK-NEXT:    vmv1r.v v10, v8
12616 ; CHECK-NEXT:    vmv1r.v v11, v8
12617 ; CHECK-NEXT:    vmv1r.v v12, v8
12618 ; CHECK-NEXT:    vmv1r.v v13, v8
12619 ; CHECK-NEXT:    vmv1r.v v14, v8
12620 ; CHECK-NEXT:    vmv1r.v v15, v8
12621 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12622 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9
12623 ; CHECK-NEXT:    ret
12624 entry:
12625   tail call void @llvm.riscv.vsoxseg6.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
12626   ret void
12629 define void @test_vsoxseg6_mask_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12630 ; CHECK-LABEL: test_vsoxseg6_mask_nxv2f16_nxv2i16:
12631 ; CHECK:       # %bb.0: # %entry
12632 ; CHECK-NEXT:    vmv1r.v v10, v8
12633 ; CHECK-NEXT:    vmv1r.v v11, v8
12634 ; CHECK-NEXT:    vmv1r.v v12, v8
12635 ; CHECK-NEXT:    vmv1r.v v13, v8
12636 ; CHECK-NEXT:    vmv1r.v v14, v8
12637 ; CHECK-NEXT:    vmv1r.v v15, v8
12638 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12639 ; CHECK-NEXT:    vsoxseg6ei16.v v10, (a0), v9, v0.t
12640 ; CHECK-NEXT:    ret
12641 entry:
12642   tail call void @llvm.riscv.vsoxseg6.mask.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
12643   ret void
12646 declare void @llvm.riscv.vsoxseg7.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, i32)
12647 declare void @llvm.riscv.vsoxseg7.mask.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
12649 define void @test_vsoxseg7_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
12650 ; CHECK-LABEL: test_vsoxseg7_nxv2f16_nxv2i32:
12651 ; CHECK:       # %bb.0: # %entry
12652 ; CHECK-NEXT:    vmv1r.v v10, v8
12653 ; CHECK-NEXT:    vmv1r.v v11, v8
12654 ; CHECK-NEXT:    vmv1r.v v12, v8
12655 ; CHECK-NEXT:    vmv1r.v v13, v8
12656 ; CHECK-NEXT:    vmv1r.v v14, v8
12657 ; CHECK-NEXT:    vmv1r.v v15, v8
12658 ; CHECK-NEXT:    vmv1r.v v16, v8
12659 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12660 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9
12661 ; CHECK-NEXT:    ret
12662 entry:
12663   tail call void @llvm.riscv.vsoxseg7.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
12664   ret void
12667 define void @test_vsoxseg7_mask_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12668 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2f16_nxv2i32:
12669 ; CHECK:       # %bb.0: # %entry
12670 ; CHECK-NEXT:    vmv1r.v v10, v8
12671 ; CHECK-NEXT:    vmv1r.v v11, v8
12672 ; CHECK-NEXT:    vmv1r.v v12, v8
12673 ; CHECK-NEXT:    vmv1r.v v13, v8
12674 ; CHECK-NEXT:    vmv1r.v v14, v8
12675 ; CHECK-NEXT:    vmv1r.v v15, v8
12676 ; CHECK-NEXT:    vmv1r.v v16, v8
12677 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12678 ; CHECK-NEXT:    vsoxseg7ei32.v v10, (a0), v9, v0.t
12679 ; CHECK-NEXT:    ret
12680 entry:
12681   tail call void @llvm.riscv.vsoxseg7.mask.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
12682   ret void
12685 declare void @llvm.riscv.vsoxseg7.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, i32)
12686 declare void @llvm.riscv.vsoxseg7.mask.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
12688 define void @test_vsoxseg7_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
12689 ; CHECK-LABEL: test_vsoxseg7_nxv2f16_nxv2i8:
12690 ; CHECK:       # %bb.0: # %entry
12691 ; CHECK-NEXT:    vmv1r.v v10, v8
12692 ; CHECK-NEXT:    vmv1r.v v11, v8
12693 ; CHECK-NEXT:    vmv1r.v v12, v8
12694 ; CHECK-NEXT:    vmv1r.v v13, v8
12695 ; CHECK-NEXT:    vmv1r.v v14, v8
12696 ; CHECK-NEXT:    vmv1r.v v15, v8
12697 ; CHECK-NEXT:    vmv1r.v v16, v8
12698 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12699 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9
12700 ; CHECK-NEXT:    ret
12701 entry:
12702   tail call void @llvm.riscv.vsoxseg7.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
12703   ret void
12706 define void @test_vsoxseg7_mask_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12707 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2f16_nxv2i8:
12708 ; CHECK:       # %bb.0: # %entry
12709 ; CHECK-NEXT:    vmv1r.v v10, v8
12710 ; CHECK-NEXT:    vmv1r.v v11, v8
12711 ; CHECK-NEXT:    vmv1r.v v12, v8
12712 ; CHECK-NEXT:    vmv1r.v v13, v8
12713 ; CHECK-NEXT:    vmv1r.v v14, v8
12714 ; CHECK-NEXT:    vmv1r.v v15, v8
12715 ; CHECK-NEXT:    vmv1r.v v16, v8
12716 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12717 ; CHECK-NEXT:    vsoxseg7ei8.v v10, (a0), v9, v0.t
12718 ; CHECK-NEXT:    ret
12719 entry:
12720   tail call void @llvm.riscv.vsoxseg7.mask.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
12721   ret void
12724 declare void @llvm.riscv.vsoxseg7.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, i32)
12725 declare void @llvm.riscv.vsoxseg7.mask.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
12727 define void @test_vsoxseg7_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
12728 ; CHECK-LABEL: test_vsoxseg7_nxv2f16_nxv2i16:
12729 ; CHECK:       # %bb.0: # %entry
12730 ; CHECK-NEXT:    vmv1r.v v10, v8
12731 ; CHECK-NEXT:    vmv1r.v v11, v8
12732 ; CHECK-NEXT:    vmv1r.v v12, v8
12733 ; CHECK-NEXT:    vmv1r.v v13, v8
12734 ; CHECK-NEXT:    vmv1r.v v14, v8
12735 ; CHECK-NEXT:    vmv1r.v v15, v8
12736 ; CHECK-NEXT:    vmv1r.v v16, v8
12737 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12738 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9
12739 ; CHECK-NEXT:    ret
12740 entry:
12741   tail call void @llvm.riscv.vsoxseg7.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
12742   ret void
12745 define void @test_vsoxseg7_mask_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12746 ; CHECK-LABEL: test_vsoxseg7_mask_nxv2f16_nxv2i16:
12747 ; CHECK:       # %bb.0: # %entry
12748 ; CHECK-NEXT:    vmv1r.v v10, v8
12749 ; CHECK-NEXT:    vmv1r.v v11, v8
12750 ; CHECK-NEXT:    vmv1r.v v12, v8
12751 ; CHECK-NEXT:    vmv1r.v v13, v8
12752 ; CHECK-NEXT:    vmv1r.v v14, v8
12753 ; CHECK-NEXT:    vmv1r.v v15, v8
12754 ; CHECK-NEXT:    vmv1r.v v16, v8
12755 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12756 ; CHECK-NEXT:    vsoxseg7ei16.v v10, (a0), v9, v0.t
12757 ; CHECK-NEXT:    ret
12758 entry:
12759   tail call void @llvm.riscv.vsoxseg7.mask.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
12760   ret void
12763 declare void @llvm.riscv.vsoxseg8.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, i32)
12764 declare void @llvm.riscv.vsoxseg8.mask.nxv2f16.nxv2i32(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
12766 define void @test_vsoxseg8_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl) {
12767 ; CHECK-LABEL: test_vsoxseg8_nxv2f16_nxv2i32:
12768 ; CHECK:       # %bb.0: # %entry
12769 ; CHECK-NEXT:    vmv1r.v v10, v8
12770 ; CHECK-NEXT:    vmv1r.v v11, v8
12771 ; CHECK-NEXT:    vmv1r.v v12, v8
12772 ; CHECK-NEXT:    vmv1r.v v13, v8
12773 ; CHECK-NEXT:    vmv1r.v v14, v8
12774 ; CHECK-NEXT:    vmv1r.v v15, v8
12775 ; CHECK-NEXT:    vmv1r.v v16, v8
12776 ; CHECK-NEXT:    vmv1r.v v17, v8
12777 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12778 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9
12779 ; CHECK-NEXT:    ret
12780 entry:
12781   tail call void @llvm.riscv.vsoxseg8.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, i32 %vl)
12782   ret void
12785 define void @test_vsoxseg8_mask_nxv2f16_nxv2i32(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12786 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2f16_nxv2i32:
12787 ; CHECK:       # %bb.0: # %entry
12788 ; CHECK-NEXT:    vmv1r.v v10, v8
12789 ; CHECK-NEXT:    vmv1r.v v11, v8
12790 ; CHECK-NEXT:    vmv1r.v v12, v8
12791 ; CHECK-NEXT:    vmv1r.v v13, v8
12792 ; CHECK-NEXT:    vmv1r.v v14, v8
12793 ; CHECK-NEXT:    vmv1r.v v15, v8
12794 ; CHECK-NEXT:    vmv1r.v v16, v8
12795 ; CHECK-NEXT:    vmv1r.v v17, v8
12796 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12797 ; CHECK-NEXT:    vsoxseg8ei32.v v10, (a0), v9, v0.t
12798 ; CHECK-NEXT:    ret
12799 entry:
12800   tail call void @llvm.riscv.vsoxseg8.mask.nxv2f16.nxv2i32(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i32> %index, <vscale x 2 x i1> %mask, i32 %vl)
12801   ret void
12804 declare void @llvm.riscv.vsoxseg8.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, i32)
12805 declare void @llvm.riscv.vsoxseg8.mask.nxv2f16.nxv2i8(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
12807 define void @test_vsoxseg8_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl) {
12808 ; CHECK-LABEL: test_vsoxseg8_nxv2f16_nxv2i8:
12809 ; CHECK:       # %bb.0: # %entry
12810 ; CHECK-NEXT:    vmv1r.v v10, v8
12811 ; CHECK-NEXT:    vmv1r.v v11, v8
12812 ; CHECK-NEXT:    vmv1r.v v12, v8
12813 ; CHECK-NEXT:    vmv1r.v v13, v8
12814 ; CHECK-NEXT:    vmv1r.v v14, v8
12815 ; CHECK-NEXT:    vmv1r.v v15, v8
12816 ; CHECK-NEXT:    vmv1r.v v16, v8
12817 ; CHECK-NEXT:    vmv1r.v v17, v8
12818 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12819 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9
12820 ; CHECK-NEXT:    ret
12821 entry:
12822   tail call void @llvm.riscv.vsoxseg8.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, i32 %vl)
12823   ret void
12826 define void @test_vsoxseg8_mask_nxv2f16_nxv2i8(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12827 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2f16_nxv2i8:
12828 ; CHECK:       # %bb.0: # %entry
12829 ; CHECK-NEXT:    vmv1r.v v10, v8
12830 ; CHECK-NEXT:    vmv1r.v v11, v8
12831 ; CHECK-NEXT:    vmv1r.v v12, v8
12832 ; CHECK-NEXT:    vmv1r.v v13, v8
12833 ; CHECK-NEXT:    vmv1r.v v14, v8
12834 ; CHECK-NEXT:    vmv1r.v v15, v8
12835 ; CHECK-NEXT:    vmv1r.v v16, v8
12836 ; CHECK-NEXT:    vmv1r.v v17, v8
12837 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12838 ; CHECK-NEXT:    vsoxseg8ei8.v v10, (a0), v9, v0.t
12839 ; CHECK-NEXT:    ret
12840 entry:
12841   tail call void @llvm.riscv.vsoxseg8.mask.nxv2f16.nxv2i8(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i8> %index, <vscale x 2 x i1> %mask, i32 %vl)
12842   ret void
12845 declare void @llvm.riscv.vsoxseg8.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, i32)
12846 declare void @llvm.riscv.vsoxseg8.mask.nxv2f16.nxv2i16(<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>,<vscale x 2 x half>, ptr, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
12848 define void @test_vsoxseg8_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl) {
12849 ; CHECK-LABEL: test_vsoxseg8_nxv2f16_nxv2i16:
12850 ; CHECK:       # %bb.0: # %entry
12851 ; CHECK-NEXT:    vmv1r.v v10, v8
12852 ; CHECK-NEXT:    vmv1r.v v11, v8
12853 ; CHECK-NEXT:    vmv1r.v v12, v8
12854 ; CHECK-NEXT:    vmv1r.v v13, v8
12855 ; CHECK-NEXT:    vmv1r.v v14, v8
12856 ; CHECK-NEXT:    vmv1r.v v15, v8
12857 ; CHECK-NEXT:    vmv1r.v v16, v8
12858 ; CHECK-NEXT:    vmv1r.v v17, v8
12859 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12860 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9
12861 ; CHECK-NEXT:    ret
12862 entry:
12863   tail call void @llvm.riscv.vsoxseg8.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, i32 %vl)
12864   ret void
12867 define void @test_vsoxseg8_mask_nxv2f16_nxv2i16(<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl) {
12868 ; CHECK-LABEL: test_vsoxseg8_mask_nxv2f16_nxv2i16:
12869 ; CHECK:       # %bb.0: # %entry
12870 ; CHECK-NEXT:    vmv1r.v v10, v8
12871 ; CHECK-NEXT:    vmv1r.v v11, v8
12872 ; CHECK-NEXT:    vmv1r.v v12, v8
12873 ; CHECK-NEXT:    vmv1r.v v13, v8
12874 ; CHECK-NEXT:    vmv1r.v v14, v8
12875 ; CHECK-NEXT:    vmv1r.v v15, v8
12876 ; CHECK-NEXT:    vmv1r.v v16, v8
12877 ; CHECK-NEXT:    vmv1r.v v17, v8
12878 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
12879 ; CHECK-NEXT:    vsoxseg8ei16.v v10, (a0), v9, v0.t
12880 ; CHECK-NEXT:    ret
12881 entry:
12882   tail call void @llvm.riscv.vsoxseg8.mask.nxv2f16.nxv2i16(<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val,<vscale x 2 x half> %val, ptr %base, <vscale x 2 x i16> %index, <vscale x 2 x i1> %mask, i32 %vl)
12883   ret void
12886 declare void @llvm.riscv.vsoxseg2.nxv4f32.nxv4i16(<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i16>, i32)
12887 declare void @llvm.riscv.vsoxseg2.mask.nxv4f32.nxv4i16(<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
12889 define void @test_vsoxseg2_nxv4f32_nxv4i16(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
12890 ; CHECK-LABEL: test_vsoxseg2_nxv4f32_nxv4i16:
12891 ; CHECK:       # %bb.0: # %entry
12892 ; CHECK-NEXT:    vmv1r.v v12, v10
12893 ; CHECK-NEXT:    vmv2r.v v10, v8
12894 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
12895 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v12
12896 ; CHECK-NEXT:    ret
12897 entry:
12898   tail call void @llvm.riscv.vsoxseg2.nxv4f32.nxv4i16(<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
12899   ret void
12902 define void @test_vsoxseg2_mask_nxv4f32_nxv4i16(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
12903 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4f32_nxv4i16:
12904 ; CHECK:       # %bb.0: # %entry
12905 ; CHECK-NEXT:    vmv1r.v v12, v10
12906 ; CHECK-NEXT:    vmv2r.v v10, v8
12907 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
12908 ; CHECK-NEXT:    vsoxseg2ei16.v v8, (a0), v12, v0.t
12909 ; CHECK-NEXT:    ret
12910 entry:
12911   tail call void @llvm.riscv.vsoxseg2.mask.nxv4f32.nxv4i16(<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
12912   ret void
12915 declare void @llvm.riscv.vsoxseg2.nxv4f32.nxv4i8(<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i8>, i32)
12916 declare void @llvm.riscv.vsoxseg2.mask.nxv4f32.nxv4i8(<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
12918 define void @test_vsoxseg2_nxv4f32_nxv4i8(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
12919 ; CHECK-LABEL: test_vsoxseg2_nxv4f32_nxv4i8:
12920 ; CHECK:       # %bb.0: # %entry
12921 ; CHECK-NEXT:    vmv1r.v v12, v10
12922 ; CHECK-NEXT:    vmv2r.v v10, v8
12923 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
12924 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v12
12925 ; CHECK-NEXT:    ret
12926 entry:
12927   tail call void @llvm.riscv.vsoxseg2.nxv4f32.nxv4i8(<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
12928   ret void
12931 define void @test_vsoxseg2_mask_nxv4f32_nxv4i8(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
12932 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4f32_nxv4i8:
12933 ; CHECK:       # %bb.0: # %entry
12934 ; CHECK-NEXT:    vmv1r.v v12, v10
12935 ; CHECK-NEXT:    vmv2r.v v10, v8
12936 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
12937 ; CHECK-NEXT:    vsoxseg2ei8.v v8, (a0), v12, v0.t
12938 ; CHECK-NEXT:    ret
12939 entry:
12940   tail call void @llvm.riscv.vsoxseg2.mask.nxv4f32.nxv4i8(<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
12941   ret void
12944 declare void @llvm.riscv.vsoxseg2.nxv4f32.nxv4i32(<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i32>, i32)
12945 declare void @llvm.riscv.vsoxseg2.mask.nxv4f32.nxv4i32(<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
12947 define void @test_vsoxseg2_nxv4f32_nxv4i32(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
12948 ; CHECK-LABEL: test_vsoxseg2_nxv4f32_nxv4i32:
12949 ; CHECK:       # %bb.0: # %entry
12950 ; CHECK-NEXT:    vmv2r.v v12, v10
12951 ; CHECK-NEXT:    vmv2r.v v10, v8
12952 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
12953 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v12
12954 ; CHECK-NEXT:    ret
12955 entry:
12956   tail call void @llvm.riscv.vsoxseg2.nxv4f32.nxv4i32(<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
12957   ret void
12960 define void @test_vsoxseg2_mask_nxv4f32_nxv4i32(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
12961 ; CHECK-LABEL: test_vsoxseg2_mask_nxv4f32_nxv4i32:
12962 ; CHECK:       # %bb.0: # %entry
12963 ; CHECK-NEXT:    vmv2r.v v12, v10
12964 ; CHECK-NEXT:    vmv2r.v v10, v8
12965 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
12966 ; CHECK-NEXT:    vsoxseg2ei32.v v8, (a0), v12, v0.t
12967 ; CHECK-NEXT:    ret
12968 entry:
12969   tail call void @llvm.riscv.vsoxseg2.mask.nxv4f32.nxv4i32(<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
12970   ret void
12973 declare void @llvm.riscv.vsoxseg3.nxv4f32.nxv4i16(<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i16>, i32)
12974 declare void @llvm.riscv.vsoxseg3.mask.nxv4f32.nxv4i16(<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
12976 define void @test_vsoxseg3_nxv4f32_nxv4i16(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
12977 ; CHECK-LABEL: test_vsoxseg3_nxv4f32_nxv4i16:
12978 ; CHECK:       # %bb.0: # %entry
12979 ; CHECK-NEXT:    vmv2r.v v12, v8
12980 ; CHECK-NEXT:    vmv2r.v v14, v8
12981 ; CHECK-NEXT:    vmv2r.v v16, v8
12982 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
12983 ; CHECK-NEXT:    vsoxseg3ei16.v v12, (a0), v10
12984 ; CHECK-NEXT:    ret
12985 entry:
12986   tail call void @llvm.riscv.vsoxseg3.nxv4f32.nxv4i16(<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
12987   ret void
12990 define void @test_vsoxseg3_mask_nxv4f32_nxv4i16(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
12991 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4f32_nxv4i16:
12992 ; CHECK:       # %bb.0: # %entry
12993 ; CHECK-NEXT:    vmv2r.v v12, v8
12994 ; CHECK-NEXT:    vmv2r.v v14, v8
12995 ; CHECK-NEXT:    vmv2r.v v16, v8
12996 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
12997 ; CHECK-NEXT:    vsoxseg3ei16.v v12, (a0), v10, v0.t
12998 ; CHECK-NEXT:    ret
12999 entry:
13000   tail call void @llvm.riscv.vsoxseg3.mask.nxv4f32.nxv4i16(<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
13001   ret void
13004 declare void @llvm.riscv.vsoxseg3.nxv4f32.nxv4i8(<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i8>, i32)
13005 declare void @llvm.riscv.vsoxseg3.mask.nxv4f32.nxv4i8(<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
13007 define void @test_vsoxseg3_nxv4f32_nxv4i8(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
13008 ; CHECK-LABEL: test_vsoxseg3_nxv4f32_nxv4i8:
13009 ; CHECK:       # %bb.0: # %entry
13010 ; CHECK-NEXT:    vmv2r.v v12, v8
13011 ; CHECK-NEXT:    vmv2r.v v14, v8
13012 ; CHECK-NEXT:    vmv2r.v v16, v8
13013 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
13014 ; CHECK-NEXT:    vsoxseg3ei8.v v12, (a0), v10
13015 ; CHECK-NEXT:    ret
13016 entry:
13017   tail call void @llvm.riscv.vsoxseg3.nxv4f32.nxv4i8(<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
13018   ret void
13021 define void @test_vsoxseg3_mask_nxv4f32_nxv4i8(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
13022 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4f32_nxv4i8:
13023 ; CHECK:       # %bb.0: # %entry
13024 ; CHECK-NEXT:    vmv2r.v v12, v8
13025 ; CHECK-NEXT:    vmv2r.v v14, v8
13026 ; CHECK-NEXT:    vmv2r.v v16, v8
13027 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
13028 ; CHECK-NEXT:    vsoxseg3ei8.v v12, (a0), v10, v0.t
13029 ; CHECK-NEXT:    ret
13030 entry:
13031   tail call void @llvm.riscv.vsoxseg3.mask.nxv4f32.nxv4i8(<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
13032   ret void
13035 declare void @llvm.riscv.vsoxseg3.nxv4f32.nxv4i32(<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i32>, i32)
13036 declare void @llvm.riscv.vsoxseg3.mask.nxv4f32.nxv4i32(<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
13038 define void @test_vsoxseg3_nxv4f32_nxv4i32(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
13039 ; CHECK-LABEL: test_vsoxseg3_nxv4f32_nxv4i32:
13040 ; CHECK:       # %bb.0: # %entry
13041 ; CHECK-NEXT:    vmv2r.v v12, v8
13042 ; CHECK-NEXT:    vmv2r.v v14, v8
13043 ; CHECK-NEXT:    vmv2r.v v16, v8
13044 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
13045 ; CHECK-NEXT:    vsoxseg3ei32.v v12, (a0), v10
13046 ; CHECK-NEXT:    ret
13047 entry:
13048   tail call void @llvm.riscv.vsoxseg3.nxv4f32.nxv4i32(<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
13049   ret void
13052 define void @test_vsoxseg3_mask_nxv4f32_nxv4i32(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
13053 ; CHECK-LABEL: test_vsoxseg3_mask_nxv4f32_nxv4i32:
13054 ; CHECK:       # %bb.0: # %entry
13055 ; CHECK-NEXT:    vmv2r.v v12, v8
13056 ; CHECK-NEXT:    vmv2r.v v14, v8
13057 ; CHECK-NEXT:    vmv2r.v v16, v8
13058 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
13059 ; CHECK-NEXT:    vsoxseg3ei32.v v12, (a0), v10, v0.t
13060 ; CHECK-NEXT:    ret
13061 entry:
13062   tail call void @llvm.riscv.vsoxseg3.mask.nxv4f32.nxv4i32(<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
13063   ret void
13066 declare void @llvm.riscv.vsoxseg4.nxv4f32.nxv4i16(<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i16>, i32)
13067 declare void @llvm.riscv.vsoxseg4.mask.nxv4f32.nxv4i16(<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
13069 define void @test_vsoxseg4_nxv4f32_nxv4i16(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl) {
13070 ; CHECK-LABEL: test_vsoxseg4_nxv4f32_nxv4i16:
13071 ; CHECK:       # %bb.0: # %entry
13072 ; CHECK-NEXT:    vmv2r.v v12, v8
13073 ; CHECK-NEXT:    vmv2r.v v14, v8
13074 ; CHECK-NEXT:    vmv2r.v v16, v8
13075 ; CHECK-NEXT:    vmv2r.v v18, v8
13076 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
13077 ; CHECK-NEXT:    vsoxseg4ei16.v v12, (a0), v10
13078 ; CHECK-NEXT:    ret
13079 entry:
13080   tail call void @llvm.riscv.vsoxseg4.nxv4f32.nxv4i16(<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i16> %index, i32 %vl)
13081   ret void
13084 define void @test_vsoxseg4_mask_nxv4f32_nxv4i16(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl) {
13085 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4f32_nxv4i16:
13086 ; CHECK:       # %bb.0: # %entry
13087 ; CHECK-NEXT:    vmv2r.v v12, v8
13088 ; CHECK-NEXT:    vmv2r.v v14, v8
13089 ; CHECK-NEXT:    vmv2r.v v16, v8
13090 ; CHECK-NEXT:    vmv2r.v v18, v8
13091 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
13092 ; CHECK-NEXT:    vsoxseg4ei16.v v12, (a0), v10, v0.t
13093 ; CHECK-NEXT:    ret
13094 entry:
13095   tail call void @llvm.riscv.vsoxseg4.mask.nxv4f32.nxv4i16(<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i16> %index, <vscale x 4 x i1> %mask, i32 %vl)
13096   ret void
13099 declare void @llvm.riscv.vsoxseg4.nxv4f32.nxv4i8(<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i8>, i32)
13100 declare void @llvm.riscv.vsoxseg4.mask.nxv4f32.nxv4i8(<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
13102 define void @test_vsoxseg4_nxv4f32_nxv4i8(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl) {
13103 ; CHECK-LABEL: test_vsoxseg4_nxv4f32_nxv4i8:
13104 ; CHECK:       # %bb.0: # %entry
13105 ; CHECK-NEXT:    vmv2r.v v12, v8
13106 ; CHECK-NEXT:    vmv2r.v v14, v8
13107 ; CHECK-NEXT:    vmv2r.v v16, v8
13108 ; CHECK-NEXT:    vmv2r.v v18, v8
13109 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
13110 ; CHECK-NEXT:    vsoxseg4ei8.v v12, (a0), v10
13111 ; CHECK-NEXT:    ret
13112 entry:
13113   tail call void @llvm.riscv.vsoxseg4.nxv4f32.nxv4i8(<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i8> %index, i32 %vl)
13114   ret void
13117 define void @test_vsoxseg4_mask_nxv4f32_nxv4i8(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl) {
13118 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4f32_nxv4i8:
13119 ; CHECK:       # %bb.0: # %entry
13120 ; CHECK-NEXT:    vmv2r.v v12, v8
13121 ; CHECK-NEXT:    vmv2r.v v14, v8
13122 ; CHECK-NEXT:    vmv2r.v v16, v8
13123 ; CHECK-NEXT:    vmv2r.v v18, v8
13124 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
13125 ; CHECK-NEXT:    vsoxseg4ei8.v v12, (a0), v10, v0.t
13126 ; CHECK-NEXT:    ret
13127 entry:
13128   tail call void @llvm.riscv.vsoxseg4.mask.nxv4f32.nxv4i8(<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i8> %index, <vscale x 4 x i1> %mask, i32 %vl)
13129   ret void
13132 declare void @llvm.riscv.vsoxseg4.nxv4f32.nxv4i32(<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i32>, i32)
13133 declare void @llvm.riscv.vsoxseg4.mask.nxv4f32.nxv4i32(<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>,<vscale x 4 x float>, ptr, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
13135 define void @test_vsoxseg4_nxv4f32_nxv4i32(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl) {
13136 ; CHECK-LABEL: test_vsoxseg4_nxv4f32_nxv4i32:
13137 ; CHECK:       # %bb.0: # %entry
13138 ; CHECK-NEXT:    vmv2r.v v12, v8
13139 ; CHECK-NEXT:    vmv2r.v v14, v8
13140 ; CHECK-NEXT:    vmv2r.v v16, v8
13141 ; CHECK-NEXT:    vmv2r.v v18, v8
13142 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
13143 ; CHECK-NEXT:    vsoxseg4ei32.v v12, (a0), v10
13144 ; CHECK-NEXT:    ret
13145 entry:
13146   tail call void @llvm.riscv.vsoxseg4.nxv4f32.nxv4i32(<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i32> %index, i32 %vl)
13147   ret void
13150 define void @test_vsoxseg4_mask_nxv4f32_nxv4i32(<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl) {
13151 ; CHECK-LABEL: test_vsoxseg4_mask_nxv4f32_nxv4i32:
13152 ; CHECK:       # %bb.0: # %entry
13153 ; CHECK-NEXT:    vmv2r.v v12, v8
13154 ; CHECK-NEXT:    vmv2r.v v14, v8
13155 ; CHECK-NEXT:    vmv2r.v v16, v8
13156 ; CHECK-NEXT:    vmv2r.v v18, v8
13157 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
13158 ; CHECK-NEXT:    vsoxseg4ei32.v v12, (a0), v10, v0.t
13159 ; CHECK-NEXT:    ret
13160 entry:
13161   tail call void @llvm.riscv.vsoxseg4.mask.nxv4f32.nxv4i32(<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val,<vscale x 4 x float> %val, ptr %base, <vscale x 4 x i32> %index, <vscale x 4 x i1> %mask, i32 %vl)
13162   ret void