[rtsan] Add fork/execve interceptors (#117198)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vlsseg-rv64.ll
blob7b5421fba3dcc51bcfe57844192daa5cd8405be3
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv64 -mattr=+zve64d,+f,+d,+zvfh,+zvfbfmin \
3 ; RUN:     -verify-machineinstrs < %s | FileCheck %s
5 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv1i8_2t(target("riscv.vector.tuple", <vscale x 1 x i8>, 2), ptr, i64, i64, i64)
6 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv1i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 2), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
8 define <vscale x 1 x i8> @test_vlsseg2_nxv1i8_triscv.vector.tuple_nxv1i8_2t(ptr %base, i64 %offset, i64 %vl) {
9 ; CHECK-LABEL: test_vlsseg2_nxv1i8_triscv.vector.tuple_nxv1i8_2t:
10 ; CHECK:       # %bb.0: # %entry
11 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
12 ; CHECK-NEXT:    vlsseg2e8.v v7, (a0), a1
13 ; CHECK-NEXT:    ret
14 entry:
15   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv1i8_2t(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
16   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_2t(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) %0, i32 1)
17   ret <vscale x 1 x i8> %1
20 define <vscale x 1 x i8> @test_vlsseg2_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
21 ; CHECK-LABEL: test_vlsseg2_mask_nxv1i8_triscv.vector.tuple_nxv1i8_2t:
22 ; CHECK:       # %bb.0: # %entry
23 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
24 ; CHECK-NEXT:    vlsseg2e8.v v7, (a0), a1, v0.t
25 ; CHECK-NEXT:    ret
26 entry:
27   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv1i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)
28   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_2t(target("riscv.vector.tuple", <vscale x 1 x i8>, 2) %0, i32 1)
29   ret <vscale x 1 x i8> %1
32 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, i64, i64, i64)
33 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
35 define <vscale x 2 x i8> @test_vlsseg2_nxv2i8_triscv.vector.tuple_nxv2i8_2t(ptr %base, i64 %offset, i64 %vl) {
36 ; CHECK-LABEL: test_vlsseg2_nxv2i8_triscv.vector.tuple_nxv2i8_2t:
37 ; CHECK:       # %bb.0: # %entry
38 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
39 ; CHECK-NEXT:    vlsseg2e8.v v7, (a0), a1
40 ; CHECK-NEXT:    ret
41 entry:
42   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
43   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %0, i32 1)
44   ret <vscale x 2 x i8> %1
47 define <vscale x 2 x i8> @test_vlsseg2_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
48 ; CHECK-LABEL: test_vlsseg2_mask_nxv2i8_triscv.vector.tuple_nxv2i8_2t:
49 ; CHECK:       # %bb.0: # %entry
50 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
51 ; CHECK-NEXT:    vlsseg2e8.v v7, (a0), a1, v0.t
52 ; CHECK-NEXT:    ret
53 entry:
54   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)
55   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %0, i32 1)
56   ret <vscale x 2 x i8> %1
59 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, i64, i64, i64)
60 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
62 define <vscale x 4 x i8> @test_vlsseg2_nxv4i8_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %offset, i64 %vl) {
63 ; CHECK-LABEL: test_vlsseg2_nxv4i8_triscv.vector.tuple_nxv4i8_2t:
64 ; CHECK:       # %bb.0: # %entry
65 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
66 ; CHECK-NEXT:    vlsseg2e8.v v7, (a0), a1
67 ; CHECK-NEXT:    ret
68 entry:
69   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
70   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %0, i32 1)
71   ret <vscale x 4 x i8> %1
74 define <vscale x 4 x i8> @test_vlsseg2_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
75 ; CHECK-LABEL: test_vlsseg2_mask_nxv4i8_triscv.vector.tuple_nxv4i8_2t:
76 ; CHECK:       # %bb.0: # %entry
77 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
78 ; CHECK-NEXT:    vlsseg2e8.v v7, (a0), a1, v0.t
79 ; CHECK-NEXT:    ret
80 entry:
81   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)
82   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %0, i32 1)
83   ret <vscale x 4 x i8> %1
86 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, i64, i64, i64)
87 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, i64, <vscale x 8 x i1>, i64, i64, i64)
89 define <vscale x 8 x i8> @test_vlsseg2_nxv8i8_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl) {
90 ; CHECK-LABEL: test_vlsseg2_nxv8i8_triscv.vector.tuple_nxv8i8_2t:
91 ; CHECK:       # %bb.0: # %entry
92 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
93 ; CHECK-NEXT:    vlsseg2e8.v v7, (a0), a1
94 ; CHECK-NEXT:    ret
95 entry:
96   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
97   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
98   ret <vscale x 8 x i8> %1
101 define <vscale x 8 x i8> @test_vlsseg2_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
102 ; CHECK-LABEL: test_vlsseg2_mask_nxv8i8_triscv.vector.tuple_nxv8i8_2t:
103 ; CHECK:       # %bb.0: # %entry
104 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
105 ; CHECK-NEXT:    vlsseg2e8.v v7, (a0), a1, v0.t
106 ; CHECK-NEXT:    ret
107 entry:
108   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)
109   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
110   ret <vscale x 8 x i8> %1
113 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, i64, i64, i64)
114 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, i64, <vscale x 16 x i1>, i64, i64, i64)
116 define <vscale x 16 x i8> @test_vlsseg2_nxv16i8_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl) {
117 ; CHECK-LABEL: test_vlsseg2_nxv16i8_triscv.vector.tuple_nxv16i8_2t:
118 ; CHECK:       # %bb.0: # %entry
119 ; CHECK-NEXT:    vsetvli zero, a2, e8, m2, ta, ma
120 ; CHECK-NEXT:    vlsseg2e8.v v6, (a0), a1
121 ; CHECK-NEXT:    ret
122 entry:
123   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
124   %1 = call <vscale x 16 x i8> @llvm.riscv.tuple.extract.nxv16i8.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
125   ret <vscale x 16 x i8> %1
128 define <vscale x 16 x i8> @test_vlsseg2_mask_nxv16i8_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 16 x i1> %mask) {
129 ; CHECK-LABEL: test_vlsseg2_mask_nxv16i8_triscv.vector.tuple_nxv16i8_2t:
130 ; CHECK:       # %bb.0: # %entry
131 ; CHECK-NEXT:    vsetvli zero, a2, e8, m2, ta, ma
132 ; CHECK-NEXT:    vlsseg2e8.v v6, (a0), a1, v0.t
133 ; CHECK-NEXT:    ret
134 entry:
135   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3)
136   %1 = call <vscale x 16 x i8> @llvm.riscv.tuple.extract.nxv16i8.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
137   ret <vscale x 16 x i8> %1
140 declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, i64, i64, i64)
141 declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv32i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, i64, <vscale x 32 x i1>, i64, i64, i64)
143 define <vscale x 32 x i8> @test_vlsseg2_nxv32i8_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl) {
144 ; CHECK-LABEL: test_vlsseg2_nxv32i8_triscv.vector.tuple_nxv32i8_2t:
145 ; CHECK:       # %bb.0: # %entry
146 ; CHECK-NEXT:    vsetvli zero, a2, e8, m4, ta, ma
147 ; CHECK-NEXT:    vlsseg2e8.v v4, (a0), a1
148 ; CHECK-NEXT:    ret
149 entry:
150   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
151   %1 = call <vscale x 32 x i8> @llvm.riscv.tuple.extract.nxv32i8.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
152   ret <vscale x 32 x i8> %1
155 define <vscale x 32 x i8> @test_vlsseg2_mask_nxv32i8_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 32 x i1> %mask) {
156 ; CHECK-LABEL: test_vlsseg2_mask_nxv32i8_triscv.vector.tuple_nxv32i8_2t:
157 ; CHECK:       # %bb.0: # %entry
158 ; CHECK-NEXT:    vsetvli zero, a2, e8, m4, ta, ma
159 ; CHECK-NEXT:    vlsseg2e8.v v4, (a0), a1, v0.t
160 ; CHECK-NEXT:    ret
161 entry:
162   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv32i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 32 x i1> %mask, i64 %vl, i64 1, i64 3)
163   %1 = call <vscale x 32 x i8> @llvm.riscv.tuple.extract.nxv32i8.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
164   ret <vscale x 32 x i8> %1
167 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv1i8_3t(target("riscv.vector.tuple", <vscale x 1 x i8>, 3), ptr, i64, i64, i64)
168 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv1i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 3), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
170 define <vscale x 1 x i8> @test_vlsseg3_nxv1i8_triscv.vector.tuple_nxv1i8_3t(ptr %base, i64 %offset, i64 %vl) {
171 ; CHECK-LABEL: test_vlsseg3_nxv1i8_triscv.vector.tuple_nxv1i8_3t:
172 ; CHECK:       # %bb.0: # %entry
173 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
174 ; CHECK-NEXT:    vlsseg3e8.v v7, (a0), a1
175 ; CHECK-NEXT:    ret
176 entry:
177   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv1i8_3t(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
178   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_3t(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) %0, i32 1)
179   ret <vscale x 1 x i8> %1
182 define <vscale x 1 x i8> @test_vlsseg3_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
183 ; CHECK-LABEL: test_vlsseg3_mask_nxv1i8_triscv.vector.tuple_nxv1i8_3t:
184 ; CHECK:       # %bb.0: # %entry
185 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
186 ; CHECK-NEXT:    vlsseg3e8.v v7, (a0), a1, v0.t
187 ; CHECK-NEXT:    ret
188 entry:
189   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv1i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)
190   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_3t(target("riscv.vector.tuple", <vscale x 1 x i8>, 3) %0, i32 1)
191   ret <vscale x 1 x i8> %1
194 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, i64, i64, i64)
195 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
197 define <vscale x 2 x i8> @test_vlsseg3_nxv2i8_triscv.vector.tuple_nxv2i8_3t(ptr %base, i64 %offset, i64 %vl) {
198 ; CHECK-LABEL: test_vlsseg3_nxv2i8_triscv.vector.tuple_nxv2i8_3t:
199 ; CHECK:       # %bb.0: # %entry
200 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
201 ; CHECK-NEXT:    vlsseg3e8.v v7, (a0), a1
202 ; CHECK-NEXT:    ret
203 entry:
204   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
205   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %0, i32 1)
206   ret <vscale x 2 x i8> %1
209 define <vscale x 2 x i8> @test_vlsseg3_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
210 ; CHECK-LABEL: test_vlsseg3_mask_nxv2i8_triscv.vector.tuple_nxv2i8_3t:
211 ; CHECK:       # %bb.0: # %entry
212 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
213 ; CHECK-NEXT:    vlsseg3e8.v v7, (a0), a1, v0.t
214 ; CHECK-NEXT:    ret
215 entry:
216   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)
217   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %0, i32 1)
218   ret <vscale x 2 x i8> %1
221 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, i64, i64, i64)
222 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
224 define <vscale x 4 x i8> @test_vlsseg3_nxv4i8_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %offset, i64 %vl) {
225 ; CHECK-LABEL: test_vlsseg3_nxv4i8_triscv.vector.tuple_nxv4i8_3t:
226 ; CHECK:       # %bb.0: # %entry
227 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
228 ; CHECK-NEXT:    vlsseg3e8.v v7, (a0), a1
229 ; CHECK-NEXT:    ret
230 entry:
231   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
232   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %0, i32 1)
233   ret <vscale x 4 x i8> %1
236 define <vscale x 4 x i8> @test_vlsseg3_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
237 ; CHECK-LABEL: test_vlsseg3_mask_nxv4i8_triscv.vector.tuple_nxv4i8_3t:
238 ; CHECK:       # %bb.0: # %entry
239 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
240 ; CHECK-NEXT:    vlsseg3e8.v v7, (a0), a1, v0.t
241 ; CHECK-NEXT:    ret
242 entry:
243   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)
244   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %0, i32 1)
245   ret <vscale x 4 x i8> %1
248 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, i64, i64, i64)
249 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, i64, <vscale x 8 x i1>, i64, i64, i64)
251 define <vscale x 8 x i8> @test_vlsseg3_nxv8i8_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl) {
252 ; CHECK-LABEL: test_vlsseg3_nxv8i8_triscv.vector.tuple_nxv8i8_3t:
253 ; CHECK:       # %bb.0: # %entry
254 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
255 ; CHECK-NEXT:    vlsseg3e8.v v7, (a0), a1
256 ; CHECK-NEXT:    ret
257 entry:
258   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
259   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
260   ret <vscale x 8 x i8> %1
263 define <vscale x 8 x i8> @test_vlsseg3_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
264 ; CHECK-LABEL: test_vlsseg3_mask_nxv8i8_triscv.vector.tuple_nxv8i8_3t:
265 ; CHECK:       # %bb.0: # %entry
266 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
267 ; CHECK-NEXT:    vlsseg3e8.v v7, (a0), a1, v0.t
268 ; CHECK-NEXT:    ret
269 entry:
270   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)
271   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
272   ret <vscale x 8 x i8> %1
275 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, i64, i64, i64)
276 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, i64, <vscale x 16 x i1>, i64, i64, i64)
278 define <vscale x 16 x i8> @test_vlsseg3_nxv16i8_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl) {
279 ; CHECK-LABEL: test_vlsseg3_nxv16i8_triscv.vector.tuple_nxv16i8_3t:
280 ; CHECK:       # %bb.0: # %entry
281 ; CHECK-NEXT:    vsetvli zero, a2, e8, m2, ta, ma
282 ; CHECK-NEXT:    vlsseg3e8.v v6, (a0), a1
283 ; CHECK-NEXT:    ret
284 entry:
285   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
286   %1 = call <vscale x 16 x i8> @llvm.riscv.tuple.extract.nxv16i8.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
287   ret <vscale x 16 x i8> %1
290 define <vscale x 16 x i8> @test_vlsseg3_mask_nxv16i8_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 16 x i1> %mask) {
291 ; CHECK-LABEL: test_vlsseg3_mask_nxv16i8_triscv.vector.tuple_nxv16i8_3t:
292 ; CHECK:       # %bb.0: # %entry
293 ; CHECK-NEXT:    vsetvli zero, a2, e8, m2, ta, ma
294 ; CHECK-NEXT:    vlsseg3e8.v v6, (a0), a1, v0.t
295 ; CHECK-NEXT:    ret
296 entry:
297   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3)
298   %1 = call <vscale x 16 x i8> @llvm.riscv.tuple.extract.nxv16i8.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
299   ret <vscale x 16 x i8> %1
302 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv1i8_4t(target("riscv.vector.tuple", <vscale x 1 x i8>, 4), ptr, i64, i64, i64)
303 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv1i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 4), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
305 define <vscale x 1 x i8> @test_vlsseg4_nxv1i8_triscv.vector.tuple_nxv1i8_4t(ptr %base, i64 %offset, i64 %vl) {
306 ; CHECK-LABEL: test_vlsseg4_nxv1i8_triscv.vector.tuple_nxv1i8_4t:
307 ; CHECK:       # %bb.0: # %entry
308 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
309 ; CHECK-NEXT:    vlsseg4e8.v v7, (a0), a1
310 ; CHECK-NEXT:    ret
311 entry:
312   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv1i8_4t(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
313   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_4t(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) %0, i32 1)
314   ret <vscale x 1 x i8> %1
317 define <vscale x 1 x i8> @test_vlsseg4_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
318 ; CHECK-LABEL: test_vlsseg4_mask_nxv1i8_triscv.vector.tuple_nxv1i8_4t:
319 ; CHECK:       # %bb.0: # %entry
320 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
321 ; CHECK-NEXT:    vlsseg4e8.v v7, (a0), a1, v0.t
322 ; CHECK-NEXT:    ret
323 entry:
324   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv1i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)
325   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_4t(target("riscv.vector.tuple", <vscale x 1 x i8>, 4) %0, i32 1)
326   ret <vscale x 1 x i8> %1
329 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, i64, i64, i64)
330 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
332 define <vscale x 2 x i8> @test_vlsseg4_nxv2i8_triscv.vector.tuple_nxv2i8_4t(ptr %base, i64 %offset, i64 %vl) {
333 ; CHECK-LABEL: test_vlsseg4_nxv2i8_triscv.vector.tuple_nxv2i8_4t:
334 ; CHECK:       # %bb.0: # %entry
335 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
336 ; CHECK-NEXT:    vlsseg4e8.v v7, (a0), a1
337 ; CHECK-NEXT:    ret
338 entry:
339   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
340   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %0, i32 1)
341   ret <vscale x 2 x i8> %1
344 define <vscale x 2 x i8> @test_vlsseg4_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
345 ; CHECK-LABEL: test_vlsseg4_mask_nxv2i8_triscv.vector.tuple_nxv2i8_4t:
346 ; CHECK:       # %bb.0: # %entry
347 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
348 ; CHECK-NEXT:    vlsseg4e8.v v7, (a0), a1, v0.t
349 ; CHECK-NEXT:    ret
350 entry:
351   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)
352   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %0, i32 1)
353   ret <vscale x 2 x i8> %1
356 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, i64, i64, i64)
357 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
359 define <vscale x 4 x i8> @test_vlsseg4_nxv4i8_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %offset, i64 %vl) {
360 ; CHECK-LABEL: test_vlsseg4_nxv4i8_triscv.vector.tuple_nxv4i8_4t:
361 ; CHECK:       # %bb.0: # %entry
362 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
363 ; CHECK-NEXT:    vlsseg4e8.v v7, (a0), a1
364 ; CHECK-NEXT:    ret
365 entry:
366   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
367   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %0, i32 1)
368   ret <vscale x 4 x i8> %1
371 define <vscale x 4 x i8> @test_vlsseg4_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
372 ; CHECK-LABEL: test_vlsseg4_mask_nxv4i8_triscv.vector.tuple_nxv4i8_4t:
373 ; CHECK:       # %bb.0: # %entry
374 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
375 ; CHECK-NEXT:    vlsseg4e8.v v7, (a0), a1, v0.t
376 ; CHECK-NEXT:    ret
377 entry:
378   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)
379   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %0, i32 1)
380   ret <vscale x 4 x i8> %1
383 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, i64, i64, i64)
384 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, i64, <vscale x 8 x i1>, i64, i64, i64)
386 define <vscale x 8 x i8> @test_vlsseg4_nxv8i8_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl) {
387 ; CHECK-LABEL: test_vlsseg4_nxv8i8_triscv.vector.tuple_nxv8i8_4t:
388 ; CHECK:       # %bb.0: # %entry
389 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
390 ; CHECK-NEXT:    vlsseg4e8.v v7, (a0), a1
391 ; CHECK-NEXT:    ret
392 entry:
393   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
394   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
395   ret <vscale x 8 x i8> %1
398 define <vscale x 8 x i8> @test_vlsseg4_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
399 ; CHECK-LABEL: test_vlsseg4_mask_nxv8i8_triscv.vector.tuple_nxv8i8_4t:
400 ; CHECK:       # %bb.0: # %entry
401 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
402 ; CHECK-NEXT:    vlsseg4e8.v v7, (a0), a1, v0.t
403 ; CHECK-NEXT:    ret
404 entry:
405   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)
406   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
407   ret <vscale x 8 x i8> %1
410 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, i64, i64, i64)
411 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, i64, <vscale x 16 x i1>, i64, i64, i64)
413 define <vscale x 16 x i8> @test_vlsseg4_nxv16i8_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl) {
414 ; CHECK-LABEL: test_vlsseg4_nxv16i8_triscv.vector.tuple_nxv16i8_4t:
415 ; CHECK:       # %bb.0: # %entry
416 ; CHECK-NEXT:    vsetvli zero, a2, e8, m2, ta, ma
417 ; CHECK-NEXT:    vlsseg4e8.v v6, (a0), a1
418 ; CHECK-NEXT:    ret
419 entry:
420   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
421   %1 = call <vscale x 16 x i8> @llvm.riscv.tuple.extract.nxv16i8.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
422   ret <vscale x 16 x i8> %1
425 define <vscale x 16 x i8> @test_vlsseg4_mask_nxv16i8_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 16 x i1> %mask) {
426 ; CHECK-LABEL: test_vlsseg4_mask_nxv16i8_triscv.vector.tuple_nxv16i8_4t:
427 ; CHECK:       # %bb.0: # %entry
428 ; CHECK-NEXT:    vsetvli zero, a2, e8, m2, ta, ma
429 ; CHECK-NEXT:    vlsseg4e8.v v6, (a0), a1, v0.t
430 ; CHECK-NEXT:    ret
431 entry:
432   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv16i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 3)
433   %1 = call <vscale x 16 x i8> @llvm.riscv.tuple.extract.nxv16i8.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
434   ret <vscale x 16 x i8> %1
437 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv1i8_5t(target("riscv.vector.tuple", <vscale x 1 x i8>, 5), ptr, i64, i64, i64)
438 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv1i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 5), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
440 define <vscale x 1 x i8> @test_vlsseg5_nxv1i8_triscv.vector.tuple_nxv1i8_5t(ptr %base, i64 %offset, i64 %vl) {
441 ; CHECK-LABEL: test_vlsseg5_nxv1i8_triscv.vector.tuple_nxv1i8_5t:
442 ; CHECK:       # %bb.0: # %entry
443 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
444 ; CHECK-NEXT:    vlsseg5e8.v v7, (a0), a1
445 ; CHECK-NEXT:    ret
446 entry:
447   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv1i8_5t(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
448   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_5t(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) %0, i32 1)
449   ret <vscale x 1 x i8> %1
452 define <vscale x 1 x i8> @test_vlsseg5_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
453 ; CHECK-LABEL: test_vlsseg5_mask_nxv1i8_triscv.vector.tuple_nxv1i8_5t:
454 ; CHECK:       # %bb.0: # %entry
455 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
456 ; CHECK-NEXT:    vlsseg5e8.v v7, (a0), a1, v0.t
457 ; CHECK-NEXT:    ret
458 entry:
459   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv1i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)
460   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_5t(target("riscv.vector.tuple", <vscale x 1 x i8>, 5) %0, i32 1)
461   ret <vscale x 1 x i8> %1
464 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, i64, i64, i64)
465 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
467 define <vscale x 2 x i8> @test_vlsseg5_nxv2i8_triscv.vector.tuple_nxv2i8_5t(ptr %base, i64 %offset, i64 %vl) {
468 ; CHECK-LABEL: test_vlsseg5_nxv2i8_triscv.vector.tuple_nxv2i8_5t:
469 ; CHECK:       # %bb.0: # %entry
470 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
471 ; CHECK-NEXT:    vlsseg5e8.v v7, (a0), a1
472 ; CHECK-NEXT:    ret
473 entry:
474   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
475   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %0, i32 1)
476   ret <vscale x 2 x i8> %1
479 define <vscale x 2 x i8> @test_vlsseg5_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
480 ; CHECK-LABEL: test_vlsseg5_mask_nxv2i8_triscv.vector.tuple_nxv2i8_5t:
481 ; CHECK:       # %bb.0: # %entry
482 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
483 ; CHECK-NEXT:    vlsseg5e8.v v7, (a0), a1, v0.t
484 ; CHECK-NEXT:    ret
485 entry:
486   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)
487   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %0, i32 1)
488   ret <vscale x 2 x i8> %1
491 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, i64, i64, i64)
492 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
494 define <vscale x 4 x i8> @test_vlsseg5_nxv4i8_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %offset, i64 %vl) {
495 ; CHECK-LABEL: test_vlsseg5_nxv4i8_triscv.vector.tuple_nxv4i8_5t:
496 ; CHECK:       # %bb.0: # %entry
497 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
498 ; CHECK-NEXT:    vlsseg5e8.v v7, (a0), a1
499 ; CHECK-NEXT:    ret
500 entry:
501   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
502   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %0, i32 1)
503   ret <vscale x 4 x i8> %1
506 define <vscale x 4 x i8> @test_vlsseg5_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
507 ; CHECK-LABEL: test_vlsseg5_mask_nxv4i8_triscv.vector.tuple_nxv4i8_5t:
508 ; CHECK:       # %bb.0: # %entry
509 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
510 ; CHECK-NEXT:    vlsseg5e8.v v7, (a0), a1, v0.t
511 ; CHECK-NEXT:    ret
512 entry:
513   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)
514   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %0, i32 1)
515   ret <vscale x 4 x i8> %1
518 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, i64, i64, i64)
519 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, i64, <vscale x 8 x i1>, i64, i64, i64)
521 define <vscale x 8 x i8> @test_vlsseg5_nxv8i8_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl) {
522 ; CHECK-LABEL: test_vlsseg5_nxv8i8_triscv.vector.tuple_nxv8i8_5t:
523 ; CHECK:       # %bb.0: # %entry
524 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
525 ; CHECK-NEXT:    vlsseg5e8.v v7, (a0), a1
526 ; CHECK-NEXT:    ret
527 entry:
528   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
529   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
530   ret <vscale x 8 x i8> %1
533 define <vscale x 8 x i8> @test_vlsseg5_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
534 ; CHECK-LABEL: test_vlsseg5_mask_nxv8i8_triscv.vector.tuple_nxv8i8_5t:
535 ; CHECK:       # %bb.0: # %entry
536 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
537 ; CHECK-NEXT:    vlsseg5e8.v v7, (a0), a1, v0.t
538 ; CHECK-NEXT:    ret
539 entry:
540   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)
541   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
542   ret <vscale x 8 x i8> %1
545 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv1i8_6t(target("riscv.vector.tuple", <vscale x 1 x i8>, 6), ptr, i64, i64, i64)
546 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv1i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 6), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
548 define <vscale x 1 x i8> @test_vlsseg6_nxv1i8_triscv.vector.tuple_nxv1i8_6t(ptr %base, i64 %offset, i64 %vl) {
549 ; CHECK-LABEL: test_vlsseg6_nxv1i8_triscv.vector.tuple_nxv1i8_6t:
550 ; CHECK:       # %bb.0: # %entry
551 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
552 ; CHECK-NEXT:    vlsseg6e8.v v7, (a0), a1
553 ; CHECK-NEXT:    ret
554 entry:
555   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv1i8_6t(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
556   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_6t(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) %0, i32 1)
557   ret <vscale x 1 x i8> %1
560 define <vscale x 1 x i8> @test_vlsseg6_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
561 ; CHECK-LABEL: test_vlsseg6_mask_nxv1i8_triscv.vector.tuple_nxv1i8_6t:
562 ; CHECK:       # %bb.0: # %entry
563 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
564 ; CHECK-NEXT:    vlsseg6e8.v v7, (a0), a1, v0.t
565 ; CHECK-NEXT:    ret
566 entry:
567   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv1i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)
568   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_6t(target("riscv.vector.tuple", <vscale x 1 x i8>, 6) %0, i32 1)
569   ret <vscale x 1 x i8> %1
572 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, i64, i64, i64)
573 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
575 define <vscale x 2 x i8> @test_vlsseg6_nxv2i8_triscv.vector.tuple_nxv2i8_6t(ptr %base, i64 %offset, i64 %vl) {
576 ; CHECK-LABEL: test_vlsseg6_nxv2i8_triscv.vector.tuple_nxv2i8_6t:
577 ; CHECK:       # %bb.0: # %entry
578 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
579 ; CHECK-NEXT:    vlsseg6e8.v v7, (a0), a1
580 ; CHECK-NEXT:    ret
581 entry:
582   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
583   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %0, i32 1)
584   ret <vscale x 2 x i8> %1
587 define <vscale x 2 x i8> @test_vlsseg6_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
588 ; CHECK-LABEL: test_vlsseg6_mask_nxv2i8_triscv.vector.tuple_nxv2i8_6t:
589 ; CHECK:       # %bb.0: # %entry
590 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
591 ; CHECK-NEXT:    vlsseg6e8.v v7, (a0), a1, v0.t
592 ; CHECK-NEXT:    ret
593 entry:
594   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)
595   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %0, i32 1)
596   ret <vscale x 2 x i8> %1
599 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, i64, i64, i64)
600 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
602 define <vscale x 4 x i8> @test_vlsseg6_nxv4i8_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %offset, i64 %vl) {
603 ; CHECK-LABEL: test_vlsseg6_nxv4i8_triscv.vector.tuple_nxv4i8_6t:
604 ; CHECK:       # %bb.0: # %entry
605 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
606 ; CHECK-NEXT:    vlsseg6e8.v v7, (a0), a1
607 ; CHECK-NEXT:    ret
608 entry:
609   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
610   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %0, i32 1)
611   ret <vscale x 4 x i8> %1
614 define <vscale x 4 x i8> @test_vlsseg6_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
615 ; CHECK-LABEL: test_vlsseg6_mask_nxv4i8_triscv.vector.tuple_nxv4i8_6t:
616 ; CHECK:       # %bb.0: # %entry
617 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
618 ; CHECK-NEXT:    vlsseg6e8.v v7, (a0), a1, v0.t
619 ; CHECK-NEXT:    ret
620 entry:
621   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)
622   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %0, i32 1)
623   ret <vscale x 4 x i8> %1
626 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, i64, i64, i64)
627 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, i64, <vscale x 8 x i1>, i64, i64, i64)
629 define <vscale x 8 x i8> @test_vlsseg6_nxv8i8_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl) {
630 ; CHECK-LABEL: test_vlsseg6_nxv8i8_triscv.vector.tuple_nxv8i8_6t:
631 ; CHECK:       # %bb.0: # %entry
632 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
633 ; CHECK-NEXT:    vlsseg6e8.v v7, (a0), a1
634 ; CHECK-NEXT:    ret
635 entry:
636   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
637   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
638   ret <vscale x 8 x i8> %1
641 define <vscale x 8 x i8> @test_vlsseg6_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
642 ; CHECK-LABEL: test_vlsseg6_mask_nxv8i8_triscv.vector.tuple_nxv8i8_6t:
643 ; CHECK:       # %bb.0: # %entry
644 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
645 ; CHECK-NEXT:    vlsseg6e8.v v7, (a0), a1, v0.t
646 ; CHECK-NEXT:    ret
647 entry:
648   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)
649   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
650   ret <vscale x 8 x i8> %1
653 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv1i8_7t(target("riscv.vector.tuple", <vscale x 1 x i8>, 7), ptr, i64, i64, i64)
654 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv1i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 7), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
656 define <vscale x 1 x i8> @test_vlsseg7_nxv1i8_triscv.vector.tuple_nxv1i8_7t(ptr %base, i64 %offset, i64 %vl) {
657 ; CHECK-LABEL: test_vlsseg7_nxv1i8_triscv.vector.tuple_nxv1i8_7t:
658 ; CHECK:       # %bb.0: # %entry
659 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
660 ; CHECK-NEXT:    vlsseg7e8.v v7, (a0), a1
661 ; CHECK-NEXT:    ret
662 entry:
663   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv1i8_7t(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
664   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_7t(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) %0, i32 1)
665   ret <vscale x 1 x i8> %1
668 define <vscale x 1 x i8> @test_vlsseg7_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
669 ; CHECK-LABEL: test_vlsseg7_mask_nxv1i8_triscv.vector.tuple_nxv1i8_7t:
670 ; CHECK:       # %bb.0: # %entry
671 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
672 ; CHECK-NEXT:    vlsseg7e8.v v7, (a0), a1, v0.t
673 ; CHECK-NEXT:    ret
674 entry:
675   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv1i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)
676   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_7t(target("riscv.vector.tuple", <vscale x 1 x i8>, 7) %0, i32 1)
677   ret <vscale x 1 x i8> %1
680 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, i64, i64, i64)
681 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
683 define <vscale x 2 x i8> @test_vlsseg7_nxv2i8_triscv.vector.tuple_nxv2i8_7t(ptr %base, i64 %offset, i64 %vl) {
684 ; CHECK-LABEL: test_vlsseg7_nxv2i8_triscv.vector.tuple_nxv2i8_7t:
685 ; CHECK:       # %bb.0: # %entry
686 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
687 ; CHECK-NEXT:    vlsseg7e8.v v7, (a0), a1
688 ; CHECK-NEXT:    ret
689 entry:
690   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
691   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %0, i32 1)
692   ret <vscale x 2 x i8> %1
695 define <vscale x 2 x i8> @test_vlsseg7_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
696 ; CHECK-LABEL: test_vlsseg7_mask_nxv2i8_triscv.vector.tuple_nxv2i8_7t:
697 ; CHECK:       # %bb.0: # %entry
698 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
699 ; CHECK-NEXT:    vlsseg7e8.v v7, (a0), a1, v0.t
700 ; CHECK-NEXT:    ret
701 entry:
702   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)
703   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %0, i32 1)
704   ret <vscale x 2 x i8> %1
707 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, i64, i64, i64)
708 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
710 define <vscale x 4 x i8> @test_vlsseg7_nxv4i8_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %offset, i64 %vl) {
711 ; CHECK-LABEL: test_vlsseg7_nxv4i8_triscv.vector.tuple_nxv4i8_7t:
712 ; CHECK:       # %bb.0: # %entry
713 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
714 ; CHECK-NEXT:    vlsseg7e8.v v7, (a0), a1
715 ; CHECK-NEXT:    ret
716 entry:
717   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
718   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %0, i32 1)
719   ret <vscale x 4 x i8> %1
722 define <vscale x 4 x i8> @test_vlsseg7_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
723 ; CHECK-LABEL: test_vlsseg7_mask_nxv4i8_triscv.vector.tuple_nxv4i8_7t:
724 ; CHECK:       # %bb.0: # %entry
725 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
726 ; CHECK-NEXT:    vlsseg7e8.v v7, (a0), a1, v0.t
727 ; CHECK-NEXT:    ret
728 entry:
729   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)
730   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %0, i32 1)
731   ret <vscale x 4 x i8> %1
734 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, i64, i64, i64)
735 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, i64, <vscale x 8 x i1>, i64, i64, i64)
737 define <vscale x 8 x i8> @test_vlsseg7_nxv8i8_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl) {
738 ; CHECK-LABEL: test_vlsseg7_nxv8i8_triscv.vector.tuple_nxv8i8_7t:
739 ; CHECK:       # %bb.0: # %entry
740 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
741 ; CHECK-NEXT:    vlsseg7e8.v v7, (a0), a1
742 ; CHECK-NEXT:    ret
743 entry:
744   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
745   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
746   ret <vscale x 8 x i8> %1
749 define <vscale x 8 x i8> @test_vlsseg7_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
750 ; CHECK-LABEL: test_vlsseg7_mask_nxv8i8_triscv.vector.tuple_nxv8i8_7t:
751 ; CHECK:       # %bb.0: # %entry
752 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
753 ; CHECK-NEXT:    vlsseg7e8.v v7, (a0), a1, v0.t
754 ; CHECK-NEXT:    ret
755 entry:
756   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)
757   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
758   ret <vscale x 8 x i8> %1
761 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv1i8_8t(target("riscv.vector.tuple", <vscale x 1 x i8>, 8), ptr, i64, i64, i64)
762 declare target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv1i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 8), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
764 define <vscale x 1 x i8> @test_vlsseg8_nxv1i8_triscv.vector.tuple_nxv1i8_8t(ptr %base, i64 %offset, i64 %vl) {
765 ; CHECK-LABEL: test_vlsseg8_nxv1i8_triscv.vector.tuple_nxv1i8_8t:
766 ; CHECK:       # %bb.0: # %entry
767 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
768 ; CHECK-NEXT:    vlsseg8e8.v v7, (a0), a1
769 ; CHECK-NEXT:    ret
770 entry:
771   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv1i8_8t(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
772   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_8t(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) %0, i32 1)
773   ret <vscale x 1 x i8> %1
776 define <vscale x 1 x i8> @test_vlsseg8_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
777 ; CHECK-LABEL: test_vlsseg8_mask_nxv1i8_triscv.vector.tuple_nxv1i8_8t:
778 ; CHECK:       # %bb.0: # %entry
779 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf8, ta, ma
780 ; CHECK-NEXT:    vlsseg8e8.v v7, (a0), a1, v0.t
781 ; CHECK-NEXT:    ret
782 entry:
783   %0 = tail call target("riscv.vector.tuple", <vscale x 1 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv1i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 3)
784   %1 = call <vscale x 1 x i8> @llvm.riscv.tuple.extract.nxv1i8.triscv.vector.tuple_nxv1i8_8t(target("riscv.vector.tuple", <vscale x 1 x i8>, 8) %0, i32 1)
785   ret <vscale x 1 x i8> %1
788 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, i64, i64, i64)
789 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
791 define <vscale x 2 x i8> @test_vlsseg8_nxv2i8_triscv.vector.tuple_nxv2i8_8t(ptr %base, i64 %offset, i64 %vl) {
792 ; CHECK-LABEL: test_vlsseg8_nxv2i8_triscv.vector.tuple_nxv2i8_8t:
793 ; CHECK:       # %bb.0: # %entry
794 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
795 ; CHECK-NEXT:    vlsseg8e8.v v7, (a0), a1
796 ; CHECK-NEXT:    ret
797 entry:
798   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
799   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %0, i32 1)
800   ret <vscale x 2 x i8> %1
803 define <vscale x 2 x i8> @test_vlsseg8_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
804 ; CHECK-LABEL: test_vlsseg8_mask_nxv2i8_triscv.vector.tuple_nxv2i8_8t:
805 ; CHECK:       # %bb.0: # %entry
806 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf4, ta, ma
807 ; CHECK-NEXT:    vlsseg8e8.v v7, (a0), a1, v0.t
808 ; CHECK-NEXT:    ret
809 entry:
810   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 3)
811   %1 = call <vscale x 2 x i8> @llvm.riscv.tuple.extract.nxv2i8.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %0, i32 1)
812   ret <vscale x 2 x i8> %1
815 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, i64, i64, i64)
816 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
818 define <vscale x 4 x i8> @test_vlsseg8_nxv4i8_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %offset, i64 %vl) {
819 ; CHECK-LABEL: test_vlsseg8_nxv4i8_triscv.vector.tuple_nxv4i8_8t:
820 ; CHECK:       # %bb.0: # %entry
821 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
822 ; CHECK-NEXT:    vlsseg8e8.v v7, (a0), a1
823 ; CHECK-NEXT:    ret
824 entry:
825   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
826   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %0, i32 1)
827   ret <vscale x 4 x i8> %1
830 define <vscale x 4 x i8> @test_vlsseg8_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
831 ; CHECK-LABEL: test_vlsseg8_mask_nxv4i8_triscv.vector.tuple_nxv4i8_8t:
832 ; CHECK:       # %bb.0: # %entry
833 ; CHECK-NEXT:    vsetvli zero, a2, e8, mf2, ta, ma
834 ; CHECK-NEXT:    vlsseg8e8.v v7, (a0), a1, v0.t
835 ; CHECK-NEXT:    ret
836 entry:
837   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 3)
838   %1 = call <vscale x 4 x i8> @llvm.riscv.tuple.extract.nxv4i8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %0, i32 1)
839   ret <vscale x 4 x i8> %1
842 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, i64, i64, i64)
843 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, i64, <vscale x 8 x i1>, i64, i64, i64)
845 define <vscale x 8 x i8> @test_vlsseg8_nxv8i8_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl) {
846 ; CHECK-LABEL: test_vlsseg8_nxv8i8_triscv.vector.tuple_nxv8i8_8t:
847 ; CHECK:       # %bb.0: # %entry
848 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
849 ; CHECK-NEXT:    vlsseg8e8.v v7, (a0), a1
850 ; CHECK-NEXT:    ret
851 entry:
852   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 3)
853   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
854   ret <vscale x 8 x i8> %1
857 define <vscale x 8 x i8> @test_vlsseg8_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
858 ; CHECK-LABEL: test_vlsseg8_mask_nxv8i8_triscv.vector.tuple_nxv8i8_8t:
859 ; CHECK:       # %bb.0: # %entry
860 ; CHECK-NEXT:    vsetvli zero, a2, e8, m1, ta, ma
861 ; CHECK-NEXT:    vlsseg8e8.v v7, (a0), a1, v0.t
862 ; CHECK-NEXT:    ret
863 entry:
864   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv8i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 3)
865   %1 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
866   ret <vscale x 8 x i8> %1
869 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
871 define <vscale x 1 x i16> @test_vlsseg2_nxv1i16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i64 %offset, i64 %vl) {
872 ; CHECK-LABEL: test_vlsseg2_nxv1i16_triscv.vector.tuple_nxv2i8_2t:
873 ; CHECK:       # %bb.0: # %entry
874 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
875 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1
876 ; CHECK-NEXT:    ret
877 entry:
878   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
879   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %0, i32 1)
880   ret <vscale x 1 x i16> %1
883 define <vscale x 1 x i16> @test_vlsseg2_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
884 ; CHECK-LABEL: test_vlsseg2_mask_nxv1i16_triscv.vector.tuple_nxv2i8_2t:
885 ; CHECK:       # %bb.0: # %entry
886 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
887 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1, v0.t
888 ; CHECK-NEXT:    ret
889 entry:
890   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
891   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %0, i32 1)
892   ret <vscale x 1 x i16> %1
895 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
897 define <vscale x 2 x i16> @test_vlsseg2_nxv2i16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %offset, i64 %vl) {
898 ; CHECK-LABEL: test_vlsseg2_nxv2i16_triscv.vector.tuple_nxv4i8_2t:
899 ; CHECK:       # %bb.0: # %entry
900 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
901 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1
902 ; CHECK-NEXT:    ret
903 entry:
904   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
905   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %0, i32 1)
906   ret <vscale x 2 x i16> %1
909 define <vscale x 2 x i16> @test_vlsseg2_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
910 ; CHECK-LABEL: test_vlsseg2_mask_nxv2i16_triscv.vector.tuple_nxv4i8_2t:
911 ; CHECK:       # %bb.0: # %entry
912 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
913 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1, v0.t
914 ; CHECK-NEXT:    ret
915 entry:
916   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
917   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %0, i32 1)
918   ret <vscale x 2 x i16> %1
921 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
923 define <vscale x 4 x i16> @test_vlsseg2_nxv4i16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl) {
924 ; CHECK-LABEL: test_vlsseg2_nxv4i16_triscv.vector.tuple_nxv8i8_2t:
925 ; CHECK:       # %bb.0: # %entry
926 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
927 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1
928 ; CHECK-NEXT:    ret
929 entry:
930   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
931   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
932   ret <vscale x 4 x i16> %1
935 define <vscale x 4 x i16> @test_vlsseg2_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
936 ; CHECK-LABEL: test_vlsseg2_mask_nxv4i16_triscv.vector.tuple_nxv8i8_2t:
937 ; CHECK:       # %bb.0: # %entry
938 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
939 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1, v0.t
940 ; CHECK-NEXT:    ret
941 entry:
942   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
943   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
944   ret <vscale x 4 x i16> %1
947 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, i64, <vscale x 8 x i1>, i64, i64, i64)
949 define <vscale x 8 x i16> @test_vlsseg2_nxv8i16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl) {
950 ; CHECK-LABEL: test_vlsseg2_nxv8i16_triscv.vector.tuple_nxv16i8_2t:
951 ; CHECK:       # %bb.0: # %entry
952 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
953 ; CHECK-NEXT:    vlsseg2e16.v v6, (a0), a1
954 ; CHECK-NEXT:    ret
955 entry:
956   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
957   %1 = call <vscale x 8 x i16> @llvm.riscv.tuple.extract.nxv8i16.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
958   ret <vscale x 8 x i16> %1
961 define <vscale x 8 x i16> @test_vlsseg2_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
962 ; CHECK-LABEL: test_vlsseg2_mask_nxv8i16_triscv.vector.tuple_nxv16i8_2t:
963 ; CHECK:       # %bb.0: # %entry
964 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
965 ; CHECK-NEXT:    vlsseg2e16.v v6, (a0), a1, v0.t
966 ; CHECK-NEXT:    ret
967 entry:
968   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)
969   %1 = call <vscale x 8 x i16> @llvm.riscv.tuple.extract.nxv8i16.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
970   ret <vscale x 8 x i16> %1
973 declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, i64, <vscale x 16 x i1>, i64, i64, i64)
975 define <vscale x 16 x i16> @test_vlsseg2_nxv16i16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl) {
976 ; CHECK-LABEL: test_vlsseg2_nxv16i16_triscv.vector.tuple_nxv32i8_2t:
977 ; CHECK:       # %bb.0: # %entry
978 ; CHECK-NEXT:    vsetvli zero, a2, e16, m4, ta, ma
979 ; CHECK-NEXT:    vlsseg2e16.v v4, (a0), a1
980 ; CHECK-NEXT:    ret
981 entry:
982   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
983   %1 = call <vscale x 16 x i16> @llvm.riscv.tuple.extract.nxv16i16.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
984   ret <vscale x 16 x i16> %1
987 define <vscale x 16 x i16> @test_vlsseg2_mask_nxv16i16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 16 x i1> %mask) {
988 ; CHECK-LABEL: test_vlsseg2_mask_nxv16i16_triscv.vector.tuple_nxv32i8_2t:
989 ; CHECK:       # %bb.0: # %entry
990 ; CHECK-NEXT:    vsetvli zero, a2, e16, m4, ta, ma
991 ; CHECK-NEXT:    vlsseg2e16.v v4, (a0), a1, v0.t
992 ; CHECK-NEXT:    ret
993 entry:
994   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4)
995   %1 = call <vscale x 16 x i16> @llvm.riscv.tuple.extract.nxv16i16.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
996   ret <vscale x 16 x i16> %1
999 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1001 define <vscale x 1 x i16> @test_vlsseg3_nxv1i16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i64 %offset, i64 %vl) {
1002 ; CHECK-LABEL: test_vlsseg3_nxv1i16_triscv.vector.tuple_nxv2i8_3t:
1003 ; CHECK:       # %bb.0: # %entry
1004 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
1005 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1
1006 ; CHECK-NEXT:    ret
1007 entry:
1008   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1009   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %0, i32 1)
1010   ret <vscale x 1 x i16> %1
1013 define <vscale x 1 x i16> @test_vlsseg3_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
1014 ; CHECK-LABEL: test_vlsseg3_mask_nxv1i16_triscv.vector.tuple_nxv2i8_3t:
1015 ; CHECK:       # %bb.0: # %entry
1016 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
1017 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1, v0.t
1018 ; CHECK-NEXT:    ret
1019 entry:
1020   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
1021   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %0, i32 1)
1022   ret <vscale x 1 x i16> %1
1025 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
1027 define <vscale x 2 x i16> @test_vlsseg3_nxv2i16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %offset, i64 %vl) {
1028 ; CHECK-LABEL: test_vlsseg3_nxv2i16_triscv.vector.tuple_nxv4i8_3t:
1029 ; CHECK:       # %bb.0: # %entry
1030 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
1031 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1
1032 ; CHECK-NEXT:    ret
1033 entry:
1034   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1035   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %0, i32 1)
1036   ret <vscale x 2 x i16> %1
1039 define <vscale x 2 x i16> @test_vlsseg3_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
1040 ; CHECK-LABEL: test_vlsseg3_mask_nxv2i16_triscv.vector.tuple_nxv4i8_3t:
1041 ; CHECK:       # %bb.0: # %entry
1042 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
1043 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1, v0.t
1044 ; CHECK-NEXT:    ret
1045 entry:
1046   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
1047   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %0, i32 1)
1048   ret <vscale x 2 x i16> %1
1051 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
1053 define <vscale x 4 x i16> @test_vlsseg3_nxv4i16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl) {
1054 ; CHECK-LABEL: test_vlsseg3_nxv4i16_triscv.vector.tuple_nxv8i8_3t:
1055 ; CHECK:       # %bb.0: # %entry
1056 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
1057 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1
1058 ; CHECK-NEXT:    ret
1059 entry:
1060   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1061   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
1062   ret <vscale x 4 x i16> %1
1065 define <vscale x 4 x i16> @test_vlsseg3_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
1066 ; CHECK-LABEL: test_vlsseg3_mask_nxv4i16_triscv.vector.tuple_nxv8i8_3t:
1067 ; CHECK:       # %bb.0: # %entry
1068 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
1069 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1, v0.t
1070 ; CHECK-NEXT:    ret
1071 entry:
1072   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
1073   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
1074   ret <vscale x 4 x i16> %1
1077 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, i64, <vscale x 8 x i1>, i64, i64, i64)
1079 define <vscale x 8 x i16> @test_vlsseg3_nxv8i16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl) {
1080 ; CHECK-LABEL: test_vlsseg3_nxv8i16_triscv.vector.tuple_nxv16i8_3t:
1081 ; CHECK:       # %bb.0: # %entry
1082 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
1083 ; CHECK-NEXT:    vlsseg3e16.v v6, (a0), a1
1084 ; CHECK-NEXT:    ret
1085 entry:
1086   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1087   %1 = call <vscale x 8 x i16> @llvm.riscv.tuple.extract.nxv8i16.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
1088   ret <vscale x 8 x i16> %1
1091 define <vscale x 8 x i16> @test_vlsseg3_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
1092 ; CHECK-LABEL: test_vlsseg3_mask_nxv8i16_triscv.vector.tuple_nxv16i8_3t:
1093 ; CHECK:       # %bb.0: # %entry
1094 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
1095 ; CHECK-NEXT:    vlsseg3e16.v v6, (a0), a1, v0.t
1096 ; CHECK-NEXT:    ret
1097 entry:
1098   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)
1099   %1 = call <vscale x 8 x i16> @llvm.riscv.tuple.extract.nxv8i16.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
1100   ret <vscale x 8 x i16> %1
1103 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1105 define <vscale x 1 x i16> @test_vlsseg4_nxv1i16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i64 %offset, i64 %vl) {
1106 ; CHECK-LABEL: test_vlsseg4_nxv1i16_triscv.vector.tuple_nxv2i8_4t:
1107 ; CHECK:       # %bb.0: # %entry
1108 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
1109 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1
1110 ; CHECK-NEXT:    ret
1111 entry:
1112   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1113   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %0, i32 1)
1114   ret <vscale x 1 x i16> %1
1117 define <vscale x 1 x i16> @test_vlsseg4_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
1118 ; CHECK-LABEL: test_vlsseg4_mask_nxv1i16_triscv.vector.tuple_nxv2i8_4t:
1119 ; CHECK:       # %bb.0: # %entry
1120 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
1121 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1, v0.t
1122 ; CHECK-NEXT:    ret
1123 entry:
1124   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
1125   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %0, i32 1)
1126   ret <vscale x 1 x i16> %1
1129 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
1131 define <vscale x 2 x i16> @test_vlsseg4_nxv2i16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %offset, i64 %vl) {
1132 ; CHECK-LABEL: test_vlsseg4_nxv2i16_triscv.vector.tuple_nxv4i8_4t:
1133 ; CHECK:       # %bb.0: # %entry
1134 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
1135 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1
1136 ; CHECK-NEXT:    ret
1137 entry:
1138   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1139   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %0, i32 1)
1140   ret <vscale x 2 x i16> %1
1143 define <vscale x 2 x i16> @test_vlsseg4_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
1144 ; CHECK-LABEL: test_vlsseg4_mask_nxv2i16_triscv.vector.tuple_nxv4i8_4t:
1145 ; CHECK:       # %bb.0: # %entry
1146 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
1147 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1, v0.t
1148 ; CHECK-NEXT:    ret
1149 entry:
1150   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
1151   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %0, i32 1)
1152   ret <vscale x 2 x i16> %1
1155 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
1157 define <vscale x 4 x i16> @test_vlsseg4_nxv4i16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl) {
1158 ; CHECK-LABEL: test_vlsseg4_nxv4i16_triscv.vector.tuple_nxv8i8_4t:
1159 ; CHECK:       # %bb.0: # %entry
1160 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
1161 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1
1162 ; CHECK-NEXT:    ret
1163 entry:
1164   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1165   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
1166   ret <vscale x 4 x i16> %1
1169 define <vscale x 4 x i16> @test_vlsseg4_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
1170 ; CHECK-LABEL: test_vlsseg4_mask_nxv4i16_triscv.vector.tuple_nxv8i8_4t:
1171 ; CHECK:       # %bb.0: # %entry
1172 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
1173 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1, v0.t
1174 ; CHECK-NEXT:    ret
1175 entry:
1176   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
1177   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
1178   ret <vscale x 4 x i16> %1
1181 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, i64, <vscale x 8 x i1>, i64, i64, i64)
1183 define <vscale x 8 x i16> @test_vlsseg4_nxv8i16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl) {
1184 ; CHECK-LABEL: test_vlsseg4_nxv8i16_triscv.vector.tuple_nxv16i8_4t:
1185 ; CHECK:       # %bb.0: # %entry
1186 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
1187 ; CHECK-NEXT:    vlsseg4e16.v v6, (a0), a1
1188 ; CHECK-NEXT:    ret
1189 entry:
1190   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1191   %1 = call <vscale x 8 x i16> @llvm.riscv.tuple.extract.nxv8i16.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
1192   ret <vscale x 8 x i16> %1
1195 define <vscale x 8 x i16> @test_vlsseg4_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
1196 ; CHECK-LABEL: test_vlsseg4_mask_nxv8i16_triscv.vector.tuple_nxv16i8_4t:
1197 ; CHECK:       # %bb.0: # %entry
1198 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
1199 ; CHECK-NEXT:    vlsseg4e16.v v6, (a0), a1, v0.t
1200 ; CHECK-NEXT:    ret
1201 entry:
1202   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)
1203   %1 = call <vscale x 8 x i16> @llvm.riscv.tuple.extract.nxv8i16.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
1204   ret <vscale x 8 x i16> %1
1207 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1209 define <vscale x 1 x i16> @test_vlsseg5_nxv1i16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i64 %offset, i64 %vl) {
1210 ; CHECK-LABEL: test_vlsseg5_nxv1i16_triscv.vector.tuple_nxv2i8_5t:
1211 ; CHECK:       # %bb.0: # %entry
1212 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
1213 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1
1214 ; CHECK-NEXT:    ret
1215 entry:
1216   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1217   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %0, i32 1)
1218   ret <vscale x 1 x i16> %1
1221 define <vscale x 1 x i16> @test_vlsseg5_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
1222 ; CHECK-LABEL: test_vlsseg5_mask_nxv1i16_triscv.vector.tuple_nxv2i8_5t:
1223 ; CHECK:       # %bb.0: # %entry
1224 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
1225 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1, v0.t
1226 ; CHECK-NEXT:    ret
1227 entry:
1228   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
1229   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %0, i32 1)
1230   ret <vscale x 1 x i16> %1
1233 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
1235 define <vscale x 2 x i16> @test_vlsseg5_nxv2i16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %offset, i64 %vl) {
1236 ; CHECK-LABEL: test_vlsseg5_nxv2i16_triscv.vector.tuple_nxv4i8_5t:
1237 ; CHECK:       # %bb.0: # %entry
1238 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
1239 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1
1240 ; CHECK-NEXT:    ret
1241 entry:
1242   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1243   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %0, i32 1)
1244   ret <vscale x 2 x i16> %1
1247 define <vscale x 2 x i16> @test_vlsseg5_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
1248 ; CHECK-LABEL: test_vlsseg5_mask_nxv2i16_triscv.vector.tuple_nxv4i8_5t:
1249 ; CHECK:       # %bb.0: # %entry
1250 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
1251 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1, v0.t
1252 ; CHECK-NEXT:    ret
1253 entry:
1254   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
1255   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %0, i32 1)
1256   ret <vscale x 2 x i16> %1
1259 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
1261 define <vscale x 4 x i16> @test_vlsseg5_nxv4i16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl) {
1262 ; CHECK-LABEL: test_vlsseg5_nxv4i16_triscv.vector.tuple_nxv8i8_5t:
1263 ; CHECK:       # %bb.0: # %entry
1264 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
1265 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1
1266 ; CHECK-NEXT:    ret
1267 entry:
1268   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1269   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
1270   ret <vscale x 4 x i16> %1
1273 define <vscale x 4 x i16> @test_vlsseg5_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
1274 ; CHECK-LABEL: test_vlsseg5_mask_nxv4i16_triscv.vector.tuple_nxv8i8_5t:
1275 ; CHECK:       # %bb.0: # %entry
1276 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
1277 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1, v0.t
1278 ; CHECK-NEXT:    ret
1279 entry:
1280   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
1281   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
1282   ret <vscale x 4 x i16> %1
1285 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1287 define <vscale x 1 x i16> @test_vlsseg6_nxv1i16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i64 %offset, i64 %vl) {
1288 ; CHECK-LABEL: test_vlsseg6_nxv1i16_triscv.vector.tuple_nxv2i8_6t:
1289 ; CHECK:       # %bb.0: # %entry
1290 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
1291 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1
1292 ; CHECK-NEXT:    ret
1293 entry:
1294   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1295   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %0, i32 1)
1296   ret <vscale x 1 x i16> %1
1299 define <vscale x 1 x i16> @test_vlsseg6_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
1300 ; CHECK-LABEL: test_vlsseg6_mask_nxv1i16_triscv.vector.tuple_nxv2i8_6t:
1301 ; CHECK:       # %bb.0: # %entry
1302 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
1303 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1, v0.t
1304 ; CHECK-NEXT:    ret
1305 entry:
1306   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
1307   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %0, i32 1)
1308   ret <vscale x 1 x i16> %1
1311 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
1313 define <vscale x 2 x i16> @test_vlsseg6_nxv2i16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %offset, i64 %vl) {
1314 ; CHECK-LABEL: test_vlsseg6_nxv2i16_triscv.vector.tuple_nxv4i8_6t:
1315 ; CHECK:       # %bb.0: # %entry
1316 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
1317 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1
1318 ; CHECK-NEXT:    ret
1319 entry:
1320   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1321   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %0, i32 1)
1322   ret <vscale x 2 x i16> %1
1325 define <vscale x 2 x i16> @test_vlsseg6_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
1326 ; CHECK-LABEL: test_vlsseg6_mask_nxv2i16_triscv.vector.tuple_nxv4i8_6t:
1327 ; CHECK:       # %bb.0: # %entry
1328 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
1329 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1, v0.t
1330 ; CHECK-NEXT:    ret
1331 entry:
1332   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
1333   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %0, i32 1)
1334   ret <vscale x 2 x i16> %1
1337 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
1339 define <vscale x 4 x i16> @test_vlsseg6_nxv4i16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl) {
1340 ; CHECK-LABEL: test_vlsseg6_nxv4i16_triscv.vector.tuple_nxv8i8_6t:
1341 ; CHECK:       # %bb.0: # %entry
1342 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
1343 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1
1344 ; CHECK-NEXT:    ret
1345 entry:
1346   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1347   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
1348   ret <vscale x 4 x i16> %1
1351 define <vscale x 4 x i16> @test_vlsseg6_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
1352 ; CHECK-LABEL: test_vlsseg6_mask_nxv4i16_triscv.vector.tuple_nxv8i8_6t:
1353 ; CHECK:       # %bb.0: # %entry
1354 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
1355 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1, v0.t
1356 ; CHECK-NEXT:    ret
1357 entry:
1358   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
1359   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
1360   ret <vscale x 4 x i16> %1
1363 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1365 define <vscale x 1 x i16> @test_vlsseg7_nxv1i16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i64 %offset, i64 %vl) {
1366 ; CHECK-LABEL: test_vlsseg7_nxv1i16_triscv.vector.tuple_nxv2i8_7t:
1367 ; CHECK:       # %bb.0: # %entry
1368 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
1369 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1
1370 ; CHECK-NEXT:    ret
1371 entry:
1372   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1373   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %0, i32 1)
1374   ret <vscale x 1 x i16> %1
1377 define <vscale x 1 x i16> @test_vlsseg7_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
1378 ; CHECK-LABEL: test_vlsseg7_mask_nxv1i16_triscv.vector.tuple_nxv2i8_7t:
1379 ; CHECK:       # %bb.0: # %entry
1380 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
1381 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1, v0.t
1382 ; CHECK-NEXT:    ret
1383 entry:
1384   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
1385   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %0, i32 1)
1386   ret <vscale x 1 x i16> %1
1389 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
1391 define <vscale x 2 x i16> @test_vlsseg7_nxv2i16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %offset, i64 %vl) {
1392 ; CHECK-LABEL: test_vlsseg7_nxv2i16_triscv.vector.tuple_nxv4i8_7t:
1393 ; CHECK:       # %bb.0: # %entry
1394 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
1395 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1
1396 ; CHECK-NEXT:    ret
1397 entry:
1398   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1399   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %0, i32 1)
1400   ret <vscale x 2 x i16> %1
1403 define <vscale x 2 x i16> @test_vlsseg7_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
1404 ; CHECK-LABEL: test_vlsseg7_mask_nxv2i16_triscv.vector.tuple_nxv4i8_7t:
1405 ; CHECK:       # %bb.0: # %entry
1406 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
1407 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1, v0.t
1408 ; CHECK-NEXT:    ret
1409 entry:
1410   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
1411   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %0, i32 1)
1412   ret <vscale x 2 x i16> %1
1415 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
1417 define <vscale x 4 x i16> @test_vlsseg7_nxv4i16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl) {
1418 ; CHECK-LABEL: test_vlsseg7_nxv4i16_triscv.vector.tuple_nxv8i8_7t:
1419 ; CHECK:       # %bb.0: # %entry
1420 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
1421 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1
1422 ; CHECK-NEXT:    ret
1423 entry:
1424   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1425   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
1426   ret <vscale x 4 x i16> %1
1429 define <vscale x 4 x i16> @test_vlsseg7_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
1430 ; CHECK-LABEL: test_vlsseg7_mask_nxv4i16_triscv.vector.tuple_nxv8i8_7t:
1431 ; CHECK:       # %bb.0: # %entry
1432 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
1433 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1, v0.t
1434 ; CHECK-NEXT:    ret
1435 entry:
1436   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
1437   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
1438   ret <vscale x 4 x i16> %1
1441 declare target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1443 define <vscale x 1 x i16> @test_vlsseg8_nxv1i16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i64 %offset, i64 %vl) {
1444 ; CHECK-LABEL: test_vlsseg8_nxv1i16_triscv.vector.tuple_nxv2i8_8t:
1445 ; CHECK:       # %bb.0: # %entry
1446 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
1447 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1
1448 ; CHECK-NEXT:    ret
1449 entry:
1450   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1451   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %0, i32 1)
1452   ret <vscale x 1 x i16> %1
1455 define <vscale x 1 x i16> @test_vlsseg8_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
1456 ; CHECK-LABEL: test_vlsseg8_mask_nxv1i16_triscv.vector.tuple_nxv2i8_8t:
1457 ; CHECK:       # %bb.0: # %entry
1458 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
1459 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1, v0.t
1460 ; CHECK-NEXT:    ret
1461 entry:
1462   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
1463   %1 = call <vscale x 1 x i16> @llvm.riscv.tuple.extract.nxv1i16.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %0, i32 1)
1464   ret <vscale x 1 x i16> %1
1467 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
1469 define <vscale x 2 x i16> @test_vlsseg8_nxv2i16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %offset, i64 %vl) {
1470 ; CHECK-LABEL: test_vlsseg8_nxv2i16_triscv.vector.tuple_nxv4i8_8t:
1471 ; CHECK:       # %bb.0: # %entry
1472 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
1473 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1
1474 ; CHECK-NEXT:    ret
1475 entry:
1476   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1477   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %0, i32 1)
1478   ret <vscale x 2 x i16> %1
1481 define <vscale x 2 x i16> @test_vlsseg8_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
1482 ; CHECK-LABEL: test_vlsseg8_mask_nxv2i16_triscv.vector.tuple_nxv4i8_8t:
1483 ; CHECK:       # %bb.0: # %entry
1484 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
1485 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1, v0.t
1486 ; CHECK-NEXT:    ret
1487 entry:
1488   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
1489   %1 = call <vscale x 2 x i16> @llvm.riscv.tuple.extract.nxv2i16.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %0, i32 1)
1490   ret <vscale x 2 x i16> %1
1493 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
1495 define <vscale x 4 x i16> @test_vlsseg8_nxv4i16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl) {
1496 ; CHECK-LABEL: test_vlsseg8_nxv4i16_triscv.vector.tuple_nxv8i8_8t:
1497 ; CHECK:       # %bb.0: # %entry
1498 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
1499 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1
1500 ; CHECK-NEXT:    ret
1501 entry:
1502   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
1503   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
1504   ret <vscale x 4 x i16> %1
1507 define <vscale x 4 x i16> @test_vlsseg8_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
1508 ; CHECK-LABEL: test_vlsseg8_mask_nxv4i16_triscv.vector.tuple_nxv8i8_8t:
1509 ; CHECK:       # %bb.0: # %entry
1510 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
1511 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1, v0.t
1512 ; CHECK-NEXT:    ret
1513 entry:
1514   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
1515   %1 = call <vscale x 4 x i16> @llvm.riscv.tuple.extract.nxv4i16.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
1516   ret <vscale x 4 x i16> %1
1519 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1521 define <vscale x 1 x i32> @test_vlsseg2_nxv1i32_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %offset, i64 %vl) {
1522 ; CHECK-LABEL: test_vlsseg2_nxv1i32_triscv.vector.tuple_nxv4i8_2t:
1523 ; CHECK:       # %bb.0: # %entry
1524 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1525 ; CHECK-NEXT:    vlsseg2e32.v v7, (a0), a1
1526 ; CHECK-NEXT:    ret
1527 entry:
1528   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1529   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %0, i32 1)
1530   ret <vscale x 1 x i32> %1
1533 define <vscale x 1 x i32> @test_vlsseg2_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
1534 ; CHECK-LABEL: test_vlsseg2_mask_nxv1i32_triscv.vector.tuple_nxv4i8_2t:
1535 ; CHECK:       # %bb.0: # %entry
1536 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1537 ; CHECK-NEXT:    vlsseg2e32.v v7, (a0), a1, v0.t
1538 ; CHECK-NEXT:    ret
1539 entry:
1540   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
1541   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %0, i32 1)
1542   ret <vscale x 1 x i32> %1
1545 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
1547 define <vscale x 2 x i32> @test_vlsseg2_nxv2i32_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl) {
1548 ; CHECK-LABEL: test_vlsseg2_nxv2i32_triscv.vector.tuple_nxv8i8_2t:
1549 ; CHECK:       # %bb.0: # %entry
1550 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1551 ; CHECK-NEXT:    vlsseg2e32.v v7, (a0), a1
1552 ; CHECK-NEXT:    ret
1553 entry:
1554   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1555   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
1556   ret <vscale x 2 x i32> %1
1559 define <vscale x 2 x i32> @test_vlsseg2_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
1560 ; CHECK-LABEL: test_vlsseg2_mask_nxv2i32_triscv.vector.tuple_nxv8i8_2t:
1561 ; CHECK:       # %bb.0: # %entry
1562 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1563 ; CHECK-NEXT:    vlsseg2e32.v v7, (a0), a1, v0.t
1564 ; CHECK-NEXT:    ret
1565 entry:
1566   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
1567   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
1568   ret <vscale x 2 x i32> %1
1571 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
1573 define <vscale x 4 x i32> @test_vlsseg2_nxv4i32_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl) {
1574 ; CHECK-LABEL: test_vlsseg2_nxv4i32_triscv.vector.tuple_nxv16i8_2t:
1575 ; CHECK:       # %bb.0: # %entry
1576 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
1577 ; CHECK-NEXT:    vlsseg2e32.v v6, (a0), a1
1578 ; CHECK-NEXT:    ret
1579 entry:
1580   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1581   %1 = call <vscale x 4 x i32> @llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
1582   ret <vscale x 4 x i32> %1
1585 define <vscale x 4 x i32> @test_vlsseg2_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
1586 ; CHECK-LABEL: test_vlsseg2_mask_nxv4i32_triscv.vector.tuple_nxv16i8_2t:
1587 ; CHECK:       # %bb.0: # %entry
1588 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
1589 ; CHECK-NEXT:    vlsseg2e32.v v6, (a0), a1, v0.t
1590 ; CHECK-NEXT:    ret
1591 entry:
1592   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5)
1593   %1 = call <vscale x 4 x i32> @llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
1594   ret <vscale x 4 x i32> %1
1597 declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, i64, <vscale x 8 x i1>, i64, i64, i64)
1599 define <vscale x 8 x i32> @test_vlsseg2_nxv8i32_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl) {
1600 ; CHECK-LABEL: test_vlsseg2_nxv8i32_triscv.vector.tuple_nxv32i8_2t:
1601 ; CHECK:       # %bb.0: # %entry
1602 ; CHECK-NEXT:    vsetvli zero, a2, e32, m4, ta, ma
1603 ; CHECK-NEXT:    vlsseg2e32.v v4, (a0), a1
1604 ; CHECK-NEXT:    ret
1605 entry:
1606   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1607   %1 = call <vscale x 8 x i32> @llvm.riscv.tuple.extract.nxv8i32.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
1608   ret <vscale x 8 x i32> %1
1611 define <vscale x 8 x i32> @test_vlsseg2_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
1612 ; CHECK-LABEL: test_vlsseg2_mask_nxv8i32_triscv.vector.tuple_nxv32i8_2t:
1613 ; CHECK:       # %bb.0: # %entry
1614 ; CHECK-NEXT:    vsetvli zero, a2, e32, m4, ta, ma
1615 ; CHECK-NEXT:    vlsseg2e32.v v4, (a0), a1, v0.t
1616 ; CHECK-NEXT:    ret
1617 entry:
1618   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 5)
1619   %1 = call <vscale x 8 x i32> @llvm.riscv.tuple.extract.nxv8i32.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
1620   ret <vscale x 8 x i32> %1
1623 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1625 define <vscale x 1 x i32> @test_vlsseg3_nxv1i32_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %offset, i64 %vl) {
1626 ; CHECK-LABEL: test_vlsseg3_nxv1i32_triscv.vector.tuple_nxv4i8_3t:
1627 ; CHECK:       # %bb.0: # %entry
1628 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1629 ; CHECK-NEXT:    vlsseg3e32.v v7, (a0), a1
1630 ; CHECK-NEXT:    ret
1631 entry:
1632   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1633   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %0, i32 1)
1634   ret <vscale x 1 x i32> %1
1637 define <vscale x 1 x i32> @test_vlsseg3_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
1638 ; CHECK-LABEL: test_vlsseg3_mask_nxv1i32_triscv.vector.tuple_nxv4i8_3t:
1639 ; CHECK:       # %bb.0: # %entry
1640 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1641 ; CHECK-NEXT:    vlsseg3e32.v v7, (a0), a1, v0.t
1642 ; CHECK-NEXT:    ret
1643 entry:
1644   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
1645   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %0, i32 1)
1646   ret <vscale x 1 x i32> %1
1649 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
1651 define <vscale x 2 x i32> @test_vlsseg3_nxv2i32_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl) {
1652 ; CHECK-LABEL: test_vlsseg3_nxv2i32_triscv.vector.tuple_nxv8i8_3t:
1653 ; CHECK:       # %bb.0: # %entry
1654 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1655 ; CHECK-NEXT:    vlsseg3e32.v v7, (a0), a1
1656 ; CHECK-NEXT:    ret
1657 entry:
1658   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1659   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
1660   ret <vscale x 2 x i32> %1
1663 define <vscale x 2 x i32> @test_vlsseg3_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
1664 ; CHECK-LABEL: test_vlsseg3_mask_nxv2i32_triscv.vector.tuple_nxv8i8_3t:
1665 ; CHECK:       # %bb.0: # %entry
1666 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1667 ; CHECK-NEXT:    vlsseg3e32.v v7, (a0), a1, v0.t
1668 ; CHECK-NEXT:    ret
1669 entry:
1670   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
1671   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
1672   ret <vscale x 2 x i32> %1
1675 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
1677 define <vscale x 4 x i32> @test_vlsseg3_nxv4i32_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl) {
1678 ; CHECK-LABEL: test_vlsseg3_nxv4i32_triscv.vector.tuple_nxv16i8_3t:
1679 ; CHECK:       # %bb.0: # %entry
1680 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
1681 ; CHECK-NEXT:    vlsseg3e32.v v6, (a0), a1
1682 ; CHECK-NEXT:    ret
1683 entry:
1684   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1685   %1 = call <vscale x 4 x i32> @llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
1686   ret <vscale x 4 x i32> %1
1689 define <vscale x 4 x i32> @test_vlsseg3_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
1690 ; CHECK-LABEL: test_vlsseg3_mask_nxv4i32_triscv.vector.tuple_nxv16i8_3t:
1691 ; CHECK:       # %bb.0: # %entry
1692 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
1693 ; CHECK-NEXT:    vlsseg3e32.v v6, (a0), a1, v0.t
1694 ; CHECK-NEXT:    ret
1695 entry:
1696   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5)
1697   %1 = call <vscale x 4 x i32> @llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
1698   ret <vscale x 4 x i32> %1
1701 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1703 define <vscale x 1 x i32> @test_vlsseg4_nxv1i32_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %offset, i64 %vl) {
1704 ; CHECK-LABEL: test_vlsseg4_nxv1i32_triscv.vector.tuple_nxv4i8_4t:
1705 ; CHECK:       # %bb.0: # %entry
1706 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1707 ; CHECK-NEXT:    vlsseg4e32.v v7, (a0), a1
1708 ; CHECK-NEXT:    ret
1709 entry:
1710   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1711   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %0, i32 1)
1712   ret <vscale x 1 x i32> %1
1715 define <vscale x 1 x i32> @test_vlsseg4_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
1716 ; CHECK-LABEL: test_vlsseg4_mask_nxv1i32_triscv.vector.tuple_nxv4i8_4t:
1717 ; CHECK:       # %bb.0: # %entry
1718 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1719 ; CHECK-NEXT:    vlsseg4e32.v v7, (a0), a1, v0.t
1720 ; CHECK-NEXT:    ret
1721 entry:
1722   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
1723   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %0, i32 1)
1724   ret <vscale x 1 x i32> %1
1727 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
1729 define <vscale x 2 x i32> @test_vlsseg4_nxv2i32_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl) {
1730 ; CHECK-LABEL: test_vlsseg4_nxv2i32_triscv.vector.tuple_nxv8i8_4t:
1731 ; CHECK:       # %bb.0: # %entry
1732 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1733 ; CHECK-NEXT:    vlsseg4e32.v v7, (a0), a1
1734 ; CHECK-NEXT:    ret
1735 entry:
1736   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1737   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
1738   ret <vscale x 2 x i32> %1
1741 define <vscale x 2 x i32> @test_vlsseg4_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
1742 ; CHECK-LABEL: test_vlsseg4_mask_nxv2i32_triscv.vector.tuple_nxv8i8_4t:
1743 ; CHECK:       # %bb.0: # %entry
1744 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1745 ; CHECK-NEXT:    vlsseg4e32.v v7, (a0), a1, v0.t
1746 ; CHECK-NEXT:    ret
1747 entry:
1748   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
1749   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
1750   ret <vscale x 2 x i32> %1
1753 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
1755 define <vscale x 4 x i32> @test_vlsseg4_nxv4i32_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl) {
1756 ; CHECK-LABEL: test_vlsseg4_nxv4i32_triscv.vector.tuple_nxv16i8_4t:
1757 ; CHECK:       # %bb.0: # %entry
1758 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
1759 ; CHECK-NEXT:    vlsseg4e32.v v6, (a0), a1
1760 ; CHECK-NEXT:    ret
1761 entry:
1762   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1763   %1 = call <vscale x 4 x i32> @llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
1764   ret <vscale x 4 x i32> %1
1767 define <vscale x 4 x i32> @test_vlsseg4_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
1768 ; CHECK-LABEL: test_vlsseg4_mask_nxv4i32_triscv.vector.tuple_nxv16i8_4t:
1769 ; CHECK:       # %bb.0: # %entry
1770 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
1771 ; CHECK-NEXT:    vlsseg4e32.v v6, (a0), a1, v0.t
1772 ; CHECK-NEXT:    ret
1773 entry:
1774   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5)
1775   %1 = call <vscale x 4 x i32> @llvm.riscv.tuple.extract.nxv4i32.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
1776   ret <vscale x 4 x i32> %1
1779 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1781 define <vscale x 1 x i32> @test_vlsseg5_nxv1i32_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %offset, i64 %vl) {
1782 ; CHECK-LABEL: test_vlsseg5_nxv1i32_triscv.vector.tuple_nxv4i8_5t:
1783 ; CHECK:       # %bb.0: # %entry
1784 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1785 ; CHECK-NEXT:    vlsseg5e32.v v7, (a0), a1
1786 ; CHECK-NEXT:    ret
1787 entry:
1788   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1789   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %0, i32 1)
1790   ret <vscale x 1 x i32> %1
1793 define <vscale x 1 x i32> @test_vlsseg5_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
1794 ; CHECK-LABEL: test_vlsseg5_mask_nxv1i32_triscv.vector.tuple_nxv4i8_5t:
1795 ; CHECK:       # %bb.0: # %entry
1796 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1797 ; CHECK-NEXT:    vlsseg5e32.v v7, (a0), a1, v0.t
1798 ; CHECK-NEXT:    ret
1799 entry:
1800   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
1801   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %0, i32 1)
1802   ret <vscale x 1 x i32> %1
1805 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
1807 define <vscale x 2 x i32> @test_vlsseg5_nxv2i32_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl) {
1808 ; CHECK-LABEL: test_vlsseg5_nxv2i32_triscv.vector.tuple_nxv8i8_5t:
1809 ; CHECK:       # %bb.0: # %entry
1810 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1811 ; CHECK-NEXT:    vlsseg5e32.v v7, (a0), a1
1812 ; CHECK-NEXT:    ret
1813 entry:
1814   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1815   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
1816   ret <vscale x 2 x i32> %1
1819 define <vscale x 2 x i32> @test_vlsseg5_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
1820 ; CHECK-LABEL: test_vlsseg5_mask_nxv2i32_triscv.vector.tuple_nxv8i8_5t:
1821 ; CHECK:       # %bb.0: # %entry
1822 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1823 ; CHECK-NEXT:    vlsseg5e32.v v7, (a0), a1, v0.t
1824 ; CHECK-NEXT:    ret
1825 entry:
1826   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
1827   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
1828   ret <vscale x 2 x i32> %1
1831 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1833 define <vscale x 1 x i32> @test_vlsseg6_nxv1i32_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %offset, i64 %vl) {
1834 ; CHECK-LABEL: test_vlsseg6_nxv1i32_triscv.vector.tuple_nxv4i8_6t:
1835 ; CHECK:       # %bb.0: # %entry
1836 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1837 ; CHECK-NEXT:    vlsseg6e32.v v7, (a0), a1
1838 ; CHECK-NEXT:    ret
1839 entry:
1840   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1841   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %0, i32 1)
1842   ret <vscale x 1 x i32> %1
1845 define <vscale x 1 x i32> @test_vlsseg6_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
1846 ; CHECK-LABEL: test_vlsseg6_mask_nxv1i32_triscv.vector.tuple_nxv4i8_6t:
1847 ; CHECK:       # %bb.0: # %entry
1848 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1849 ; CHECK-NEXT:    vlsseg6e32.v v7, (a0), a1, v0.t
1850 ; CHECK-NEXT:    ret
1851 entry:
1852   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
1853   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %0, i32 1)
1854   ret <vscale x 1 x i32> %1
1857 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
1859 define <vscale x 2 x i32> @test_vlsseg6_nxv2i32_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl) {
1860 ; CHECK-LABEL: test_vlsseg6_nxv2i32_triscv.vector.tuple_nxv8i8_6t:
1861 ; CHECK:       # %bb.0: # %entry
1862 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1863 ; CHECK-NEXT:    vlsseg6e32.v v7, (a0), a1
1864 ; CHECK-NEXT:    ret
1865 entry:
1866   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1867   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
1868   ret <vscale x 2 x i32> %1
1871 define <vscale x 2 x i32> @test_vlsseg6_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
1872 ; CHECK-LABEL: test_vlsseg6_mask_nxv2i32_triscv.vector.tuple_nxv8i8_6t:
1873 ; CHECK:       # %bb.0: # %entry
1874 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1875 ; CHECK-NEXT:    vlsseg6e32.v v7, (a0), a1, v0.t
1876 ; CHECK-NEXT:    ret
1877 entry:
1878   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
1879   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
1880   ret <vscale x 2 x i32> %1
1883 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1885 define <vscale x 1 x i32> @test_vlsseg7_nxv1i32_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %offset, i64 %vl) {
1886 ; CHECK-LABEL: test_vlsseg7_nxv1i32_triscv.vector.tuple_nxv4i8_7t:
1887 ; CHECK:       # %bb.0: # %entry
1888 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1889 ; CHECK-NEXT:    vlsseg7e32.v v7, (a0), a1
1890 ; CHECK-NEXT:    ret
1891 entry:
1892   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1893   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %0, i32 1)
1894   ret <vscale x 1 x i32> %1
1897 define <vscale x 1 x i32> @test_vlsseg7_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
1898 ; CHECK-LABEL: test_vlsseg7_mask_nxv1i32_triscv.vector.tuple_nxv4i8_7t:
1899 ; CHECK:       # %bb.0: # %entry
1900 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1901 ; CHECK-NEXT:    vlsseg7e32.v v7, (a0), a1, v0.t
1902 ; CHECK-NEXT:    ret
1903 entry:
1904   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
1905   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %0, i32 1)
1906   ret <vscale x 1 x i32> %1
1909 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
1911 define <vscale x 2 x i32> @test_vlsseg7_nxv2i32_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl) {
1912 ; CHECK-LABEL: test_vlsseg7_nxv2i32_triscv.vector.tuple_nxv8i8_7t:
1913 ; CHECK:       # %bb.0: # %entry
1914 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1915 ; CHECK-NEXT:    vlsseg7e32.v v7, (a0), a1
1916 ; CHECK-NEXT:    ret
1917 entry:
1918   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1919   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
1920   ret <vscale x 2 x i32> %1
1923 define <vscale x 2 x i32> @test_vlsseg7_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
1924 ; CHECK-LABEL: test_vlsseg7_mask_nxv2i32_triscv.vector.tuple_nxv8i8_7t:
1925 ; CHECK:       # %bb.0: # %entry
1926 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1927 ; CHECK-NEXT:    vlsseg7e32.v v7, (a0), a1, v0.t
1928 ; CHECK-NEXT:    ret
1929 entry:
1930   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
1931   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
1932   ret <vscale x 2 x i32> %1
1935 declare target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1937 define <vscale x 1 x i32> @test_vlsseg8_nxv1i32_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %offset, i64 %vl) {
1938 ; CHECK-LABEL: test_vlsseg8_nxv1i32_triscv.vector.tuple_nxv4i8_8t:
1939 ; CHECK:       # %bb.0: # %entry
1940 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1941 ; CHECK-NEXT:    vlsseg8e32.v v7, (a0), a1
1942 ; CHECK-NEXT:    ret
1943 entry:
1944   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1945   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %0, i32 1)
1946   ret <vscale x 1 x i32> %1
1949 define <vscale x 1 x i32> @test_vlsseg8_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
1950 ; CHECK-LABEL: test_vlsseg8_mask_nxv1i32_triscv.vector.tuple_nxv4i8_8t:
1951 ; CHECK:       # %bb.0: # %entry
1952 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
1953 ; CHECK-NEXT:    vlsseg8e32.v v7, (a0), a1, v0.t
1954 ; CHECK-NEXT:    ret
1955 entry:
1956   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
1957   %1 = call <vscale x 1 x i32> @llvm.riscv.tuple.extract.nxv1i32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %0, i32 1)
1958   ret <vscale x 1 x i32> %1
1961 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
1963 define <vscale x 2 x i32> @test_vlsseg8_nxv2i32_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl) {
1964 ; CHECK-LABEL: test_vlsseg8_nxv2i32_triscv.vector.tuple_nxv8i8_8t:
1965 ; CHECK:       # %bb.0: # %entry
1966 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1967 ; CHECK-NEXT:    vlsseg8e32.v v7, (a0), a1
1968 ; CHECK-NEXT:    ret
1969 entry:
1970   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
1971   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
1972   ret <vscale x 2 x i32> %1
1975 define <vscale x 2 x i32> @test_vlsseg8_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
1976 ; CHECK-LABEL: test_vlsseg8_mask_nxv2i32_triscv.vector.tuple_nxv8i8_8t:
1977 ; CHECK:       # %bb.0: # %entry
1978 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
1979 ; CHECK-NEXT:    vlsseg8e32.v v7, (a0), a1, v0.t
1980 ; CHECK-NEXT:    ret
1981 entry:
1982   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
1983   %1 = call <vscale x 2 x i32> @llvm.riscv.tuple.extract.nxv2i32.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
1984   ret <vscale x 2 x i32> %1
1987 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
1989 define <vscale x 1 x i64> @test_vlsseg2_nxv1i64_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl) {
1990 ; CHECK-LABEL: test_vlsseg2_nxv1i64_triscv.vector.tuple_nxv8i8_2t:
1991 ; CHECK:       # %bb.0: # %entry
1992 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1993 ; CHECK-NEXT:    vlsseg2e64.v v7, (a0), a1
1994 ; CHECK-NEXT:    ret
1995 entry:
1996   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
1997   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
1998   ret <vscale x 1 x i64> %1
2001 define <vscale x 1 x i64> @test_vlsseg2_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2002 ; CHECK-LABEL: test_vlsseg2_mask_nxv1i64_triscv.vector.tuple_nxv8i8_2t:
2003 ; CHECK:       # %bb.0: # %entry
2004 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2005 ; CHECK-NEXT:    vlsseg2e64.v v7, (a0), a1, v0.t
2006 ; CHECK-NEXT:    ret
2007 entry:
2008   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
2009   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
2010   ret <vscale x 1 x i64> %1
2013 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
2015 define <vscale x 2 x i64> @test_vlsseg2_nxv2i64_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl) {
2016 ; CHECK-LABEL: test_vlsseg2_nxv2i64_triscv.vector.tuple_nxv16i8_2t:
2017 ; CHECK:       # %bb.0: # %entry
2018 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
2019 ; CHECK-NEXT:    vlsseg2e64.v v6, (a0), a1
2020 ; CHECK-NEXT:    ret
2021 entry:
2022   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
2023   %1 = call <vscale x 2 x i64> @llvm.riscv.tuple.extract.nxv2i64.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
2024   ret <vscale x 2 x i64> %1
2027 define <vscale x 2 x i64> @test_vlsseg2_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
2028 ; CHECK-LABEL: test_vlsseg2_mask_nxv2i64_triscv.vector.tuple_nxv16i8_2t:
2029 ; CHECK:       # %bb.0: # %entry
2030 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
2031 ; CHECK-NEXT:    vlsseg2e64.v v6, (a0), a1, v0.t
2032 ; CHECK-NEXT:    ret
2033 entry:
2034   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6)
2035   %1 = call <vscale x 2 x i64> @llvm.riscv.tuple.extract.nxv2i64.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
2036   ret <vscale x 2 x i64> %1
2039 declare target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2), ptr, i64, <vscale x 4 x i1>, i64, i64, i64)
2041 define <vscale x 4 x i64> @test_vlsseg2_nxv4i64_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl) {
2042 ; CHECK-LABEL: test_vlsseg2_nxv4i64_triscv.vector.tuple_nxv32i8_2t:
2043 ; CHECK:       # %bb.0: # %entry
2044 ; CHECK-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
2045 ; CHECK-NEXT:    vlsseg2e64.v v4, (a0), a1
2046 ; CHECK-NEXT:    ret
2047 entry:
2048   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
2049   %1 = call <vscale x 4 x i64> @llvm.riscv.tuple.extract.nxv4i64.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
2050   ret <vscale x 4 x i64> %1
2053 define <vscale x 4 x i64> @test_vlsseg2_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
2054 ; CHECK-LABEL: test_vlsseg2_mask_nxv4i64_triscv.vector.tuple_nxv32i8_2t:
2055 ; CHECK:       # %bb.0: # %entry
2056 ; CHECK-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
2057 ; CHECK-NEXT:    vlsseg2e64.v v4, (a0), a1, v0.t
2058 ; CHECK-NEXT:    ret
2059 entry:
2060   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 6)
2061   %1 = call <vscale x 4 x i64> @llvm.riscv.tuple.extract.nxv4i64.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
2062   ret <vscale x 4 x i64> %1
2065 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
2067 define <vscale x 1 x i64> @test_vlsseg3_nxv1i64_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl) {
2068 ; CHECK-LABEL: test_vlsseg3_nxv1i64_triscv.vector.tuple_nxv8i8_3t:
2069 ; CHECK:       # %bb.0: # %entry
2070 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2071 ; CHECK-NEXT:    vlsseg3e64.v v7, (a0), a1
2072 ; CHECK-NEXT:    ret
2073 entry:
2074   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
2075   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
2076   ret <vscale x 1 x i64> %1
2079 define <vscale x 1 x i64> @test_vlsseg3_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2080 ; CHECK-LABEL: test_vlsseg3_mask_nxv1i64_triscv.vector.tuple_nxv8i8_3t:
2081 ; CHECK:       # %bb.0: # %entry
2082 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2083 ; CHECK-NEXT:    vlsseg3e64.v v7, (a0), a1, v0.t
2084 ; CHECK-NEXT:    ret
2085 entry:
2086   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
2087   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
2088   ret <vscale x 1 x i64> %1
2091 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
2093 define <vscale x 2 x i64> @test_vlsseg3_nxv2i64_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl) {
2094 ; CHECK-LABEL: test_vlsseg3_nxv2i64_triscv.vector.tuple_nxv16i8_3t:
2095 ; CHECK:       # %bb.0: # %entry
2096 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
2097 ; CHECK-NEXT:    vlsseg3e64.v v6, (a0), a1
2098 ; CHECK-NEXT:    ret
2099 entry:
2100   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
2101   %1 = call <vscale x 2 x i64> @llvm.riscv.tuple.extract.nxv2i64.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
2102   ret <vscale x 2 x i64> %1
2105 define <vscale x 2 x i64> @test_vlsseg3_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
2106 ; CHECK-LABEL: test_vlsseg3_mask_nxv2i64_triscv.vector.tuple_nxv16i8_3t:
2107 ; CHECK:       # %bb.0: # %entry
2108 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
2109 ; CHECK-NEXT:    vlsseg3e64.v v6, (a0), a1, v0.t
2110 ; CHECK-NEXT:    ret
2111 entry:
2112   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6)
2113   %1 = call <vscale x 2 x i64> @llvm.riscv.tuple.extract.nxv2i64.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
2114   ret <vscale x 2 x i64> %1
2117 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
2119 define <vscale x 1 x i64> @test_vlsseg4_nxv1i64_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl) {
2120 ; CHECK-LABEL: test_vlsseg4_nxv1i64_triscv.vector.tuple_nxv8i8_4t:
2121 ; CHECK:       # %bb.0: # %entry
2122 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2123 ; CHECK-NEXT:    vlsseg4e64.v v7, (a0), a1
2124 ; CHECK-NEXT:    ret
2125 entry:
2126   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
2127   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
2128   ret <vscale x 1 x i64> %1
2131 define <vscale x 1 x i64> @test_vlsseg4_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2132 ; CHECK-LABEL: test_vlsseg4_mask_nxv1i64_triscv.vector.tuple_nxv8i8_4t:
2133 ; CHECK:       # %bb.0: # %entry
2134 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2135 ; CHECK-NEXT:    vlsseg4e64.v v7, (a0), a1, v0.t
2136 ; CHECK-NEXT:    ret
2137 entry:
2138   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
2139   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
2140   ret <vscale x 1 x i64> %1
2143 declare target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4), ptr, i64, <vscale x 2 x i1>, i64, i64, i64)
2145 define <vscale x 2 x i64> @test_vlsseg4_nxv2i64_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl) {
2146 ; CHECK-LABEL: test_vlsseg4_nxv2i64_triscv.vector.tuple_nxv16i8_4t:
2147 ; CHECK:       # %bb.0: # %entry
2148 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
2149 ; CHECK-NEXT:    vlsseg4e64.v v6, (a0), a1
2150 ; CHECK-NEXT:    ret
2151 entry:
2152   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
2153   %1 = call <vscale x 2 x i64> @llvm.riscv.tuple.extract.nxv2i64.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
2154   ret <vscale x 2 x i64> %1
2157 define <vscale x 2 x i64> @test_vlsseg4_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
2158 ; CHECK-LABEL: test_vlsseg4_mask_nxv2i64_triscv.vector.tuple_nxv16i8_4t:
2159 ; CHECK:       # %bb.0: # %entry
2160 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
2161 ; CHECK-NEXT:    vlsseg4e64.v v6, (a0), a1, v0.t
2162 ; CHECK-NEXT:    ret
2163 entry:
2164   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6)
2165   %1 = call <vscale x 2 x i64> @llvm.riscv.tuple.extract.nxv2i64.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
2166   ret <vscale x 2 x i64> %1
2169 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
2171 define <vscale x 1 x i64> @test_vlsseg5_nxv1i64_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl) {
2172 ; CHECK-LABEL: test_vlsseg5_nxv1i64_triscv.vector.tuple_nxv8i8_5t:
2173 ; CHECK:       # %bb.0: # %entry
2174 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2175 ; CHECK-NEXT:    vlsseg5e64.v v7, (a0), a1
2176 ; CHECK-NEXT:    ret
2177 entry:
2178   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
2179   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
2180   ret <vscale x 1 x i64> %1
2183 define <vscale x 1 x i64> @test_vlsseg5_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2184 ; CHECK-LABEL: test_vlsseg5_mask_nxv1i64_triscv.vector.tuple_nxv8i8_5t:
2185 ; CHECK:       # %bb.0: # %entry
2186 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2187 ; CHECK-NEXT:    vlsseg5e64.v v7, (a0), a1, v0.t
2188 ; CHECK-NEXT:    ret
2189 entry:
2190   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
2191   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
2192   ret <vscale x 1 x i64> %1
2195 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
2197 define <vscale x 1 x i64> @test_vlsseg6_nxv1i64_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl) {
2198 ; CHECK-LABEL: test_vlsseg6_nxv1i64_triscv.vector.tuple_nxv8i8_6t:
2199 ; CHECK:       # %bb.0: # %entry
2200 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2201 ; CHECK-NEXT:    vlsseg6e64.v v7, (a0), a1
2202 ; CHECK-NEXT:    ret
2203 entry:
2204   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
2205   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
2206   ret <vscale x 1 x i64> %1
2209 define <vscale x 1 x i64> @test_vlsseg6_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2210 ; CHECK-LABEL: test_vlsseg6_mask_nxv1i64_triscv.vector.tuple_nxv8i8_6t:
2211 ; CHECK:       # %bb.0: # %entry
2212 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2213 ; CHECK-NEXT:    vlsseg6e64.v v7, (a0), a1, v0.t
2214 ; CHECK-NEXT:    ret
2215 entry:
2216   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
2217   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
2218   ret <vscale x 1 x i64> %1
2221 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
2223 define <vscale x 1 x i64> @test_vlsseg7_nxv1i64_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl) {
2224 ; CHECK-LABEL: test_vlsseg7_nxv1i64_triscv.vector.tuple_nxv8i8_7t:
2225 ; CHECK:       # %bb.0: # %entry
2226 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2227 ; CHECK-NEXT:    vlsseg7e64.v v7, (a0), a1
2228 ; CHECK-NEXT:    ret
2229 entry:
2230   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
2231   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
2232   ret <vscale x 1 x i64> %1
2235 define <vscale x 1 x i64> @test_vlsseg7_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2236 ; CHECK-LABEL: test_vlsseg7_mask_nxv1i64_triscv.vector.tuple_nxv8i8_7t:
2237 ; CHECK:       # %bb.0: # %entry
2238 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2239 ; CHECK-NEXT:    vlsseg7e64.v v7, (a0), a1, v0.t
2240 ; CHECK-NEXT:    ret
2241 entry:
2242   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
2243   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
2244   ret <vscale x 1 x i64> %1
2247 declare target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8), ptr, i64, <vscale x 1 x i1>, i64, i64, i64)
2249 define <vscale x 1 x i64> @test_vlsseg8_nxv1i64_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl) {
2250 ; CHECK-LABEL: test_vlsseg8_nxv1i64_triscv.vector.tuple_nxv8i8_8t:
2251 ; CHECK:       # %bb.0: # %entry
2252 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2253 ; CHECK-NEXT:    vlsseg8e64.v v7, (a0), a1
2254 ; CHECK-NEXT:    ret
2255 entry:
2256   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
2257   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
2258   ret <vscale x 1 x i64> %1
2261 define <vscale x 1 x i64> @test_vlsseg8_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2262 ; CHECK-LABEL: test_vlsseg8_mask_nxv1i64_triscv.vector.tuple_nxv8i8_8t:
2263 ; CHECK:       # %bb.0: # %entry
2264 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
2265 ; CHECK-NEXT:    vlsseg8e64.v v7, (a0), a1, v0.t
2266 ; CHECK-NEXT:    ret
2267 entry:
2268   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
2269   %1 = call <vscale x 1 x i64> @llvm.riscv.tuple.extract.nxv1i64.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
2270   ret <vscale x 1 x i64> %1
2274 define <vscale x 1 x half> @test_vlsseg2_nxv1f16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i64 %offset, i64 %vl) {
2275 ; CHECK-LABEL: test_vlsseg2_nxv1f16_triscv.vector.tuple_nxv2i8_2t:
2276 ; CHECK:       # %bb.0: # %entry
2277 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2278 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1
2279 ; CHECK-NEXT:    ret
2280 entry:
2281   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2282   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %0, i32 1)
2283   ret <vscale x 1 x half> %1
2286 define <vscale x 1 x half> @test_vlsseg2_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2287 ; CHECK-LABEL: test_vlsseg2_mask_nxv1f16_triscv.vector.tuple_nxv2i8_2t:
2288 ; CHECK:       # %bb.0: # %entry
2289 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2290 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1, v0.t
2291 ; CHECK-NEXT:    ret
2292 entry:
2293   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
2294   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %0, i32 1)
2295   ret <vscale x 1 x half> %1
2299 define <vscale x 2 x half> @test_vlsseg2_nxv2f16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %offset, i64 %vl) {
2300 ; CHECK-LABEL: test_vlsseg2_nxv2f16_triscv.vector.tuple_nxv4i8_2t:
2301 ; CHECK:       # %bb.0: # %entry
2302 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2303 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1
2304 ; CHECK-NEXT:    ret
2305 entry:
2306   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2307   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %0, i32 1)
2308   ret <vscale x 2 x half> %1
2311 define <vscale x 2 x half> @test_vlsseg2_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
2312 ; CHECK-LABEL: test_vlsseg2_mask_nxv2f16_triscv.vector.tuple_nxv4i8_2t:
2313 ; CHECK:       # %bb.0: # %entry
2314 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2315 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1, v0.t
2316 ; CHECK-NEXT:    ret
2317 entry:
2318   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
2319   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %0, i32 1)
2320   ret <vscale x 2 x half> %1
2324 define <vscale x 4 x half> @test_vlsseg2_nxv4f16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl) {
2325 ; CHECK-LABEL: test_vlsseg2_nxv4f16_triscv.vector.tuple_nxv8i8_2t:
2326 ; CHECK:       # %bb.0: # %entry
2327 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2328 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1
2329 ; CHECK-NEXT:    ret
2330 entry:
2331   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2332   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
2333   ret <vscale x 4 x half> %1
2336 define <vscale x 4 x half> @test_vlsseg2_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
2337 ; CHECK-LABEL: test_vlsseg2_mask_nxv4f16_triscv.vector.tuple_nxv8i8_2t:
2338 ; CHECK:       # %bb.0: # %entry
2339 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2340 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1, v0.t
2341 ; CHECK-NEXT:    ret
2342 entry:
2343   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
2344   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
2345   ret <vscale x 4 x half> %1
2349 define <vscale x 8 x half> @test_vlsseg2_nxv8f16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl) {
2350 ; CHECK-LABEL: test_vlsseg2_nxv8f16_triscv.vector.tuple_nxv16i8_2t:
2351 ; CHECK:       # %bb.0: # %entry
2352 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
2353 ; CHECK-NEXT:    vlsseg2e16.v v6, (a0), a1
2354 ; CHECK-NEXT:    ret
2355 entry:
2356   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2357   %1 = call <vscale x 8 x half> @llvm.riscv.tuple.extract.nxv8f16.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
2358   ret <vscale x 8 x half> %1
2361 define <vscale x 8 x half> @test_vlsseg2_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
2362 ; CHECK-LABEL: test_vlsseg2_mask_nxv8f16_triscv.vector.tuple_nxv16i8_2t:
2363 ; CHECK:       # %bb.0: # %entry
2364 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
2365 ; CHECK-NEXT:    vlsseg2e16.v v6, (a0), a1, v0.t
2366 ; CHECK-NEXT:    ret
2367 entry:
2368   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)
2369   %1 = call <vscale x 8 x half> @llvm.riscv.tuple.extract.nxv8f16.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
2370   ret <vscale x 8 x half> %1
2374 define <vscale x 16 x half> @test_vlsseg2_nxv16f16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl) {
2375 ; CHECK-LABEL: test_vlsseg2_nxv16f16_triscv.vector.tuple_nxv32i8_2t:
2376 ; CHECK:       # %bb.0: # %entry
2377 ; CHECK-NEXT:    vsetvli zero, a2, e16, m4, ta, ma
2378 ; CHECK-NEXT:    vlsseg2e16.v v4, (a0), a1
2379 ; CHECK-NEXT:    ret
2380 entry:
2381   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2382   %1 = call <vscale x 16 x half> @llvm.riscv.tuple.extract.nxv16f16.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
2383   ret <vscale x 16 x half> %1
2386 define <vscale x 16 x half> @test_vlsseg2_mask_nxv16f16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 16 x i1> %mask) {
2387 ; CHECK-LABEL: test_vlsseg2_mask_nxv16f16_triscv.vector.tuple_nxv32i8_2t:
2388 ; CHECK:       # %bb.0: # %entry
2389 ; CHECK-NEXT:    vsetvli zero, a2, e16, m4, ta, ma
2390 ; CHECK-NEXT:    vlsseg2e16.v v4, (a0), a1, v0.t
2391 ; CHECK-NEXT:    ret
2392 entry:
2393   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4)
2394   %1 = call <vscale x 16 x half> @llvm.riscv.tuple.extract.nxv16f16.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
2395   ret <vscale x 16 x half> %1
2399 define <vscale x 1 x half> @test_vlsseg3_nxv1f16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i64 %offset, i64 %vl) {
2400 ; CHECK-LABEL: test_vlsseg3_nxv1f16_triscv.vector.tuple_nxv2i8_3t:
2401 ; CHECK:       # %bb.0: # %entry
2402 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2403 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1
2404 ; CHECK-NEXT:    ret
2405 entry:
2406   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2407   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %0, i32 1)
2408   ret <vscale x 1 x half> %1
2411 define <vscale x 1 x half> @test_vlsseg3_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2412 ; CHECK-LABEL: test_vlsseg3_mask_nxv1f16_triscv.vector.tuple_nxv2i8_3t:
2413 ; CHECK:       # %bb.0: # %entry
2414 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2415 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1, v0.t
2416 ; CHECK-NEXT:    ret
2417 entry:
2418   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
2419   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %0, i32 1)
2420   ret <vscale x 1 x half> %1
2424 define <vscale x 2 x half> @test_vlsseg3_nxv2f16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %offset, i64 %vl) {
2425 ; CHECK-LABEL: test_vlsseg3_nxv2f16_triscv.vector.tuple_nxv4i8_3t:
2426 ; CHECK:       # %bb.0: # %entry
2427 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2428 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1
2429 ; CHECK-NEXT:    ret
2430 entry:
2431   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2432   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %0, i32 1)
2433   ret <vscale x 2 x half> %1
2436 define <vscale x 2 x half> @test_vlsseg3_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
2437 ; CHECK-LABEL: test_vlsseg3_mask_nxv2f16_triscv.vector.tuple_nxv4i8_3t:
2438 ; CHECK:       # %bb.0: # %entry
2439 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2440 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1, v0.t
2441 ; CHECK-NEXT:    ret
2442 entry:
2443   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
2444   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %0, i32 1)
2445   ret <vscale x 2 x half> %1
2449 define <vscale x 4 x half> @test_vlsseg3_nxv4f16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl) {
2450 ; CHECK-LABEL: test_vlsseg3_nxv4f16_triscv.vector.tuple_nxv8i8_3t:
2451 ; CHECK:       # %bb.0: # %entry
2452 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2453 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1
2454 ; CHECK-NEXT:    ret
2455 entry:
2456   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2457   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
2458   ret <vscale x 4 x half> %1
2461 define <vscale x 4 x half> @test_vlsseg3_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
2462 ; CHECK-LABEL: test_vlsseg3_mask_nxv4f16_triscv.vector.tuple_nxv8i8_3t:
2463 ; CHECK:       # %bb.0: # %entry
2464 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2465 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1, v0.t
2466 ; CHECK-NEXT:    ret
2467 entry:
2468   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
2469   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
2470   ret <vscale x 4 x half> %1
2474 define <vscale x 8 x half> @test_vlsseg3_nxv8f16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl) {
2475 ; CHECK-LABEL: test_vlsseg3_nxv8f16_triscv.vector.tuple_nxv16i8_3t:
2476 ; CHECK:       # %bb.0: # %entry
2477 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
2478 ; CHECK-NEXT:    vlsseg3e16.v v6, (a0), a1
2479 ; CHECK-NEXT:    ret
2480 entry:
2481   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2482   %1 = call <vscale x 8 x half> @llvm.riscv.tuple.extract.nxv8f16.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
2483   ret <vscale x 8 x half> %1
2486 define <vscale x 8 x half> @test_vlsseg3_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
2487 ; CHECK-LABEL: test_vlsseg3_mask_nxv8f16_triscv.vector.tuple_nxv16i8_3t:
2488 ; CHECK:       # %bb.0: # %entry
2489 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
2490 ; CHECK-NEXT:    vlsseg3e16.v v6, (a0), a1, v0.t
2491 ; CHECK-NEXT:    ret
2492 entry:
2493   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)
2494   %1 = call <vscale x 8 x half> @llvm.riscv.tuple.extract.nxv8f16.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
2495   ret <vscale x 8 x half> %1
2499 define <vscale x 1 x half> @test_vlsseg4_nxv1f16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i64 %offset, i64 %vl) {
2500 ; CHECK-LABEL: test_vlsseg4_nxv1f16_triscv.vector.tuple_nxv2i8_4t:
2501 ; CHECK:       # %bb.0: # %entry
2502 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2503 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1
2504 ; CHECK-NEXT:    ret
2505 entry:
2506   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2507   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %0, i32 1)
2508   ret <vscale x 1 x half> %1
2511 define <vscale x 1 x half> @test_vlsseg4_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2512 ; CHECK-LABEL: test_vlsseg4_mask_nxv1f16_triscv.vector.tuple_nxv2i8_4t:
2513 ; CHECK:       # %bb.0: # %entry
2514 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2515 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1, v0.t
2516 ; CHECK-NEXT:    ret
2517 entry:
2518   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
2519   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %0, i32 1)
2520   ret <vscale x 1 x half> %1
2524 define <vscale x 2 x half> @test_vlsseg4_nxv2f16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %offset, i64 %vl) {
2525 ; CHECK-LABEL: test_vlsseg4_nxv2f16_triscv.vector.tuple_nxv4i8_4t:
2526 ; CHECK:       # %bb.0: # %entry
2527 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2528 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1
2529 ; CHECK-NEXT:    ret
2530 entry:
2531   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2532   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %0, i32 1)
2533   ret <vscale x 2 x half> %1
2536 define <vscale x 2 x half> @test_vlsseg4_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
2537 ; CHECK-LABEL: test_vlsseg4_mask_nxv2f16_triscv.vector.tuple_nxv4i8_4t:
2538 ; CHECK:       # %bb.0: # %entry
2539 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2540 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1, v0.t
2541 ; CHECK-NEXT:    ret
2542 entry:
2543   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
2544   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %0, i32 1)
2545   ret <vscale x 2 x half> %1
2549 define <vscale x 4 x half> @test_vlsseg4_nxv4f16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl) {
2550 ; CHECK-LABEL: test_vlsseg4_nxv4f16_triscv.vector.tuple_nxv8i8_4t:
2551 ; CHECK:       # %bb.0: # %entry
2552 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2553 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1
2554 ; CHECK-NEXT:    ret
2555 entry:
2556   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2557   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
2558   ret <vscale x 4 x half> %1
2561 define <vscale x 4 x half> @test_vlsseg4_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
2562 ; CHECK-LABEL: test_vlsseg4_mask_nxv4f16_triscv.vector.tuple_nxv8i8_4t:
2563 ; CHECK:       # %bb.0: # %entry
2564 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2565 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1, v0.t
2566 ; CHECK-NEXT:    ret
2567 entry:
2568   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
2569   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
2570   ret <vscale x 4 x half> %1
2574 define <vscale x 8 x half> @test_vlsseg4_nxv8f16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl) {
2575 ; CHECK-LABEL: test_vlsseg4_nxv8f16_triscv.vector.tuple_nxv16i8_4t:
2576 ; CHECK:       # %bb.0: # %entry
2577 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
2578 ; CHECK-NEXT:    vlsseg4e16.v v6, (a0), a1
2579 ; CHECK-NEXT:    ret
2580 entry:
2581   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2582   %1 = call <vscale x 8 x half> @llvm.riscv.tuple.extract.nxv8f16.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
2583   ret <vscale x 8 x half> %1
2586 define <vscale x 8 x half> @test_vlsseg4_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
2587 ; CHECK-LABEL: test_vlsseg4_mask_nxv8f16_triscv.vector.tuple_nxv16i8_4t:
2588 ; CHECK:       # %bb.0: # %entry
2589 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
2590 ; CHECK-NEXT:    vlsseg4e16.v v6, (a0), a1, v0.t
2591 ; CHECK-NEXT:    ret
2592 entry:
2593   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)
2594   %1 = call <vscale x 8 x half> @llvm.riscv.tuple.extract.nxv8f16.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
2595   ret <vscale x 8 x half> %1
2599 define <vscale x 1 x half> @test_vlsseg5_nxv1f16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i64 %offset, i64 %vl) {
2600 ; CHECK-LABEL: test_vlsseg5_nxv1f16_triscv.vector.tuple_nxv2i8_5t:
2601 ; CHECK:       # %bb.0: # %entry
2602 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2603 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1
2604 ; CHECK-NEXT:    ret
2605 entry:
2606   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2607   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %0, i32 1)
2608   ret <vscale x 1 x half> %1
2611 define <vscale x 1 x half> @test_vlsseg5_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2612 ; CHECK-LABEL: test_vlsseg5_mask_nxv1f16_triscv.vector.tuple_nxv2i8_5t:
2613 ; CHECK:       # %bb.0: # %entry
2614 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2615 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1, v0.t
2616 ; CHECK-NEXT:    ret
2617 entry:
2618   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
2619   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %0, i32 1)
2620   ret <vscale x 1 x half> %1
2624 define <vscale x 2 x half> @test_vlsseg5_nxv2f16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %offset, i64 %vl) {
2625 ; CHECK-LABEL: test_vlsseg5_nxv2f16_triscv.vector.tuple_nxv4i8_5t:
2626 ; CHECK:       # %bb.0: # %entry
2627 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2628 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1
2629 ; CHECK-NEXT:    ret
2630 entry:
2631   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2632   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %0, i32 1)
2633   ret <vscale x 2 x half> %1
2636 define <vscale x 2 x half> @test_vlsseg5_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
2637 ; CHECK-LABEL: test_vlsseg5_mask_nxv2f16_triscv.vector.tuple_nxv4i8_5t:
2638 ; CHECK:       # %bb.0: # %entry
2639 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2640 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1, v0.t
2641 ; CHECK-NEXT:    ret
2642 entry:
2643   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
2644   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %0, i32 1)
2645   ret <vscale x 2 x half> %1
2649 define <vscale x 4 x half> @test_vlsseg5_nxv4f16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl) {
2650 ; CHECK-LABEL: test_vlsseg5_nxv4f16_triscv.vector.tuple_nxv8i8_5t:
2651 ; CHECK:       # %bb.0: # %entry
2652 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2653 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1
2654 ; CHECK-NEXT:    ret
2655 entry:
2656   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2657   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
2658   ret <vscale x 4 x half> %1
2661 define <vscale x 4 x half> @test_vlsseg5_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
2662 ; CHECK-LABEL: test_vlsseg5_mask_nxv4f16_triscv.vector.tuple_nxv8i8_5t:
2663 ; CHECK:       # %bb.0: # %entry
2664 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2665 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1, v0.t
2666 ; CHECK-NEXT:    ret
2667 entry:
2668   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
2669   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
2670   ret <vscale x 4 x half> %1
2674 define <vscale x 1 x half> @test_vlsseg6_nxv1f16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i64 %offset, i64 %vl) {
2675 ; CHECK-LABEL: test_vlsseg6_nxv1f16_triscv.vector.tuple_nxv2i8_6t:
2676 ; CHECK:       # %bb.0: # %entry
2677 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2678 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1
2679 ; CHECK-NEXT:    ret
2680 entry:
2681   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2682   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %0, i32 1)
2683   ret <vscale x 1 x half> %1
2686 define <vscale x 1 x half> @test_vlsseg6_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2687 ; CHECK-LABEL: test_vlsseg6_mask_nxv1f16_triscv.vector.tuple_nxv2i8_6t:
2688 ; CHECK:       # %bb.0: # %entry
2689 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2690 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1, v0.t
2691 ; CHECK-NEXT:    ret
2692 entry:
2693   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
2694   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %0, i32 1)
2695   ret <vscale x 1 x half> %1
2699 define <vscale x 2 x half> @test_vlsseg6_nxv2f16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %offset, i64 %vl) {
2700 ; CHECK-LABEL: test_vlsseg6_nxv2f16_triscv.vector.tuple_nxv4i8_6t:
2701 ; CHECK:       # %bb.0: # %entry
2702 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2703 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1
2704 ; CHECK-NEXT:    ret
2705 entry:
2706   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2707   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %0, i32 1)
2708   ret <vscale x 2 x half> %1
2711 define <vscale x 2 x half> @test_vlsseg6_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
2712 ; CHECK-LABEL: test_vlsseg6_mask_nxv2f16_triscv.vector.tuple_nxv4i8_6t:
2713 ; CHECK:       # %bb.0: # %entry
2714 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2715 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1, v0.t
2716 ; CHECK-NEXT:    ret
2717 entry:
2718   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
2719   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %0, i32 1)
2720   ret <vscale x 2 x half> %1
2724 define <vscale x 4 x half> @test_vlsseg6_nxv4f16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl) {
2725 ; CHECK-LABEL: test_vlsseg6_nxv4f16_triscv.vector.tuple_nxv8i8_6t:
2726 ; CHECK:       # %bb.0: # %entry
2727 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2728 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1
2729 ; CHECK-NEXT:    ret
2730 entry:
2731   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2732   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
2733   ret <vscale x 4 x half> %1
2736 define <vscale x 4 x half> @test_vlsseg6_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
2737 ; CHECK-LABEL: test_vlsseg6_mask_nxv4f16_triscv.vector.tuple_nxv8i8_6t:
2738 ; CHECK:       # %bb.0: # %entry
2739 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2740 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1, v0.t
2741 ; CHECK-NEXT:    ret
2742 entry:
2743   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
2744   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
2745   ret <vscale x 4 x half> %1
2749 define <vscale x 1 x half> @test_vlsseg7_nxv1f16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i64 %offset, i64 %vl) {
2750 ; CHECK-LABEL: test_vlsseg7_nxv1f16_triscv.vector.tuple_nxv2i8_7t:
2751 ; CHECK:       # %bb.0: # %entry
2752 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2753 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1
2754 ; CHECK-NEXT:    ret
2755 entry:
2756   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2757   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %0, i32 1)
2758   ret <vscale x 1 x half> %1
2761 define <vscale x 1 x half> @test_vlsseg7_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2762 ; CHECK-LABEL: test_vlsseg7_mask_nxv1f16_triscv.vector.tuple_nxv2i8_7t:
2763 ; CHECK:       # %bb.0: # %entry
2764 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2765 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1, v0.t
2766 ; CHECK-NEXT:    ret
2767 entry:
2768   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
2769   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %0, i32 1)
2770   ret <vscale x 1 x half> %1
2774 define <vscale x 2 x half> @test_vlsseg7_nxv2f16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %offset, i64 %vl) {
2775 ; CHECK-LABEL: test_vlsseg7_nxv2f16_triscv.vector.tuple_nxv4i8_7t:
2776 ; CHECK:       # %bb.0: # %entry
2777 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2778 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1
2779 ; CHECK-NEXT:    ret
2780 entry:
2781   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2782   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %0, i32 1)
2783   ret <vscale x 2 x half> %1
2786 define <vscale x 2 x half> @test_vlsseg7_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
2787 ; CHECK-LABEL: test_vlsseg7_mask_nxv2f16_triscv.vector.tuple_nxv4i8_7t:
2788 ; CHECK:       # %bb.0: # %entry
2789 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2790 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1, v0.t
2791 ; CHECK-NEXT:    ret
2792 entry:
2793   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
2794   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %0, i32 1)
2795   ret <vscale x 2 x half> %1
2799 define <vscale x 4 x half> @test_vlsseg7_nxv4f16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl) {
2800 ; CHECK-LABEL: test_vlsseg7_nxv4f16_triscv.vector.tuple_nxv8i8_7t:
2801 ; CHECK:       # %bb.0: # %entry
2802 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2803 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1
2804 ; CHECK-NEXT:    ret
2805 entry:
2806   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2807   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
2808   ret <vscale x 4 x half> %1
2811 define <vscale x 4 x half> @test_vlsseg7_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
2812 ; CHECK-LABEL: test_vlsseg7_mask_nxv4f16_triscv.vector.tuple_nxv8i8_7t:
2813 ; CHECK:       # %bb.0: # %entry
2814 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2815 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1, v0.t
2816 ; CHECK-NEXT:    ret
2817 entry:
2818   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
2819   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
2820   ret <vscale x 4 x half> %1
2824 define <vscale x 1 x half> @test_vlsseg8_nxv1f16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i64 %offset, i64 %vl) {
2825 ; CHECK-LABEL: test_vlsseg8_nxv1f16_triscv.vector.tuple_nxv2i8_8t:
2826 ; CHECK:       # %bb.0: # %entry
2827 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2828 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1
2829 ; CHECK-NEXT:    ret
2830 entry:
2831   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2832   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %0, i32 1)
2833   ret <vscale x 1 x half> %1
2836 define <vscale x 1 x half> @test_vlsseg8_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2837 ; CHECK-LABEL: test_vlsseg8_mask_nxv1f16_triscv.vector.tuple_nxv2i8_8t:
2838 ; CHECK:       # %bb.0: # %entry
2839 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
2840 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1, v0.t
2841 ; CHECK-NEXT:    ret
2842 entry:
2843   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
2844   %1 = call <vscale x 1 x half> @llvm.riscv.tuple.extract.nxv1f16.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %0, i32 1)
2845   ret <vscale x 1 x half> %1
2849 define <vscale x 2 x half> @test_vlsseg8_nxv2f16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %offset, i64 %vl) {
2850 ; CHECK-LABEL: test_vlsseg8_nxv2f16_triscv.vector.tuple_nxv4i8_8t:
2851 ; CHECK:       # %bb.0: # %entry
2852 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2853 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1
2854 ; CHECK-NEXT:    ret
2855 entry:
2856   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2857   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %0, i32 1)
2858   ret <vscale x 2 x half> %1
2861 define <vscale x 2 x half> @test_vlsseg8_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
2862 ; CHECK-LABEL: test_vlsseg8_mask_nxv2f16_triscv.vector.tuple_nxv4i8_8t:
2863 ; CHECK:       # %bb.0: # %entry
2864 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
2865 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1, v0.t
2866 ; CHECK-NEXT:    ret
2867 entry:
2868   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
2869   %1 = call <vscale x 2 x half> @llvm.riscv.tuple.extract.nxv2f16.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %0, i32 1)
2870   ret <vscale x 2 x half> %1
2874 define <vscale x 4 x half> @test_vlsseg8_nxv4f16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl) {
2875 ; CHECK-LABEL: test_vlsseg8_nxv4f16_triscv.vector.tuple_nxv8i8_8t:
2876 ; CHECK:       # %bb.0: # %entry
2877 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2878 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1
2879 ; CHECK-NEXT:    ret
2880 entry:
2881   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
2882   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
2883   ret <vscale x 4 x half> %1
2886 define <vscale x 4 x half> @test_vlsseg8_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
2887 ; CHECK-LABEL: test_vlsseg8_mask_nxv4f16_triscv.vector.tuple_nxv8i8_8t:
2888 ; CHECK:       # %bb.0: # %entry
2889 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
2890 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1, v0.t
2891 ; CHECK-NEXT:    ret
2892 entry:
2893   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
2894   %1 = call <vscale x 4 x half> @llvm.riscv.tuple.extract.nxv4f16.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
2895   ret <vscale x 4 x half> %1
2899 define <vscale x 1 x float> @test_vlsseg2_nxv1f32_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %offset, i64 %vl) {
2900 ; CHECK-LABEL: test_vlsseg2_nxv1f32_triscv.vector.tuple_nxv4i8_2t:
2901 ; CHECK:       # %bb.0: # %entry
2902 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
2903 ; CHECK-NEXT:    vlsseg2e32.v v7, (a0), a1
2904 ; CHECK-NEXT:    ret
2905 entry:
2906   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
2907   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %0, i32 1)
2908   ret <vscale x 1 x float> %1
2911 define <vscale x 1 x float> @test_vlsseg2_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
2912 ; CHECK-LABEL: test_vlsseg2_mask_nxv1f32_triscv.vector.tuple_nxv4i8_2t:
2913 ; CHECK:       # %bb.0: # %entry
2914 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
2915 ; CHECK-NEXT:    vlsseg2e32.v v7, (a0), a1, v0.t
2916 ; CHECK-NEXT:    ret
2917 entry:
2918   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
2919   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %0, i32 1)
2920   ret <vscale x 1 x float> %1
2924 define <vscale x 2 x float> @test_vlsseg2_nxv2f32_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl) {
2925 ; CHECK-LABEL: test_vlsseg2_nxv2f32_triscv.vector.tuple_nxv8i8_2t:
2926 ; CHECK:       # %bb.0: # %entry
2927 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
2928 ; CHECK-NEXT:    vlsseg2e32.v v7, (a0), a1
2929 ; CHECK-NEXT:    ret
2930 entry:
2931   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
2932   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
2933   ret <vscale x 2 x float> %1
2936 define <vscale x 2 x float> @test_vlsseg2_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
2937 ; CHECK-LABEL: test_vlsseg2_mask_nxv2f32_triscv.vector.tuple_nxv8i8_2t:
2938 ; CHECK:       # %bb.0: # %entry
2939 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
2940 ; CHECK-NEXT:    vlsseg2e32.v v7, (a0), a1, v0.t
2941 ; CHECK-NEXT:    ret
2942 entry:
2943   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
2944   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
2945   ret <vscale x 2 x float> %1
2949 define <vscale x 4 x float> @test_vlsseg2_nxv4f32_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl) {
2950 ; CHECK-LABEL: test_vlsseg2_nxv4f32_triscv.vector.tuple_nxv16i8_2t:
2951 ; CHECK:       # %bb.0: # %entry
2952 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
2953 ; CHECK-NEXT:    vlsseg2e32.v v6, (a0), a1
2954 ; CHECK-NEXT:    ret
2955 entry:
2956   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
2957   %1 = call <vscale x 4 x float> @llvm.riscv.tuple.extract.nxv4f32.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
2958   ret <vscale x 4 x float> %1
2961 define <vscale x 4 x float> @test_vlsseg2_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
2962 ; CHECK-LABEL: test_vlsseg2_mask_nxv4f32_triscv.vector.tuple_nxv16i8_2t:
2963 ; CHECK:       # %bb.0: # %entry
2964 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
2965 ; CHECK-NEXT:    vlsseg2e32.v v6, (a0), a1, v0.t
2966 ; CHECK-NEXT:    ret
2967 entry:
2968   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5)
2969   %1 = call <vscale x 4 x float> @llvm.riscv.tuple.extract.nxv4f32.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
2970   ret <vscale x 4 x float> %1
2974 define <vscale x 8 x float> @test_vlsseg2_nxv8f32_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl) {
2975 ; CHECK-LABEL: test_vlsseg2_nxv8f32_triscv.vector.tuple_nxv32i8_2t:
2976 ; CHECK:       # %bb.0: # %entry
2977 ; CHECK-NEXT:    vsetvli zero, a2, e32, m4, ta, ma
2978 ; CHECK-NEXT:    vlsseg2e32.v v4, (a0), a1
2979 ; CHECK-NEXT:    ret
2980 entry:
2981   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
2982   %1 = call <vscale x 8 x float> @llvm.riscv.tuple.extract.nxv8f32.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
2983   ret <vscale x 8 x float> %1
2986 define <vscale x 8 x float> @test_vlsseg2_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
2987 ; CHECK-LABEL: test_vlsseg2_mask_nxv8f32_triscv.vector.tuple_nxv32i8_2t:
2988 ; CHECK:       # %bb.0: # %entry
2989 ; CHECK-NEXT:    vsetvli zero, a2, e32, m4, ta, ma
2990 ; CHECK-NEXT:    vlsseg2e32.v v4, (a0), a1, v0.t
2991 ; CHECK-NEXT:    ret
2992 entry:
2993   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 5)
2994   %1 = call <vscale x 8 x float> @llvm.riscv.tuple.extract.nxv8f32.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
2995   ret <vscale x 8 x float> %1
2999 define <vscale x 1 x float> @test_vlsseg3_nxv1f32_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %offset, i64 %vl) {
3000 ; CHECK-LABEL: test_vlsseg3_nxv1f32_triscv.vector.tuple_nxv4i8_3t:
3001 ; CHECK:       # %bb.0: # %entry
3002 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
3003 ; CHECK-NEXT:    vlsseg3e32.v v7, (a0), a1
3004 ; CHECK-NEXT:    ret
3005 entry:
3006   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3007   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %0, i32 1)
3008   ret <vscale x 1 x float> %1
3011 define <vscale x 1 x float> @test_vlsseg3_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3012 ; CHECK-LABEL: test_vlsseg3_mask_nxv1f32_triscv.vector.tuple_nxv4i8_3t:
3013 ; CHECK:       # %bb.0: # %entry
3014 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
3015 ; CHECK-NEXT:    vlsseg3e32.v v7, (a0), a1, v0.t
3016 ; CHECK-NEXT:    ret
3017 entry:
3018   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
3019   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %0, i32 1)
3020   ret <vscale x 1 x float> %1
3024 define <vscale x 2 x float> @test_vlsseg3_nxv2f32_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl) {
3025 ; CHECK-LABEL: test_vlsseg3_nxv2f32_triscv.vector.tuple_nxv8i8_3t:
3026 ; CHECK:       # %bb.0: # %entry
3027 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
3028 ; CHECK-NEXT:    vlsseg3e32.v v7, (a0), a1
3029 ; CHECK-NEXT:    ret
3030 entry:
3031   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3032   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
3033   ret <vscale x 2 x float> %1
3036 define <vscale x 2 x float> @test_vlsseg3_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
3037 ; CHECK-LABEL: test_vlsseg3_mask_nxv2f32_triscv.vector.tuple_nxv8i8_3t:
3038 ; CHECK:       # %bb.0: # %entry
3039 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
3040 ; CHECK-NEXT:    vlsseg3e32.v v7, (a0), a1, v0.t
3041 ; CHECK-NEXT:    ret
3042 entry:
3043   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
3044   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
3045   ret <vscale x 2 x float> %1
3049 define <vscale x 4 x float> @test_vlsseg3_nxv4f32_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl) {
3050 ; CHECK-LABEL: test_vlsseg3_nxv4f32_triscv.vector.tuple_nxv16i8_3t:
3051 ; CHECK:       # %bb.0: # %entry
3052 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
3053 ; CHECK-NEXT:    vlsseg3e32.v v6, (a0), a1
3054 ; CHECK-NEXT:    ret
3055 entry:
3056   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3057   %1 = call <vscale x 4 x float> @llvm.riscv.tuple.extract.nxv4f32.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
3058   ret <vscale x 4 x float> %1
3061 define <vscale x 4 x float> @test_vlsseg3_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
3062 ; CHECK-LABEL: test_vlsseg3_mask_nxv4f32_triscv.vector.tuple_nxv16i8_3t:
3063 ; CHECK:       # %bb.0: # %entry
3064 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
3065 ; CHECK-NEXT:    vlsseg3e32.v v6, (a0), a1, v0.t
3066 ; CHECK-NEXT:    ret
3067 entry:
3068   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5)
3069   %1 = call <vscale x 4 x float> @llvm.riscv.tuple.extract.nxv4f32.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
3070   ret <vscale x 4 x float> %1
3074 define <vscale x 1 x float> @test_vlsseg4_nxv1f32_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %offset, i64 %vl) {
3075 ; CHECK-LABEL: test_vlsseg4_nxv1f32_triscv.vector.tuple_nxv4i8_4t:
3076 ; CHECK:       # %bb.0: # %entry
3077 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
3078 ; CHECK-NEXT:    vlsseg4e32.v v7, (a0), a1
3079 ; CHECK-NEXT:    ret
3080 entry:
3081   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3082   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %0, i32 1)
3083   ret <vscale x 1 x float> %1
3086 define <vscale x 1 x float> @test_vlsseg4_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3087 ; CHECK-LABEL: test_vlsseg4_mask_nxv1f32_triscv.vector.tuple_nxv4i8_4t:
3088 ; CHECK:       # %bb.0: # %entry
3089 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
3090 ; CHECK-NEXT:    vlsseg4e32.v v7, (a0), a1, v0.t
3091 ; CHECK-NEXT:    ret
3092 entry:
3093   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
3094   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %0, i32 1)
3095   ret <vscale x 1 x float> %1
3099 define <vscale x 2 x float> @test_vlsseg4_nxv2f32_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl) {
3100 ; CHECK-LABEL: test_vlsseg4_nxv2f32_triscv.vector.tuple_nxv8i8_4t:
3101 ; CHECK:       # %bb.0: # %entry
3102 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
3103 ; CHECK-NEXT:    vlsseg4e32.v v7, (a0), a1
3104 ; CHECK-NEXT:    ret
3105 entry:
3106   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3107   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
3108   ret <vscale x 2 x float> %1
3111 define <vscale x 2 x float> @test_vlsseg4_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
3112 ; CHECK-LABEL: test_vlsseg4_mask_nxv2f32_triscv.vector.tuple_nxv8i8_4t:
3113 ; CHECK:       # %bb.0: # %entry
3114 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
3115 ; CHECK-NEXT:    vlsseg4e32.v v7, (a0), a1, v0.t
3116 ; CHECK-NEXT:    ret
3117 entry:
3118   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
3119   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
3120   ret <vscale x 2 x float> %1
3124 define <vscale x 4 x float> @test_vlsseg4_nxv4f32_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl) {
3125 ; CHECK-LABEL: test_vlsseg4_nxv4f32_triscv.vector.tuple_nxv16i8_4t:
3126 ; CHECK:       # %bb.0: # %entry
3127 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
3128 ; CHECK-NEXT:    vlsseg4e32.v v6, (a0), a1
3129 ; CHECK-NEXT:    ret
3130 entry:
3131   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3132   %1 = call <vscale x 4 x float> @llvm.riscv.tuple.extract.nxv4f32.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
3133   ret <vscale x 4 x float> %1
3136 define <vscale x 4 x float> @test_vlsseg4_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
3137 ; CHECK-LABEL: test_vlsseg4_mask_nxv4f32_triscv.vector.tuple_nxv16i8_4t:
3138 ; CHECK:       # %bb.0: # %entry
3139 ; CHECK-NEXT:    vsetvli zero, a2, e32, m2, ta, ma
3140 ; CHECK-NEXT:    vlsseg4e32.v v6, (a0), a1, v0.t
3141 ; CHECK-NEXT:    ret
3142 entry:
3143   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 5)
3144   %1 = call <vscale x 4 x float> @llvm.riscv.tuple.extract.nxv4f32.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
3145   ret <vscale x 4 x float> %1
3149 define <vscale x 1 x float> @test_vlsseg5_nxv1f32_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %offset, i64 %vl) {
3150 ; CHECK-LABEL: test_vlsseg5_nxv1f32_triscv.vector.tuple_nxv4i8_5t:
3151 ; CHECK:       # %bb.0: # %entry
3152 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
3153 ; CHECK-NEXT:    vlsseg5e32.v v7, (a0), a1
3154 ; CHECK-NEXT:    ret
3155 entry:
3156   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3157   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %0, i32 1)
3158   ret <vscale x 1 x float> %1
3161 define <vscale x 1 x float> @test_vlsseg5_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3162 ; CHECK-LABEL: test_vlsseg5_mask_nxv1f32_triscv.vector.tuple_nxv4i8_5t:
3163 ; CHECK:       # %bb.0: # %entry
3164 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
3165 ; CHECK-NEXT:    vlsseg5e32.v v7, (a0), a1, v0.t
3166 ; CHECK-NEXT:    ret
3167 entry:
3168   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
3169   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %0, i32 1)
3170   ret <vscale x 1 x float> %1
3174 define <vscale x 2 x float> @test_vlsseg5_nxv2f32_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl) {
3175 ; CHECK-LABEL: test_vlsseg5_nxv2f32_triscv.vector.tuple_nxv8i8_5t:
3176 ; CHECK:       # %bb.0: # %entry
3177 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
3178 ; CHECK-NEXT:    vlsseg5e32.v v7, (a0), a1
3179 ; CHECK-NEXT:    ret
3180 entry:
3181   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3182   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
3183   ret <vscale x 2 x float> %1
3186 define <vscale x 2 x float> @test_vlsseg5_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
3187 ; CHECK-LABEL: test_vlsseg5_mask_nxv2f32_triscv.vector.tuple_nxv8i8_5t:
3188 ; CHECK:       # %bb.0: # %entry
3189 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
3190 ; CHECK-NEXT:    vlsseg5e32.v v7, (a0), a1, v0.t
3191 ; CHECK-NEXT:    ret
3192 entry:
3193   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
3194   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
3195   ret <vscale x 2 x float> %1
3199 define <vscale x 1 x float> @test_vlsseg6_nxv1f32_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %offset, i64 %vl) {
3200 ; CHECK-LABEL: test_vlsseg6_nxv1f32_triscv.vector.tuple_nxv4i8_6t:
3201 ; CHECK:       # %bb.0: # %entry
3202 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
3203 ; CHECK-NEXT:    vlsseg6e32.v v7, (a0), a1
3204 ; CHECK-NEXT:    ret
3205 entry:
3206   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3207   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %0, i32 1)
3208   ret <vscale x 1 x float> %1
3211 define <vscale x 1 x float> @test_vlsseg6_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3212 ; CHECK-LABEL: test_vlsseg6_mask_nxv1f32_triscv.vector.tuple_nxv4i8_6t:
3213 ; CHECK:       # %bb.0: # %entry
3214 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
3215 ; CHECK-NEXT:    vlsseg6e32.v v7, (a0), a1, v0.t
3216 ; CHECK-NEXT:    ret
3217 entry:
3218   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
3219   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %0, i32 1)
3220   ret <vscale x 1 x float> %1
3224 define <vscale x 2 x float> @test_vlsseg6_nxv2f32_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl) {
3225 ; CHECK-LABEL: test_vlsseg6_nxv2f32_triscv.vector.tuple_nxv8i8_6t:
3226 ; CHECK:       # %bb.0: # %entry
3227 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
3228 ; CHECK-NEXT:    vlsseg6e32.v v7, (a0), a1
3229 ; CHECK-NEXT:    ret
3230 entry:
3231   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3232   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
3233   ret <vscale x 2 x float> %1
3236 define <vscale x 2 x float> @test_vlsseg6_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
3237 ; CHECK-LABEL: test_vlsseg6_mask_nxv2f32_triscv.vector.tuple_nxv8i8_6t:
3238 ; CHECK:       # %bb.0: # %entry
3239 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
3240 ; CHECK-NEXT:    vlsseg6e32.v v7, (a0), a1, v0.t
3241 ; CHECK-NEXT:    ret
3242 entry:
3243   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
3244   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
3245   ret <vscale x 2 x float> %1
3249 define <vscale x 1 x float> @test_vlsseg7_nxv1f32_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %offset, i64 %vl) {
3250 ; CHECK-LABEL: test_vlsseg7_nxv1f32_triscv.vector.tuple_nxv4i8_7t:
3251 ; CHECK:       # %bb.0: # %entry
3252 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
3253 ; CHECK-NEXT:    vlsseg7e32.v v7, (a0), a1
3254 ; CHECK-NEXT:    ret
3255 entry:
3256   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3257   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %0, i32 1)
3258   ret <vscale x 1 x float> %1
3261 define <vscale x 1 x float> @test_vlsseg7_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3262 ; CHECK-LABEL: test_vlsseg7_mask_nxv1f32_triscv.vector.tuple_nxv4i8_7t:
3263 ; CHECK:       # %bb.0: # %entry
3264 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
3265 ; CHECK-NEXT:    vlsseg7e32.v v7, (a0), a1, v0.t
3266 ; CHECK-NEXT:    ret
3267 entry:
3268   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
3269   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %0, i32 1)
3270   ret <vscale x 1 x float> %1
3274 define <vscale x 2 x float> @test_vlsseg7_nxv2f32_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl) {
3275 ; CHECK-LABEL: test_vlsseg7_nxv2f32_triscv.vector.tuple_nxv8i8_7t:
3276 ; CHECK:       # %bb.0: # %entry
3277 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
3278 ; CHECK-NEXT:    vlsseg7e32.v v7, (a0), a1
3279 ; CHECK-NEXT:    ret
3280 entry:
3281   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3282   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
3283   ret <vscale x 2 x float> %1
3286 define <vscale x 2 x float> @test_vlsseg7_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
3287 ; CHECK-LABEL: test_vlsseg7_mask_nxv2f32_triscv.vector.tuple_nxv8i8_7t:
3288 ; CHECK:       # %bb.0: # %entry
3289 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
3290 ; CHECK-NEXT:    vlsseg7e32.v v7, (a0), a1, v0.t
3291 ; CHECK-NEXT:    ret
3292 entry:
3293   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
3294   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
3295   ret <vscale x 2 x float> %1
3299 define <vscale x 1 x float> @test_vlsseg8_nxv1f32_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %offset, i64 %vl) {
3300 ; CHECK-LABEL: test_vlsseg8_nxv1f32_triscv.vector.tuple_nxv4i8_8t:
3301 ; CHECK:       # %bb.0: # %entry
3302 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
3303 ; CHECK-NEXT:    vlsseg8e32.v v7, (a0), a1
3304 ; CHECK-NEXT:    ret
3305 entry:
3306   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3307   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %0, i32 1)
3308   ret <vscale x 1 x float> %1
3311 define <vscale x 1 x float> @test_vlsseg8_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3312 ; CHECK-LABEL: test_vlsseg8_mask_nxv1f32_triscv.vector.tuple_nxv4i8_8t:
3313 ; CHECK:       # %bb.0: # %entry
3314 ; CHECK-NEXT:    vsetvli zero, a2, e32, mf2, ta, ma
3315 ; CHECK-NEXT:    vlsseg8e32.v v7, (a0), a1, v0.t
3316 ; CHECK-NEXT:    ret
3317 entry:
3318   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 5)
3319   %1 = call <vscale x 1 x float> @llvm.riscv.tuple.extract.nxv1f32.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %0, i32 1)
3320   ret <vscale x 1 x float> %1
3324 define <vscale x 2 x float> @test_vlsseg8_nxv2f32_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl) {
3325 ; CHECK-LABEL: test_vlsseg8_nxv2f32_triscv.vector.tuple_nxv8i8_8t:
3326 ; CHECK:       # %bb.0: # %entry
3327 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
3328 ; CHECK-NEXT:    vlsseg8e32.v v7, (a0), a1
3329 ; CHECK-NEXT:    ret
3330 entry:
3331   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 5)
3332   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
3333   ret <vscale x 2 x float> %1
3336 define <vscale x 2 x float> @test_vlsseg8_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
3337 ; CHECK-LABEL: test_vlsseg8_mask_nxv2f32_triscv.vector.tuple_nxv8i8_8t:
3338 ; CHECK:       # %bb.0: # %entry
3339 ; CHECK-NEXT:    vsetvli zero, a2, e32, m1, ta, ma
3340 ; CHECK-NEXT:    vlsseg8e32.v v7, (a0), a1, v0.t
3341 ; CHECK-NEXT:    ret
3342 entry:
3343   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 5)
3344   %1 = call <vscale x 2 x float> @llvm.riscv.tuple.extract.nxv2f32.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
3345   ret <vscale x 2 x float> %1
3349 define <vscale x 1 x double> @test_vlsseg2_nxv1f64_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl) {
3350 ; CHECK-LABEL: test_vlsseg2_nxv1f64_triscv.vector.tuple_nxv8i8_2t:
3351 ; CHECK:       # %bb.0: # %entry
3352 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3353 ; CHECK-NEXT:    vlsseg2e64.v v7, (a0), a1
3354 ; CHECK-NEXT:    ret
3355 entry:
3356   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
3357   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
3358   ret <vscale x 1 x double> %1
3361 define <vscale x 1 x double> @test_vlsseg2_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3362 ; CHECK-LABEL: test_vlsseg2_mask_nxv1f64_triscv.vector.tuple_nxv8i8_2t:
3363 ; CHECK:       # %bb.0: # %entry
3364 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3365 ; CHECK-NEXT:    vlsseg2e64.v v7, (a0), a1, v0.t
3366 ; CHECK-NEXT:    ret
3367 entry:
3368   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
3369   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
3370   ret <vscale x 1 x double> %1
3374 define <vscale x 2 x double> @test_vlsseg2_nxv2f64_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl) {
3375 ; CHECK-LABEL: test_vlsseg2_nxv2f64_triscv.vector.tuple_nxv16i8_2t:
3376 ; CHECK:       # %bb.0: # %entry
3377 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
3378 ; CHECK-NEXT:    vlsseg2e64.v v6, (a0), a1
3379 ; CHECK-NEXT:    ret
3380 entry:
3381   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
3382   %1 = call <vscale x 2 x double> @llvm.riscv.tuple.extract.nxv2f64.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
3383   ret <vscale x 2 x double> %1
3386 define <vscale x 2 x double> @test_vlsseg2_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
3387 ; CHECK-LABEL: test_vlsseg2_mask_nxv2f64_triscv.vector.tuple_nxv16i8_2t:
3388 ; CHECK:       # %bb.0: # %entry
3389 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
3390 ; CHECK-NEXT:    vlsseg2e64.v v6, (a0), a1, v0.t
3391 ; CHECK-NEXT:    ret
3392 entry:
3393   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6)
3394   %1 = call <vscale x 2 x double> @llvm.riscv.tuple.extract.nxv2f64.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
3395   ret <vscale x 2 x double> %1
3399 define <vscale x 4 x double> @test_vlsseg2_nxv4f64_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl) {
3400 ; CHECK-LABEL: test_vlsseg2_nxv4f64_triscv.vector.tuple_nxv32i8_2t:
3401 ; CHECK:       # %bb.0: # %entry
3402 ; CHECK-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
3403 ; CHECK-NEXT:    vlsseg2e64.v v4, (a0), a1
3404 ; CHECK-NEXT:    ret
3405 entry:
3406   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
3407   %1 = call <vscale x 4 x double> @llvm.riscv.tuple.extract.nxv4f64.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
3408   ret <vscale x 4 x double> %1
3411 define <vscale x 4 x double> @test_vlsseg2_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
3412 ; CHECK-LABEL: test_vlsseg2_mask_nxv4f64_triscv.vector.tuple_nxv32i8_2t:
3413 ; CHECK:       # %bb.0: # %entry
3414 ; CHECK-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
3415 ; CHECK-NEXT:    vlsseg2e64.v v4, (a0), a1, v0.t
3416 ; CHECK-NEXT:    ret
3417 entry:
3418   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 6)
3419   %1 = call <vscale x 4 x double> @llvm.riscv.tuple.extract.nxv4f64.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
3420   ret <vscale x 4 x double> %1
3424 define <vscale x 1 x double> @test_vlsseg3_nxv1f64_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl) {
3425 ; CHECK-LABEL: test_vlsseg3_nxv1f64_triscv.vector.tuple_nxv8i8_3t:
3426 ; CHECK:       # %bb.0: # %entry
3427 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3428 ; CHECK-NEXT:    vlsseg3e64.v v7, (a0), a1
3429 ; CHECK-NEXT:    ret
3430 entry:
3431   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
3432   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
3433   ret <vscale x 1 x double> %1
3436 define <vscale x 1 x double> @test_vlsseg3_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3437 ; CHECK-LABEL: test_vlsseg3_mask_nxv1f64_triscv.vector.tuple_nxv8i8_3t:
3438 ; CHECK:       # %bb.0: # %entry
3439 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3440 ; CHECK-NEXT:    vlsseg3e64.v v7, (a0), a1, v0.t
3441 ; CHECK-NEXT:    ret
3442 entry:
3443   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
3444   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
3445   ret <vscale x 1 x double> %1
3449 define <vscale x 2 x double> @test_vlsseg3_nxv2f64_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl) {
3450 ; CHECK-LABEL: test_vlsseg3_nxv2f64_triscv.vector.tuple_nxv16i8_3t:
3451 ; CHECK:       # %bb.0: # %entry
3452 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
3453 ; CHECK-NEXT:    vlsseg3e64.v v6, (a0), a1
3454 ; CHECK-NEXT:    ret
3455 entry:
3456   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
3457   %1 = call <vscale x 2 x double> @llvm.riscv.tuple.extract.nxv2f64.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
3458   ret <vscale x 2 x double> %1
3461 define <vscale x 2 x double> @test_vlsseg3_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
3462 ; CHECK-LABEL: test_vlsseg3_mask_nxv2f64_triscv.vector.tuple_nxv16i8_3t:
3463 ; CHECK:       # %bb.0: # %entry
3464 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
3465 ; CHECK-NEXT:    vlsseg3e64.v v6, (a0), a1, v0.t
3466 ; CHECK-NEXT:    ret
3467 entry:
3468   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6)
3469   %1 = call <vscale x 2 x double> @llvm.riscv.tuple.extract.nxv2f64.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
3470   ret <vscale x 2 x double> %1
3474 define <vscale x 1 x double> @test_vlsseg4_nxv1f64_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl) {
3475 ; CHECK-LABEL: test_vlsseg4_nxv1f64_triscv.vector.tuple_nxv8i8_4t:
3476 ; CHECK:       # %bb.0: # %entry
3477 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3478 ; CHECK-NEXT:    vlsseg4e64.v v7, (a0), a1
3479 ; CHECK-NEXT:    ret
3480 entry:
3481   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
3482   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
3483   ret <vscale x 1 x double> %1
3486 define <vscale x 1 x double> @test_vlsseg4_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3487 ; CHECK-LABEL: test_vlsseg4_mask_nxv1f64_triscv.vector.tuple_nxv8i8_4t:
3488 ; CHECK:       # %bb.0: # %entry
3489 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3490 ; CHECK-NEXT:    vlsseg4e64.v v7, (a0), a1, v0.t
3491 ; CHECK-NEXT:    ret
3492 entry:
3493   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
3494   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
3495   ret <vscale x 1 x double> %1
3499 define <vscale x 2 x double> @test_vlsseg4_nxv2f64_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl) {
3500 ; CHECK-LABEL: test_vlsseg4_nxv2f64_triscv.vector.tuple_nxv16i8_4t:
3501 ; CHECK:       # %bb.0: # %entry
3502 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
3503 ; CHECK-NEXT:    vlsseg4e64.v v6, (a0), a1
3504 ; CHECK-NEXT:    ret
3505 entry:
3506   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
3507   %1 = call <vscale x 2 x double> @llvm.riscv.tuple.extract.nxv2f64.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
3508   ret <vscale x 2 x double> %1
3511 define <vscale x 2 x double> @test_vlsseg4_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
3512 ; CHECK-LABEL: test_vlsseg4_mask_nxv2f64_triscv.vector.tuple_nxv16i8_4t:
3513 ; CHECK:       # %bb.0: # %entry
3514 ; CHECK-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
3515 ; CHECK-NEXT:    vlsseg4e64.v v6, (a0), a1, v0.t
3516 ; CHECK-NEXT:    ret
3517 entry:
3518   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 6)
3519   %1 = call <vscale x 2 x double> @llvm.riscv.tuple.extract.nxv2f64.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
3520   ret <vscale x 2 x double> %1
3524 define <vscale x 1 x double> @test_vlsseg5_nxv1f64_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl) {
3525 ; CHECK-LABEL: test_vlsseg5_nxv1f64_triscv.vector.tuple_nxv8i8_5t:
3526 ; CHECK:       # %bb.0: # %entry
3527 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3528 ; CHECK-NEXT:    vlsseg5e64.v v7, (a0), a1
3529 ; CHECK-NEXT:    ret
3530 entry:
3531   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
3532   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
3533   ret <vscale x 1 x double> %1
3536 define <vscale x 1 x double> @test_vlsseg5_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3537 ; CHECK-LABEL: test_vlsseg5_mask_nxv1f64_triscv.vector.tuple_nxv8i8_5t:
3538 ; CHECK:       # %bb.0: # %entry
3539 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3540 ; CHECK-NEXT:    vlsseg5e64.v v7, (a0), a1, v0.t
3541 ; CHECK-NEXT:    ret
3542 entry:
3543   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
3544   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
3545   ret <vscale x 1 x double> %1
3549 define <vscale x 1 x double> @test_vlsseg6_nxv1f64_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl) {
3550 ; CHECK-LABEL: test_vlsseg6_nxv1f64_triscv.vector.tuple_nxv8i8_6t:
3551 ; CHECK:       # %bb.0: # %entry
3552 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3553 ; CHECK-NEXT:    vlsseg6e64.v v7, (a0), a1
3554 ; CHECK-NEXT:    ret
3555 entry:
3556   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
3557   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
3558   ret <vscale x 1 x double> %1
3561 define <vscale x 1 x double> @test_vlsseg6_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3562 ; CHECK-LABEL: test_vlsseg6_mask_nxv1f64_triscv.vector.tuple_nxv8i8_6t:
3563 ; CHECK:       # %bb.0: # %entry
3564 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3565 ; CHECK-NEXT:    vlsseg6e64.v v7, (a0), a1, v0.t
3566 ; CHECK-NEXT:    ret
3567 entry:
3568   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
3569   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
3570   ret <vscale x 1 x double> %1
3574 define <vscale x 1 x double> @test_vlsseg7_nxv1f64_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl) {
3575 ; CHECK-LABEL: test_vlsseg7_nxv1f64_triscv.vector.tuple_nxv8i8_7t:
3576 ; CHECK:       # %bb.0: # %entry
3577 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3578 ; CHECK-NEXT:    vlsseg7e64.v v7, (a0), a1
3579 ; CHECK-NEXT:    ret
3580 entry:
3581   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
3582   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
3583   ret <vscale x 1 x double> %1
3586 define <vscale x 1 x double> @test_vlsseg7_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3587 ; CHECK-LABEL: test_vlsseg7_mask_nxv1f64_triscv.vector.tuple_nxv8i8_7t:
3588 ; CHECK:       # %bb.0: # %entry
3589 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3590 ; CHECK-NEXT:    vlsseg7e64.v v7, (a0), a1, v0.t
3591 ; CHECK-NEXT:    ret
3592 entry:
3593   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
3594   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
3595   ret <vscale x 1 x double> %1
3599 define <vscale x 1 x double> @test_vlsseg8_nxv1f64_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl) {
3600 ; CHECK-LABEL: test_vlsseg8_nxv1f64_triscv.vector.tuple_nxv8i8_8t:
3601 ; CHECK:       # %bb.0: # %entry
3602 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3603 ; CHECK-NEXT:    vlsseg8e64.v v7, (a0), a1
3604 ; CHECK-NEXT:    ret
3605 entry:
3606   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 6)
3607   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
3608   ret <vscale x 1 x double> %1
3611 define <vscale x 1 x double> @test_vlsseg8_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3612 ; CHECK-LABEL: test_vlsseg8_mask_nxv1f64_triscv.vector.tuple_nxv8i8_8t:
3613 ; CHECK:       # %bb.0: # %entry
3614 ; CHECK-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
3615 ; CHECK-NEXT:    vlsseg8e64.v v7, (a0), a1, v0.t
3616 ; CHECK-NEXT:    ret
3617 entry:
3618   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 6)
3619   %1 = call <vscale x 1 x double> @llvm.riscv.tuple.extract.nxv1f64.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
3620   ret <vscale x 1 x double> %1
3624 define <vscale x 1 x bfloat> @test_vlsseg2_nxv1bf16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i64 %offset, i64 %vl) {
3625 ; CHECK-LABEL: test_vlsseg2_nxv1bf16_triscv.vector.tuple_nxv2i8_2t:
3626 ; CHECK:       # %bb.0: # %entry
3627 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
3628 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1
3629 ; CHECK-NEXT:    ret
3630 entry:
3631   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3632   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %0, i32 1)
3633   ret <vscale x 1 x bfloat> %1
3636 define <vscale x 1 x bfloat> @test_vlsseg2_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3637 ; CHECK-LABEL: test_vlsseg2_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_2t:
3638 ; CHECK:       # %bb.0: # %entry
3639 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
3640 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1, v0.t
3641 ; CHECK-NEXT:    ret
3642 entry:
3643   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv2i8_2t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
3644   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_2t(target("riscv.vector.tuple", <vscale x 2 x i8>, 2) %0, i32 1)
3645   ret <vscale x 1 x bfloat> %1
3649 define <vscale x 2 x bfloat> @test_vlsseg2_nxv2bf16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %offset, i64 %vl) {
3650 ; CHECK-LABEL: test_vlsseg2_nxv2bf16_triscv.vector.tuple_nxv4i8_2t:
3651 ; CHECK:       # %bb.0: # %entry
3652 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
3653 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1
3654 ; CHECK-NEXT:    ret
3655 entry:
3656   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3657   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %0, i32 1)
3658   ret <vscale x 2 x bfloat> %1
3661 define <vscale x 2 x bfloat> @test_vlsseg2_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
3662 ; CHECK-LABEL: test_vlsseg2_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_2t:
3663 ; CHECK:       # %bb.0: # %entry
3664 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
3665 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1, v0.t
3666 ; CHECK-NEXT:    ret
3667 entry:
3668   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv4i8_2t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
3669   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_2t(target("riscv.vector.tuple", <vscale x 4 x i8>, 2) %0, i32 1)
3670   ret <vscale x 2 x bfloat> %1
3674 define <vscale x 4 x bfloat> @test_vlsseg2_nxv4bf16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl) {
3675 ; CHECK-LABEL: test_vlsseg2_nxv4bf16_triscv.vector.tuple_nxv8i8_2t:
3676 ; CHECK:       # %bb.0: # %entry
3677 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
3678 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1
3679 ; CHECK-NEXT:    ret
3680 entry:
3681   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3682   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
3683   ret <vscale x 4 x bfloat> %1
3686 define <vscale x 4 x bfloat> @test_vlsseg2_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
3687 ; CHECK-LABEL: test_vlsseg2_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_2t:
3688 ; CHECK:       # %bb.0: # %entry
3689 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
3690 ; CHECK-NEXT:    vlsseg2e16.v v7, (a0), a1, v0.t
3691 ; CHECK-NEXT:    ret
3692 entry:
3693   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv8i8_2t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
3694   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %0, i32 1)
3695   ret <vscale x 4 x bfloat> %1
3699 define <vscale x 8 x bfloat> @test_vlsseg2_nxv8bf16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl) {
3700 ; CHECK-LABEL: test_vlsseg2_nxv8bf16_triscv.vector.tuple_nxv16i8_2t:
3701 ; CHECK:       # %bb.0: # %entry
3702 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
3703 ; CHECK-NEXT:    vlsseg2e16.v v6, (a0), a1
3704 ; CHECK-NEXT:    ret
3705 entry:
3706   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3707   %1 = call <vscale x 8 x bfloat> @llvm.riscv.tuple.extract.nxv8bf16.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
3708   ret <vscale x 8 x bfloat> %1
3711 define <vscale x 8 x bfloat> @test_vlsseg2_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
3712 ; CHECK-LABEL: test_vlsseg2_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_2t:
3713 ; CHECK:       # %bb.0: # %entry
3714 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
3715 ; CHECK-NEXT:    vlsseg2e16.v v6, (a0), a1, v0.t
3716 ; CHECK-NEXT:    ret
3717 entry:
3718   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv16i8_2t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)
3719   %1 = call <vscale x 8 x bfloat> @llvm.riscv.tuple.extract.nxv8bf16.triscv.vector.tuple_nxv16i8_2t(target("riscv.vector.tuple", <vscale x 16 x i8>, 2) %0, i32 1)
3720   ret <vscale x 8 x bfloat> %1
3724 define <vscale x 16 x bfloat> @test_vlsseg2_nxv16bf16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl) {
3725 ; CHECK-LABEL: test_vlsseg2_nxv16bf16_triscv.vector.tuple_nxv32i8_2t:
3726 ; CHECK:       # %bb.0: # %entry
3727 ; CHECK-NEXT:    vsetvli zero, a2, e16, m4, ta, ma
3728 ; CHECK-NEXT:    vlsseg2e16.v v4, (a0), a1
3729 ; CHECK-NEXT:    ret
3730 entry:
3731   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3732   %1 = call <vscale x 16 x bfloat> @llvm.riscv.tuple.extract.nxv16bf16.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
3733   ret <vscale x 16 x bfloat> %1
3736 define <vscale x 16 x bfloat> @test_vlsseg2_mask_nxv16bf16_triscv.vector.tuple_nxv32i8_2t(ptr %base, i64 %offset, i64 %vl, <vscale x 16 x i1> %mask) {
3737 ; CHECK-LABEL: test_vlsseg2_mask_nxv16bf16_triscv.vector.tuple_nxv32i8_2t:
3738 ; CHECK:       # %bb.0: # %entry
3739 ; CHECK-NEXT:    vsetvli zero, a2, e16, m4, ta, ma
3740 ; CHECK-NEXT:    vlsseg2e16.v v4, (a0), a1, v0.t
3741 ; CHECK-NEXT:    ret
3742 entry:
3743   %0 = tail call target("riscv.vector.tuple", <vscale x 32 x i8>, 2) @llvm.riscv.vlsseg2.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr %base, i64 %offset, <vscale x 16 x i1> %mask, i64 %vl, i64 1, i64 4)
3744   %1 = call <vscale x 16 x bfloat> @llvm.riscv.tuple.extract.nxv16bf16.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %0, i32 1)
3745   ret <vscale x 16 x bfloat> %1
3749 define <vscale x 1 x bfloat> @test_vlsseg3_nxv1bf16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i64 %offset, i64 %vl) {
3750 ; CHECK-LABEL: test_vlsseg3_nxv1bf16_triscv.vector.tuple_nxv2i8_3t:
3751 ; CHECK:       # %bb.0: # %entry
3752 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
3753 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1
3754 ; CHECK-NEXT:    ret
3755 entry:
3756   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3757   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %0, i32 1)
3758   ret <vscale x 1 x bfloat> %1
3761 define <vscale x 1 x bfloat> @test_vlsseg3_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3762 ; CHECK-LABEL: test_vlsseg3_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_3t:
3763 ; CHECK:       # %bb.0: # %entry
3764 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
3765 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1, v0.t
3766 ; CHECK-NEXT:    ret
3767 entry:
3768   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv2i8_3t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
3769   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_3t(target("riscv.vector.tuple", <vscale x 2 x i8>, 3) %0, i32 1)
3770   ret <vscale x 1 x bfloat> %1
3774 define <vscale x 2 x bfloat> @test_vlsseg3_nxv2bf16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %offset, i64 %vl) {
3775 ; CHECK-LABEL: test_vlsseg3_nxv2bf16_triscv.vector.tuple_nxv4i8_3t:
3776 ; CHECK:       # %bb.0: # %entry
3777 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
3778 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1
3779 ; CHECK-NEXT:    ret
3780 entry:
3781   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3782   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %0, i32 1)
3783   ret <vscale x 2 x bfloat> %1
3786 define <vscale x 2 x bfloat> @test_vlsseg3_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
3787 ; CHECK-LABEL: test_vlsseg3_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_3t:
3788 ; CHECK:       # %bb.0: # %entry
3789 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
3790 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1, v0.t
3791 ; CHECK-NEXT:    ret
3792 entry:
3793   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv4i8_3t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
3794   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_3t(target("riscv.vector.tuple", <vscale x 4 x i8>, 3) %0, i32 1)
3795   ret <vscale x 2 x bfloat> %1
3799 define <vscale x 4 x bfloat> @test_vlsseg3_nxv4bf16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl) {
3800 ; CHECK-LABEL: test_vlsseg3_nxv4bf16_triscv.vector.tuple_nxv8i8_3t:
3801 ; CHECK:       # %bb.0: # %entry
3802 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
3803 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1
3804 ; CHECK-NEXT:    ret
3805 entry:
3806   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3807   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
3808   ret <vscale x 4 x bfloat> %1
3811 define <vscale x 4 x bfloat> @test_vlsseg3_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
3812 ; CHECK-LABEL: test_vlsseg3_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_3t:
3813 ; CHECK:       # %bb.0: # %entry
3814 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
3815 ; CHECK-NEXT:    vlsseg3e16.v v7, (a0), a1, v0.t
3816 ; CHECK-NEXT:    ret
3817 entry:
3818   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv8i8_3t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
3819   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_3t(target("riscv.vector.tuple", <vscale x 8 x i8>, 3) %0, i32 1)
3820   ret <vscale x 4 x bfloat> %1
3824 define <vscale x 8 x bfloat> @test_vlsseg3_nxv8bf16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl) {
3825 ; CHECK-LABEL: test_vlsseg3_nxv8bf16_triscv.vector.tuple_nxv16i8_3t:
3826 ; CHECK:       # %bb.0: # %entry
3827 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
3828 ; CHECK-NEXT:    vlsseg3e16.v v6, (a0), a1
3829 ; CHECK-NEXT:    ret
3830 entry:
3831   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3832   %1 = call <vscale x 8 x bfloat> @llvm.riscv.tuple.extract.nxv8bf16.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
3833   ret <vscale x 8 x bfloat> %1
3836 define <vscale x 8 x bfloat> @test_vlsseg3_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
3837 ; CHECK-LABEL: test_vlsseg3_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_3t:
3838 ; CHECK:       # %bb.0: # %entry
3839 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
3840 ; CHECK-NEXT:    vlsseg3e16.v v6, (a0), a1, v0.t
3841 ; CHECK-NEXT:    ret
3842 entry:
3843   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 3) @llvm.riscv.vlsseg3.mask.triscv.vector.tuple_nxv16i8_3t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)
3844   %1 = call <vscale x 8 x bfloat> @llvm.riscv.tuple.extract.nxv8bf16.triscv.vector.tuple_nxv16i8_3t(target("riscv.vector.tuple", <vscale x 16 x i8>, 3) %0, i32 1)
3845   ret <vscale x 8 x bfloat> %1
3849 define <vscale x 1 x bfloat> @test_vlsseg4_nxv1bf16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i64 %offset, i64 %vl) {
3850 ; CHECK-LABEL: test_vlsseg4_nxv1bf16_triscv.vector.tuple_nxv2i8_4t:
3851 ; CHECK:       # %bb.0: # %entry
3852 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
3853 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1
3854 ; CHECK-NEXT:    ret
3855 entry:
3856   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3857   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %0, i32 1)
3858   ret <vscale x 1 x bfloat> %1
3861 define <vscale x 1 x bfloat> @test_vlsseg4_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3862 ; CHECK-LABEL: test_vlsseg4_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_4t:
3863 ; CHECK:       # %bb.0: # %entry
3864 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
3865 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1, v0.t
3866 ; CHECK-NEXT:    ret
3867 entry:
3868   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv2i8_4t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
3869   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_4t(target("riscv.vector.tuple", <vscale x 2 x i8>, 4) %0, i32 1)
3870   ret <vscale x 1 x bfloat> %1
3874 define <vscale x 2 x bfloat> @test_vlsseg4_nxv2bf16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %offset, i64 %vl) {
3875 ; CHECK-LABEL: test_vlsseg4_nxv2bf16_triscv.vector.tuple_nxv4i8_4t:
3876 ; CHECK:       # %bb.0: # %entry
3877 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
3878 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1
3879 ; CHECK-NEXT:    ret
3880 entry:
3881   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3882   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %0, i32 1)
3883   ret <vscale x 2 x bfloat> %1
3886 define <vscale x 2 x bfloat> @test_vlsseg4_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
3887 ; CHECK-LABEL: test_vlsseg4_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_4t:
3888 ; CHECK:       # %bb.0: # %entry
3889 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
3890 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1, v0.t
3891 ; CHECK-NEXT:    ret
3892 entry:
3893   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv4i8_4t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
3894   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_4t(target("riscv.vector.tuple", <vscale x 4 x i8>, 4) %0, i32 1)
3895   ret <vscale x 2 x bfloat> %1
3899 define <vscale x 4 x bfloat> @test_vlsseg4_nxv4bf16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl) {
3900 ; CHECK-LABEL: test_vlsseg4_nxv4bf16_triscv.vector.tuple_nxv8i8_4t:
3901 ; CHECK:       # %bb.0: # %entry
3902 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
3903 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1
3904 ; CHECK-NEXT:    ret
3905 entry:
3906   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3907   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
3908   ret <vscale x 4 x bfloat> %1
3911 define <vscale x 4 x bfloat> @test_vlsseg4_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
3912 ; CHECK-LABEL: test_vlsseg4_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_4t:
3913 ; CHECK:       # %bb.0: # %entry
3914 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
3915 ; CHECK-NEXT:    vlsseg4e16.v v7, (a0), a1, v0.t
3916 ; CHECK-NEXT:    ret
3917 entry:
3918   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv8i8_4t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
3919   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_4t(target("riscv.vector.tuple", <vscale x 8 x i8>, 4) %0, i32 1)
3920   ret <vscale x 4 x bfloat> %1
3924 define <vscale x 8 x bfloat> @test_vlsseg4_nxv8bf16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl) {
3925 ; CHECK-LABEL: test_vlsseg4_nxv8bf16_triscv.vector.tuple_nxv16i8_4t:
3926 ; CHECK:       # %bb.0: # %entry
3927 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
3928 ; CHECK-NEXT:    vlsseg4e16.v v6, (a0), a1
3929 ; CHECK-NEXT:    ret
3930 entry:
3931   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3932   %1 = call <vscale x 8 x bfloat> @llvm.riscv.tuple.extract.nxv8bf16.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
3933   ret <vscale x 8 x bfloat> %1
3936 define <vscale x 8 x bfloat> @test_vlsseg4_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t(ptr %base, i64 %offset, i64 %vl, <vscale x 8 x i1> %mask) {
3937 ; CHECK-LABEL: test_vlsseg4_mask_nxv8bf16_triscv.vector.tuple_nxv16i8_4t:
3938 ; CHECK:       # %bb.0: # %entry
3939 ; CHECK-NEXT:    vsetvli zero, a2, e16, m2, ta, ma
3940 ; CHECK-NEXT:    vlsseg4e16.v v6, (a0), a1, v0.t
3941 ; CHECK-NEXT:    ret
3942 entry:
3943   %0 = tail call target("riscv.vector.tuple", <vscale x 16 x i8>, 4) @llvm.riscv.vlsseg4.mask.triscv.vector.tuple_nxv16i8_4t.nxv8i1(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) undef, ptr %base, i64 %offset, <vscale x 8 x i1> %mask, i64 %vl, i64 1, i64 4)
3944   %1 = call <vscale x 8 x bfloat> @llvm.riscv.tuple.extract.nxv8bf16.triscv.vector.tuple_nxv16i8_4t(target("riscv.vector.tuple", <vscale x 16 x i8>, 4) %0, i32 1)
3945   ret <vscale x 8 x bfloat> %1
3949 define <vscale x 1 x bfloat> @test_vlsseg5_nxv1bf16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i64 %offset, i64 %vl) {
3950 ; CHECK-LABEL: test_vlsseg5_nxv1bf16_triscv.vector.tuple_nxv2i8_5t:
3951 ; CHECK:       # %bb.0: # %entry
3952 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
3953 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1
3954 ; CHECK-NEXT:    ret
3955 entry:
3956   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3957   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %0, i32 1)
3958   ret <vscale x 1 x bfloat> %1
3961 define <vscale x 1 x bfloat> @test_vlsseg5_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
3962 ; CHECK-LABEL: test_vlsseg5_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_5t:
3963 ; CHECK:       # %bb.0: # %entry
3964 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
3965 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1, v0.t
3966 ; CHECK-NEXT:    ret
3967 entry:
3968   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv2i8_5t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
3969   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_5t(target("riscv.vector.tuple", <vscale x 2 x i8>, 5) %0, i32 1)
3970   ret <vscale x 1 x bfloat> %1
3974 define <vscale x 2 x bfloat> @test_vlsseg5_nxv2bf16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %offset, i64 %vl) {
3975 ; CHECK-LABEL: test_vlsseg5_nxv2bf16_triscv.vector.tuple_nxv4i8_5t:
3976 ; CHECK:       # %bb.0: # %entry
3977 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
3978 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1
3979 ; CHECK-NEXT:    ret
3980 entry:
3981   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
3982   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %0, i32 1)
3983   ret <vscale x 2 x bfloat> %1
3986 define <vscale x 2 x bfloat> @test_vlsseg5_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
3987 ; CHECK-LABEL: test_vlsseg5_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_5t:
3988 ; CHECK:       # %bb.0: # %entry
3989 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
3990 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1, v0.t
3991 ; CHECK-NEXT:    ret
3992 entry:
3993   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv4i8_5t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
3994   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_5t(target("riscv.vector.tuple", <vscale x 4 x i8>, 5) %0, i32 1)
3995   ret <vscale x 2 x bfloat> %1
3999 define <vscale x 4 x bfloat> @test_vlsseg5_nxv4bf16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl) {
4000 ; CHECK-LABEL: test_vlsseg5_nxv4bf16_triscv.vector.tuple_nxv8i8_5t:
4001 ; CHECK:       # %bb.0: # %entry
4002 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
4003 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1
4004 ; CHECK-NEXT:    ret
4005 entry:
4006   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
4007   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
4008   ret <vscale x 4 x bfloat> %1
4011 define <vscale x 4 x bfloat> @test_vlsseg5_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
4012 ; CHECK-LABEL: test_vlsseg5_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_5t:
4013 ; CHECK:       # %bb.0: # %entry
4014 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
4015 ; CHECK-NEXT:    vlsseg5e16.v v7, (a0), a1, v0.t
4016 ; CHECK-NEXT:    ret
4017 entry:
4018   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 5) @llvm.riscv.vlsseg5.mask.triscv.vector.tuple_nxv8i8_5t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
4019   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_5t(target("riscv.vector.tuple", <vscale x 8 x i8>, 5) %0, i32 1)
4020   ret <vscale x 4 x bfloat> %1
4024 define <vscale x 1 x bfloat> @test_vlsseg6_nxv1bf16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i64 %offset, i64 %vl) {
4025 ; CHECK-LABEL: test_vlsseg6_nxv1bf16_triscv.vector.tuple_nxv2i8_6t:
4026 ; CHECK:       # %bb.0: # %entry
4027 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
4028 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1
4029 ; CHECK-NEXT:    ret
4030 entry:
4031   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
4032   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %0, i32 1)
4033   ret <vscale x 1 x bfloat> %1
4036 define <vscale x 1 x bfloat> @test_vlsseg6_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
4037 ; CHECK-LABEL: test_vlsseg6_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_6t:
4038 ; CHECK:       # %bb.0: # %entry
4039 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
4040 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1, v0.t
4041 ; CHECK-NEXT:    ret
4042 entry:
4043   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv2i8_6t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
4044   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_6t(target("riscv.vector.tuple", <vscale x 2 x i8>, 6) %0, i32 1)
4045   ret <vscale x 1 x bfloat> %1
4049 define <vscale x 2 x bfloat> @test_vlsseg6_nxv2bf16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %offset, i64 %vl) {
4050 ; CHECK-LABEL: test_vlsseg6_nxv2bf16_triscv.vector.tuple_nxv4i8_6t:
4051 ; CHECK:       # %bb.0: # %entry
4052 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
4053 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1
4054 ; CHECK-NEXT:    ret
4055 entry:
4056   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
4057   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %0, i32 1)
4058   ret <vscale x 2 x bfloat> %1
4061 define <vscale x 2 x bfloat> @test_vlsseg6_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
4062 ; CHECK-LABEL: test_vlsseg6_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_6t:
4063 ; CHECK:       # %bb.0: # %entry
4064 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
4065 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1, v0.t
4066 ; CHECK-NEXT:    ret
4067 entry:
4068   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv4i8_6t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
4069   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_6t(target("riscv.vector.tuple", <vscale x 4 x i8>, 6) %0, i32 1)
4070   ret <vscale x 2 x bfloat> %1
4074 define <vscale x 4 x bfloat> @test_vlsseg6_nxv4bf16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl) {
4075 ; CHECK-LABEL: test_vlsseg6_nxv4bf16_triscv.vector.tuple_nxv8i8_6t:
4076 ; CHECK:       # %bb.0: # %entry
4077 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
4078 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1
4079 ; CHECK-NEXT:    ret
4080 entry:
4081   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
4082   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
4083   ret <vscale x 4 x bfloat> %1
4086 define <vscale x 4 x bfloat> @test_vlsseg6_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
4087 ; CHECK-LABEL: test_vlsseg6_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_6t:
4088 ; CHECK:       # %bb.0: # %entry
4089 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
4090 ; CHECK-NEXT:    vlsseg6e16.v v7, (a0), a1, v0.t
4091 ; CHECK-NEXT:    ret
4092 entry:
4093   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 6) @llvm.riscv.vlsseg6.mask.triscv.vector.tuple_nxv8i8_6t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
4094   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_6t(target("riscv.vector.tuple", <vscale x 8 x i8>, 6) %0, i32 1)
4095   ret <vscale x 4 x bfloat> %1
4099 define <vscale x 1 x bfloat> @test_vlsseg7_nxv1bf16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i64 %offset, i64 %vl) {
4100 ; CHECK-LABEL: test_vlsseg7_nxv1bf16_triscv.vector.tuple_nxv2i8_7t:
4101 ; CHECK:       # %bb.0: # %entry
4102 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
4103 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1
4104 ; CHECK-NEXT:    ret
4105 entry:
4106   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
4107   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %0, i32 1)
4108   ret <vscale x 1 x bfloat> %1
4111 define <vscale x 1 x bfloat> @test_vlsseg7_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
4112 ; CHECK-LABEL: test_vlsseg7_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_7t:
4113 ; CHECK:       # %bb.0: # %entry
4114 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
4115 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1, v0.t
4116 ; CHECK-NEXT:    ret
4117 entry:
4118   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv2i8_7t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
4119   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_7t(target("riscv.vector.tuple", <vscale x 2 x i8>, 7) %0, i32 1)
4120   ret <vscale x 1 x bfloat> %1
4124 define <vscale x 2 x bfloat> @test_vlsseg7_nxv2bf16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %offset, i64 %vl) {
4125 ; CHECK-LABEL: test_vlsseg7_nxv2bf16_triscv.vector.tuple_nxv4i8_7t:
4126 ; CHECK:       # %bb.0: # %entry
4127 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
4128 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1
4129 ; CHECK-NEXT:    ret
4130 entry:
4131   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
4132   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %0, i32 1)
4133   ret <vscale x 2 x bfloat> %1
4136 define <vscale x 2 x bfloat> @test_vlsseg7_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
4137 ; CHECK-LABEL: test_vlsseg7_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_7t:
4138 ; CHECK:       # %bb.0: # %entry
4139 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
4140 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1, v0.t
4141 ; CHECK-NEXT:    ret
4142 entry:
4143   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv4i8_7t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
4144   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_7t(target("riscv.vector.tuple", <vscale x 4 x i8>, 7) %0, i32 1)
4145   ret <vscale x 2 x bfloat> %1
4149 define <vscale x 4 x bfloat> @test_vlsseg7_nxv4bf16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl) {
4150 ; CHECK-LABEL: test_vlsseg7_nxv4bf16_triscv.vector.tuple_nxv8i8_7t:
4151 ; CHECK:       # %bb.0: # %entry
4152 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
4153 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1
4154 ; CHECK-NEXT:    ret
4155 entry:
4156   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
4157   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
4158   ret <vscale x 4 x bfloat> %1
4161 define <vscale x 4 x bfloat> @test_vlsseg7_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
4162 ; CHECK-LABEL: test_vlsseg7_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_7t:
4163 ; CHECK:       # %bb.0: # %entry
4164 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
4165 ; CHECK-NEXT:    vlsseg7e16.v v7, (a0), a1, v0.t
4166 ; CHECK-NEXT:    ret
4167 entry:
4168   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 7) @llvm.riscv.vlsseg7.mask.triscv.vector.tuple_nxv8i8_7t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
4169   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_7t(target("riscv.vector.tuple", <vscale x 8 x i8>, 7) %0, i32 1)
4170   ret <vscale x 4 x bfloat> %1
4174 define <vscale x 1 x bfloat> @test_vlsseg8_nxv1bf16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i64 %offset, i64 %vl) {
4175 ; CHECK-LABEL: test_vlsseg8_nxv1bf16_triscv.vector.tuple_nxv2i8_8t:
4176 ; CHECK:       # %bb.0: # %entry
4177 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
4178 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1
4179 ; CHECK-NEXT:    ret
4180 entry:
4181   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
4182   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %0, i32 1)
4183   ret <vscale x 1 x bfloat> %1
4186 define <vscale x 1 x bfloat> @test_vlsseg8_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 1 x i1> %mask) {
4187 ; CHECK-LABEL: test_vlsseg8_mask_nxv1bf16_triscv.vector.tuple_nxv2i8_8t:
4188 ; CHECK:       # %bb.0: # %entry
4189 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf4, ta, ma
4190 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1, v0.t
4191 ; CHECK-NEXT:    ret
4192 entry:
4193   %0 = tail call target("riscv.vector.tuple", <vscale x 2 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv2i8_8t.nxv1i1(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 1 x i1> %mask, i64 %vl, i64 1, i64 4)
4194   %1 = call <vscale x 1 x bfloat> @llvm.riscv.tuple.extract.nxv1bf16.triscv.vector.tuple_nxv2i8_8t(target("riscv.vector.tuple", <vscale x 2 x i8>, 8) %0, i32 1)
4195   ret <vscale x 1 x bfloat> %1
4199 define <vscale x 2 x bfloat> @test_vlsseg8_nxv2bf16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %offset, i64 %vl) {
4200 ; CHECK-LABEL: test_vlsseg8_nxv2bf16_triscv.vector.tuple_nxv4i8_8t:
4201 ; CHECK:       # %bb.0: # %entry
4202 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
4203 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1
4204 ; CHECK-NEXT:    ret
4205 entry:
4206   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
4207   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %0, i32 1)
4208   ret <vscale x 2 x bfloat> %1
4211 define <vscale x 2 x bfloat> @test_vlsseg8_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 2 x i1> %mask) {
4212 ; CHECK-LABEL: test_vlsseg8_mask_nxv2bf16_triscv.vector.tuple_nxv4i8_8t:
4213 ; CHECK:       # %bb.0: # %entry
4214 ; CHECK-NEXT:    vsetvli zero, a2, e16, mf2, ta, ma
4215 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1, v0.t
4216 ; CHECK-NEXT:    ret
4217 entry:
4218   %0 = tail call target("riscv.vector.tuple", <vscale x 4 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv4i8_8t.nxv2i1(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 2 x i1> %mask, i64 %vl, i64 1, i64 4)
4219   %1 = call <vscale x 2 x bfloat> @llvm.riscv.tuple.extract.nxv2bf16.triscv.vector.tuple_nxv4i8_8t(target("riscv.vector.tuple", <vscale x 4 x i8>, 8) %0, i32 1)
4220   ret <vscale x 2 x bfloat> %1
4224 define <vscale x 4 x bfloat> @test_vlsseg8_nxv4bf16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl) {
4225 ; CHECK-LABEL: test_vlsseg8_nxv4bf16_triscv.vector.tuple_nxv8i8_8t:
4226 ; CHECK:       # %bb.0: # %entry
4227 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
4228 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1
4229 ; CHECK-NEXT:    ret
4230 entry:
4231   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, i64 %vl, i64 4)
4232   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
4233   ret <vscale x 4 x bfloat> %1
4236 define <vscale x 4 x bfloat> @test_vlsseg8_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t(ptr %base, i64 %offset, i64 %vl, <vscale x 4 x i1> %mask) {
4237 ; CHECK-LABEL: test_vlsseg8_mask_nxv4bf16_triscv.vector.tuple_nxv8i8_8t:
4238 ; CHECK:       # %bb.0: # %entry
4239 ; CHECK-NEXT:    vsetvli zero, a2, e16, m1, ta, ma
4240 ; CHECK-NEXT:    vlsseg8e16.v v7, (a0), a1, v0.t
4241 ; CHECK-NEXT:    ret
4242 entry:
4243   %0 = tail call target("riscv.vector.tuple", <vscale x 8 x i8>, 8) @llvm.riscv.vlsseg8.mask.triscv.vector.tuple_nxv8i8_8t.nxv4i1(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) undef, ptr %base, i64 %offset, <vscale x 4 x i1> %mask, i64 %vl, i64 1, i64 4)
4244   %1 = call <vscale x 4 x bfloat> @llvm.riscv.tuple.extract.nxv4bf16.triscv.vector.tuple_nxv8i8_8t(target("riscv.vector.tuple", <vscale x 8 x i8>, 8) %0, i32 1)
4245   ret <vscale x 4 x bfloat> %1